2012-01-01: 00:00:34 Big Ben is late 00:00:39 by a few seconds 00:00:46 either that, or ja.net is early 00:00:53 but I trust it more than I trust a mechanical clock 00:00:57 HAPPY 2011.9999999999999, EVERYBODY!!!!!!!!!!!!!!!!!!!!!!! 00:01:06 elliott is even later 00:01:13 it's 12:01 already 00:01:23 HAPPY 2011.9999999999999[10], EVERYBODY!!!!!!!!!!!!!!!!!!!!!!! 00:01:31 the [] signifies a single digit 00:01:41 you could just use A? 00:01:54 happy new year in UK 00:02:34 fST? 00:02:39 ? 00:02:44 -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 200C, like they say in "200%X" terms. 00:02:57 I think all the freenode staff are drunk today. 00:02:57 wut 00:03:01 elliott, fST 00:03:01 lol 00:03:04 freenode Standard Time? 00:03:04 All these messages have been massively typo'd. 00:03:06 Oh. 00:03:09 That's stupid. 00:03:12 ais523, but then it's hexadecimal. I suppose pointing that out would break the joke? 00:03:14 That's what it *sounds* like. 00:03:15 Almost as stupid as "libya". 00:03:18 And "Most of Congo". 00:03:25 I don't know if it is. 00:03:28 heh 00:03:31 http://freenode.net/faq.shtml#fst 00:03:36 It is that, yes; you made me remember. 00:03:47 I like how I can hear, but not see, fireworks here. 00:03:47 Sgeo: it's just standard to use letters for digits past the 10th 00:04:01 Oh, so it "sort of" is. 00:04:07 happy year of the apocalypse, everybody! 00:04:18 -christel- 2012 - Year Of The Troll! 00:04:20 I hope you have a nice apocalypse and lead up to the apocalypse 00:04:36 I thought Freenode /disliked/ trolls? 00:04:40 have they changed their mind? 00:04:54 Clearly their mind change will take effect in 2012. 00:05:06 i at first misread it as year of the trolley 00:05:13 elliott: you do know there's no reason to think the world will end in 2012, right? 00:05:14 year of the trolley would be good 00:05:15 #freenode-newyears s very quiet 00:05:23 s/s // 00:05:32 the common theory about the Mayan calendar was a mistranslation 00:05:36 ais523: sure there is: everyone who said that would look really stupid 00:05:53 wait, you think the world would end just to stop people looking stupid? 00:06:01 no, just to make them look stupid 00:06:09 surely it'd be more in character for it to keep hanging on out of spite? 00:06:46 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 Phantom_Hoover <- 2011 00:07:58 i wonder if i am still ignored 00:07:59 That bloody church blocked the fireworks again, of course. 00:08:15 Oh no, luke-jr is in #freenode-newyears. 00:08:20 * elliott exits stage left. 00:08:28 Al Qaeda have been slacking, evidently. 00:08:41 elliott: who's luke-jr? 00:08:45 is he an ssh fanboy? 00:09:01 That bloody church blocked the fireworks again, of course. <-- huh? 00:09:04 ais523: no, he's from #jesus 00:09:16 Vorpal, see log from exactly a year ago. 00:09:55 good thing fireworks are awful 00:10:00 ssh fanboy? 00:10:17 Phantom_Hoover, okay 00:10:19 Sgeo: elliott didn't believe me either when I said I knew one 00:10:22 until I gave some examples 00:10:41 How does one be a fan of a simple tool? 00:10:49 00:10:51 monqy, hahahaha you suck 00:10:56 monqy++ 00:11:02 As does elliott. 00:11:10 You are evidently also an English pansy. 00:11:12 I agree with Phantom_Hoover on something? 00:11:31 Wait, why would I disagree randomly with Phantom_Hoover? 00:11:41 Sgeo, have you long been of the opinion that monqy sucks? 00:11:41 I agree with someone against elliott? 00:12:10 Phantom_Hoover, I guess after he said that fireworks are awful 00:12:45 This is the right place. 00:12:59 Wow, this firework sounds like a cat dying. 00:13:38 Ha ha ha you just have amateur crappy fireworks in people's back gardens. 00:13:50 Not a giant castle with loads and loads of fireworks. 00:14:10 Phantom_Hoover: we're watching the celebrations in London on TV 00:14:16 although they're winding down now 00:14:20 /those/ aren't pansy fireworks 00:14:26 They don't have a castle?? 00:14:28 Phantom_Hoover: These fireworks aren't from a garden. 00:14:31 Pretty sure they're the official thing. 00:14:39 hahahaha 00:14:59 last I checked fireworks are too illegal here for back gardens to do them 00:15:02 I live like two blocks away from the official fireworks here. They are quite good. 00:15:18 monqy: sure? there are fireworks visible from where I live 00:15:19 monqy, and yet gun control??? im politic 00:15:22 well, not sure 00:15:24 from where I am currently 00:15:35 I don't actually live here, maybe they're visible from where I am too 00:15:41 monqy, where I am, illegality of fireworks does not stop usage of fireworks. 00:15:46 on Guy Fawkes Day, some people set off a firework from the pavement 00:15:49 I'm reasonably sure /that's/ illegal 00:15:55 I was a few metres away at the time, so I ran 00:15:57 monqy: sure? there are fireworks visible from where I live 00:15:59 ais523: in America? 00:15:59 as I wasn't sure how good their aim was 00:16:03 I think fireworks are illegal in Ireland for obvious reasons. 00:16:05 elliott: oh, monqy's American? 00:16:09 I thought he was British for some reason 00:16:25 but I wouldn't expect fireworks to be illegal in a land of republicans 00:16:31 Good thing America isn't that, then. 00:16:35 nor would I expect democrats to try to ban them 00:16:39 too much fallout for too little gain 00:16:42 Do you mean rd or RD? 00:16:53 err, do I mean either? 00:16:56 I'm not sure what either manes 00:17:00 Phantom_Hoover, what are the obvious reasons? 00:17:01 Republicans and democrats or Republicans and Democrats? 00:17:06 They're vastly different things. 00:17:17 oh, rD in that situation 00:17:27 Vorpal, do you know, like, anything about Irish history in the second half of the 20th century? 00:17:32 Specifically, Northern Irish? 00:17:33 My state apparently bans all consumer fireworks. 00:17:36 ais523: The obvious answer is that the Republicans would ban them, then... 00:17:37 Phantom_Hoover, oh right that 00:17:40 Phantom_Hoover, yeah makes sense 00:17:46 I have seen home Fireworks every year (more often) 00:17:48 Phantom_Hoover, not sure it makes sense for the entire island though 00:17:49 Phantom_Hoover: (Vorpal just googled it.) 00:17:56 elliott, no I didn't 00:17:56 elliott: why? they normally wouldn't offend their core voters for no good reason at all 00:18:04 Vorpal, Ireland has two nations on them. 00:18:09 Phantom_Hoover, indeed 00:18:09 they probably would if given large enough political donations 00:18:12 *on it 00:18:14 but nobody really has an incentive to do that either 00:18:19 Phantom_Hoover, I assume you mean the nation Ireland 00:18:20 ais523: I don't see why that would offend their core voters. 00:18:29 Phantom_Hoover, no? 00:18:35 I mean in both. 00:18:38 elliott: banning fireworks? 00:18:44 Phantom_Hoover, well that doesn't make much sense to me. 00:18:52 imagine you're ESR and you find out that the government is banning fireworks, what's your reaction? 00:18:53 http://en.wikipedia.org/wiki/Consumer_fireworks#United_States, anyway. 00:19:02 ais523: Hahahaha, you think ESR is the typical Republican supporter? 00:19:13 no, I think he's an extreme version of a subset of Republican supporters 00:19:15 ESR is strongly libertarian, the Republican party is nothing of the sort. 00:19:19 "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 do you think there's any chance he votes Democrat? 00:19:36 (he may well vote third party, I guess) 00:19:40 No, but that's quite irrelevant; Republicans aren't, as a general rule, libertarian. 00:19:47 anyway, in practice, libertarians normally vote republican 00:20:01 and it's not like the majority of actual republicans would care either way about fireworks 00:21:25 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 http://www.nio.gov.uk/the_law_on_fireworks.pdf 00:22:35 Everything other than indoor fireworks is banned. 00:22:42 *requires a licence 00:22:45 why do you think your mother would know whether fireworks are banned in northern island? 00:23:05 Indoor... fireworks? 00:23:34 elliott: not much different to indoor skiing, surely? 00:23:35 fireplaces, arson 00:23:36 ais523, because she is from it, also insists on dragging me there every available opportunity?? 00:23:41 ah, I see 00:23:50 northern ireland is quite a way to drag someone from scotland 00:23:50 (this also applies to my father, my parents are awful) 00:23:57 my kneeees 00:24:01 Phantom_Hoover: your parents are both northern-irish? 00:24:08 Yes. 00:24:17 hahahahaha, lkml.org has google +1 buttons 00:24:18 so why are you Scottish? 00:24:20 on every message 00:24:26 ais523: no true scotsman! 00:24:56 ais523, because I was born there and I have lived there all my life? 00:25:02 Phantom_Hoover: hmm 00:25:14 so what would possess northern-irish parents to have a scottish child? 00:25:23 X-D 00:25:30 Phantom_Hoover: WHY ARE YOU SUCH A DISAPPOINTMENT 00:25:50 Mum, dad.... I'm Scottish. 00:26:53 "Category 4 ("professional") fireworks are for sale only to fireworks professionals. They have no restrictions," 00:27:07 OK I need to become a pyrotechnician. 00:30:19 Phantom_Hoover: that's like wanting to become a locksmith 00:30:32 so that you can legally own lockpicks 00:30:37 Did I mention when I wanted to become a locksmith? 00:30:39 I totally did. 00:30:50 `addquote "Category 4 ("professional") fireworks are for sale only to fireworks professionals. They have no restrictions," OK I need to become a pyrotechnician. Phantom_Hoover: that's like wanting to become a locksmith so that you can legally own lockpicks Did I mention when I wanted to become a locksmith? 00:31:00 789) "Category 4 ("professional") fireworks are for sale only to fireworks professionals. They have no restrictions," OK I need to become a pyrotechnician. Phantom_Hoover: that's like wanting to become a locksmith so that you can legally own lockpicks Did I mention when I wanted to become a locksmith? 00:31:05 (Can you stab people with lockpicks, I need to be able to enforce the Skyrim protocol. 00:31:07 ) 00:31:11 lkml? 00:31:26 Oh 00:31:35 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 and yet don't do it because I fear it'd get me into trouble 00:31:55 it's hard to come up with lawful-good reasons to illegally pick locks 00:32:13 What about picking your own locks, or does that damage them? 00:32:35 Sgeo: doesn't damage them 00:32:43 just, they're all far too secure for me to stand any chance 00:32:54 I picked the lock on a classmate's pencil case once, with their permission 00:33:00 but they didn't believe I'd done it when break ended 00:33:05 (I guess it was a really weak lock) 00:33:06 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 what /is/ the Skyrim protocol? 00:33:23 and does it involve BF derivatives? 00:33:25 northern ireland is quite a way to drag someone from scotland <-- not really. I just checked in google earth 00:33:42 Vorpal: but dragging people across water's a bit tricky 00:33:50 there are bits of scotland that are nearish to bits of northern ireland 00:33:51 well, I'll grant you that 00:33:52 `addquote northern ireland is quite a way to drag someone from scotland <-- not really. I just checked in google earth Vorpal: but dragging people across water's a bit tricky 00:33:56 790) northern ireland is quite a way to drag someone from scotland <-- not really. I just checked in google earth Vorpal: but dragging people across water's a bit tricky 00:33:58 but the crow-flies route is rather awkward 00:34:09 I think practical routes for getting from one to the other mostly go via England 00:34:24 ais523, still not very long 00:34:26 `quote 00:34:28 `quote 00:34:30 471) doctor who. i saw part of one episode of that and it reminded me of buffy the vampire slayer. 00:34:30 `quote 00:34:31 `quote 00:34:32 `quote 00:34:39 I think practical routes for getting from one to the other mostly go via England 00:34:41 88) bi is like sqrt(2)/2 * straight + i * sqrt(2)/2 * gay 00:34:43 596) 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 ais523, I mean I travelled longer distances by far in Sweden. 00:35:01 The one I get dragged on involves driving to a ferry port in the southwest and sailing to Larne. 00:35:25 240) vorpal: a lot of people in AK fly quintopia, well getting a pilot cert is a lot more complex than a driving license :P being an AK resident is a lot more complex than a driver's license too 00:35:25 673) ais523: those suck hmm, those are all pretty good 00:35:45 what is AK now again? 00:36:04 arkansas, perhaps? I don't know 00:36:13 alaska maybe? 00:37:25 Would anyone be upset if I linked to US political news? 00:37:59 Alaska, apparently. 00:38:11 Sgeo, probably, but do it anyway. 00:38:17 ... 00:38:20 http://abcnews.go.com/blogs/politics/2011/12/virginia-gop-will-require-voters-to-sign-loyalty-oath/ 00:38:44 Sgeo, GOP? 00:38:55 Vorpal, the Republican party 00:39:02 "Grand Old Party", I think. 00:39:13 -!- Phantom__Hoover has joined. 00:39:40 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 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 ^choo choo 00:48:57 choo hoo oo o 00:50:19 * Phantom__Hoover switches back from DDG to Google. 00:50:43 Phantom__Hoover: it was pretty obvious to me that it was just applied to primaries 00:50:46 ^blah blah 00:50:51 in fact, I thought that was plausible even before the article outright said it 00:50:57 ^choo blah 00:50:57 blah lah ah h 00:51:08 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 UTC-1 is reasonably empty? 01:03:14 I guess UTC-2 will be even emptier, mostly ocean there 01:03:26 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 ais523: I misread that as "UCS-1" and "UCS-2" for a second and was quite confused. 01:14:20 there's a UCS-1? 01:14:21 -!- Sgeo has joined. 01:16:14 Whatever corresponds to the mid-Pacific? 01:17:35 isn't Australia in the mid-pacific, in longitude terms? 01:18:27 Nothing's -10, it seems. 01:20:03 Phantom__Hoover, lol 01:20:30 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 This includes Antarctica and summer times. 01:20:47 I checked though so I could SMS a friend on iceland happy new year at the right time 01:20:48 Vorpal: Yes, I know. 01:21:40 there's a UCS-1? <-- that would be like quite similar to ASCII? 01:21:46 not quite though 01:21:55 ascii with surrogates 01:21:57 so uh 01:21:57 utf-8 01:22:07 elliott: no, UCS doesn't have surrogates 01:22:10 elliott, err UCS lacks surrogate stuff 01:22:17 e.g. UCS-2 has no surrogates, UTF-16 does and can encode the whole set 01:22:22 so I guess UCS-1 would just be Latin-1 01:22:38 oh, right 01:22:46 who was it in here that played Magicka? 01:22:49 kallisti 01:22:54 ah 01:23:00 ais523: http://www.youtube.com/feather_beta 01:23:15 elliott: I hope that link's offtopic except for the name 01:23:22 hmm, if it's offtopic, I probably don't want to click it 01:23:24 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 and if it's ontopic, I definitely don't 01:23:36 so I could play co-op if anyone is interested 01:23:36 * ais523 doesn't click the link 01:24:24 elliott, huh? What does it actually do (wrt how it displays to the user)? 01:24:40 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 Dunno, don't care. 01:26:15 -!- {happy_new_year} has joined. 01:26:28 `welcome 01:26:31 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 `welcome 2012 01:26:36 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 o 01:27:21 monqy, that is a regular with a new nick 01:27:29 no need to say welcome, we are rude like that 01:27:30 :o 01:27:52 monqy, look at the host ffs 01:27:55 * {happy_new_year} (~PiRSquare@wikipedia/PiRSquared17) has joined #esoteric 01:28:04 * {happy_new_year} ! 01:28:31 -!- {happy_new_year} [~notaregular@yep] has joined #esoteric 01:28:32 help 01:28:38 monqy, ... 01:28:44 <{happy_new_year}> ? 01:28:54 <{happy_new_year}> monqy: when was that? 01:29:03 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 UPDATE 01:32:23 kallisti, elliott update 01:32:24 `welcome 01:32:27 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 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 Phantom__Hoover, sorry 01:33:21 You should be. 01:33:26 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 ":asimov.freenode.net 391 zzo38 asimov.freenode.net :Sunday January 1 2012 -- 01:33:39 +00:00" 01:34:29 {happy_new_year}: kidding about what 01:34:34 In my timezone is "2011/12/31 17:28:08 -0800" 01:34:42 @time zzo38 01:34:43 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 yes 01:35:04 you caught me 01:35:27 rip 01:35:33 `welcome monqy 01:35:36 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 `hi 01:35:47 ​/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 Caught you? Caught you with what? 01:37:59 @time centrinia 01:38:01 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 @time lambdabot 01:38:28 I live on the internet, do you expect me to have a local time? 01:38:31 oh 01:38:37 @time EgoBot 01:38:49 <{happy_new_year}> @time ChanServ 01:39:28 @time time time, look what's become of me 01:39:30 Local time for Time is Sat Dec 31 20:39:21 2011 01:40:29 @version lambdabot 01:40:30 lambdabot 4.2.2.1 01:40:30 darcs get http://code.haskell.org/lambdabot 01:41:16 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 @time Zetro 01:41:28 Local time for Zetro is Time: Sun Jan 1 02:38:52 2012, uptime: 19w 3h 37m 36s 01:41:28 oops 01:41:30 /SET ANSWER + makes it auto answering 01:41:30 @time zzo38 01:41:32 Local time for zzo38 is 2011/12/31 17:35:15 -0800 01:41:46 Well, I turned back on auto answering now 01:41:58 @time ais523 01:42:00 Local time for ais523 is Sun Jan 1 01:41:51 2012 01:42:01 zzo38, do the not auto answering thing 01:42:08 oh, it does it via ctcp 01:42:10 ais523, Happy new year! 01:42:11 Auto answering is off. 01:42:15 that's cheating, I thought it had a timezone database 01:42:18 happy 2012, centrinia 01:42:19 @time zzo38 01:42:28 Local time for zzo38 is ACTION 01:42:36 <{happy_new_year}> lol 01:42:46 * {happy_new_year} . 01:43:02 -!- ais523|direct has joined. 01:43:10 now I have an idea… 01:43:15 @time ais523|direct 01:43:22 monqy: you ruined it 01:43:28 utterly 01:43:32 I was going to send a CTCP response 01:43:35 oh no 01:43:36 /without/ the @time having been given 01:43:47 -!- ais523|direct has quit (Client Quit). 01:43:47 ais523: I tried that; it doesn't work 01:44:20 oh, ofc, lambdabot would have no way of knowing what channel to send the response to 01:44:50 ais523: Yes. That is what I thought but tried it anyways to see if it would do anything at all. 01:45:15 @ping ais523 01:45:15 pong 01:45:24 @ping ais523 01:45:24 ah, I was wondering if it'd ctcp ping me 01:45:24 pong 01:45:29 Why do you have two connections? 01:45:37 I only have one at the moment 01:45:49 Are you unable to send CTCP response on the main one? 01:46:23 zzo38: I'm not convinced my client would correctly send a CTCP response 01:46:32 so I wanted to handcraft it to make sure it worked properly 01:46:37 it sends them automatically 01:46:43 Well, did you try making your client send a CTCP response? 01:46:49 but clients generally aren't designed to send people unsolicited CTCP responses 01:46:53 I don't know what the command would be 01:47:00 I can do /notice, but not really literal control-a 01:47:44 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 /notice is not a CTCP command 01:48:00 it's an irc NOTICE command 01:48:13 coppro: a CTCP reply is an irc NOTICE command 01:48:16 with control characters in 01:48:25 <{happy_new_year}> ... 01:48:30 <{happy_new_year}> lol 01:48:36 specifically, /notice ^ATIME Sun Jan 1 01:41:51 2012^A or whatever 01:48:42 ah, yeah 01:48:42 <{happy_new_year}> TEST 1 2 3 01:48:44 in theory, you can put multiple CTCP responses in the same line 01:48:56 but I'm not sure if any client actually parses them as such 01:49:06 elliott: You should join the atto project 01:49:06 -!- azaq23 has joined. 01:49:12 My client parses CTCP requests anywhere in a line. 01:49:21 However, the only thing it does with CTCP responses is displays them. 01:49:33 It doesn't attempt to parse them. 01:49:37 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 [Error] nctcp: Unknown command. 01:50:01 coppro: No. 01:50:03 ais523, I sent you a ctcp and a ctcp reply 01:50:05 did they work? 01:50:05 Did you try pushing CTRL+A? 01:50:09 Vorpal: yes 01:50:11 <{happy_new_year}> ACTOIN tests 01:50:13 right 01:50:16 <{happy_new_year}> >_> 01:50:16 zzo38: selects all text on the line 01:50:20 I knew that even before testing it 01:50:22 but I tested it anyway 01:50:23 <{happy_new_year}> WHY AM I FAILING> 01:50:25 actoin 01:50:26 <{happy_new_year}> ACTIN tests 01:50:31 good good 01:50:31 <{happy_new_year}> O_O 01:50:31 If you push CTRL+P first (or CTRL+V maybe) will that work? 01:50:34 * {happy_new_year} tests 01:50:35 {happy_new_year}: you can't spell action 01:50:40 <{happy_new_year}> Did it work? 01:50:46 on the third time yes 01:50:51 zzo38: control-v is paste; control-p has no obvious effect 01:50:54 sorry for this: 01:50:57 VERSION 01:50:59 and doesn't escape control codes 01:51:00 Not even printing? 01:51:12 zzo38: you can't really print an IRC channel 01:51:16 you could print a log, perhaps, or scrollback 01:51:21 -Zetro- VERSION ((\w+) (v?(\d+(?:[a-z]|(?:\.\d+[a-z]?)*(?:[_-](?:\d+[a-z]?|[a-z]?\d*))?)))(?: (.*))?) <-- lol 01:51:22 <{happy_new_year}> QUIT :oops 01:51:23 but neither is an immediately useful thing to do 01:51:27 <{happy_new_year}> Darn 01:51:33 CTCP QUIT? 01:51:40 no idea what that is for 01:51:41 <{happy_new_year}> I thought it might work... 01:51:43 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 you could test using CTCP PRIVMSG, I guess 01:52:04 which would be just as futile 01:52:06 <{happy_new_year}> PRIVMSG :oops 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 {happy_new_year}, also it isn't going to work, no client responds to unknown ctcp as far as I know 01:52:36 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 elliott: why did Canada collapse? someone's asking about IRC nomics in another channel 01:52:53 Vorpal: No I have seen some that makes error message 01:52:57 {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 zzo38, heh, really 01:53:12 I seem to remember an edit war over something or other, but can't remember what 01:53:14 Vorpal: you were there too, can you remember? 01:53:44 ais523, Canada? Oh the IRC nomic that was stupidly renamed to try to do something silly with agora 01:53:51 I left around the time it was renamed iirc 01:53:51 yep 01:53:51 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 but there was a war about something earlier 01:54:06 ais523, don't remember 01:54:13 gah 01:54:22 Because I think my client is the only one following the specifications of IRC more closely than any other one does. 01:54:24 anyone still have Canada's ruleset after this long? ISTR Vorpal hosted it 01:54:30 no I didn't 01:54:44 ais523, check your logs? I can't they are on another computer that dual boots and is booted into windows. 01:55:11 ais523: there's a copy 01:55:11 ais523, I might check when I reboot to linux 01:55:15 can't, I lost my logs from that long ago, IIRC 01:55:15 of a slightly old ruleset 01:55:23 ais523: anyway, it died due to becoming #nomic 01:55:30 before that, just lack of activity 01:55:35 talking about agora was more interesting 01:56:16 it wasn't doing too well as a nomic even before that 01:57:04 anyway, New Canada never died 01:57:08 it just barely even lived 01:57:36 elliott: why not? 01:57:47 coppro: Why not what? 01:57:55 elliott: join the atto project 01:58:20 sounds like a very small project 01:58:42 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 elliott: what is the set of programming languages you code in for fun? 01:59:16 just {Haskell}, or larger? 02:00:06 in my case, I wanted to have a go at implementing scapegoat myself 02:00:11 but couldn't think of an appropriate language 02:00:17 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 elliott: what's that OS you're building called? 02:00:26 hmm, fair enough 02:00:29 elliott: it definitely won't be C++ 02:00:35 if I ever bother actually coding it 02:00:46 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 so we just call it @ 02:01:00 (I would try to escape those @s, but apparently it can't be escaped) 02:01:10 ais523: thankfully, replacing X with X is a nop 02:01:13 err, find-replaced 02:01:21 also, nounish? 02:01:24 it's a global replacement 02:01:39 not even email addresses will survive the Revelation 02:01:42 coppro: what will it be, then? 02:01:58 elliott: don't you do C++ sudoku for fun sometimes? 02:01:58 dunno 02:02:02 or does that not count as C++ programming? 02:02:24 ais523: that's not fun, that's zen 02:02:26 elliott: the atto project is to create a user environment based on vim, but expanded to cover more applications 02:02:39 also no suck is allowed 02:02:40 coppro: oh, that's even less interesting than what I thought it was 02:02:43 coppro: sort-of like vimperator? 02:02:46 and you're doomed from the start 02:02:48 ais523: yes, except not 02:02:48 only not limited to firefox? 02:03:05 vimperator isn't either 02:03:05 more like a vim-like DE 02:03:07 http://vimperator.org/ 02:03:16 elliott: somehow I'm not surprised 02:03:19 coppro: oh good, it's layering Unix on top of Unix 02:03:29 are you /sure/ you thought out the no suck rule fully? 02:03:35 coppro: isn't that just Emacs? 02:03:43 ais523: most emphatically not 02:03:51 at least, the major defining difference between Emacs and vim is that Emacs is a DE and vim isn't 02:03:58 things like controls can be remapped 02:04:21 emacs doesn't nicely support the notion of a mode 02:04:56 -!- itidus22 has quit (Quit: Leaving). 02:05:06 emacs has a concept called "mode", you know; and emacs minor modes could be used for vim modes very easily 02:05:13 probably are, in fact 02:05:33 unless I misunderstand, not the in the way I envision them 02:05:40 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 coppro: well, things like insert/visual/command mode in vi are basically different sets of keybindings, right? 02:07:12 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 so it's easy to envisage a minor mode whose only purpose is to change keybindings 02:07:51 ais523: Not entirely true. Visual mode, for instance, has the notion of a selection 02:08:10 if you don't think emacs modes can add functionality like that... 02:08:22 oh, I certainly do 02:08:26 -!- Darth_Cliche has joined. 02:08:48 but the thing is, it needs to be able to be as uniform as possible across different purposes 02:10:01 hmm, I was just testing out M-x viper-mode 02:10:11 which is basically vi keybindings in Emacs 02:11:33 brb, restarting 02:11:40 -!- NihilistDandy has quit (Quit: Linkinus - http://linkinus.com). 02:12:11 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 how would you put one on a calendar program, for instance? 02:12:53 -!- copumpkin has joined. 02:13:28 Vorpal: whenever I buy my wicked gaming desktop I'd be down for some co-op 02:13:42 because I actually own the game, but lack a computer with which to play it. 02:14:24 so how are you on IRC? 02:14:29 ais523: cursor navigates time, can insert events at cursor, or whatever 02:14:34 or is this one of those games that doesn't run well on low-end laptops? 02:14:38 ais523: I'll let you figure that out. 02:14:40 :> 02:14:47 s/run well/run at all/ 02:14:58 coppro: oh, I forgot the last reason: I have about 10x more projects than I can handle anyway 02:15:03 elliott: duh 02:15:03 hmm, I'm used to new games running even on old hardware 02:15:14 why do you think I'm starting this one? 02:15:16 typically not with massively good graphics/framerates/etc 02:15:23 it's not even because it's old. 02:15:36 ais523: modern computers with integrated graphics cards just don't cut it 02:15:50 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 sure? I've played computer games on them 02:16:21 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 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 and I think it was reasonably new then 02:16:34 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 kallisti: just patch the library it's using to determine the graphics card to return a different result? 02:17:48 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 ais523: .. 02:18:08 I doubt that's going to be easy. 02:18:14 kallisti: might be a patch on the forums to do that 02:18:21 that's what happened with Neverwinter Nights, for me 02:18:24 last I checked there was no way to fix it. 02:18:30 it was crashing on Linux but there was a patch that masked the existence of a capability, then it wasn't 02:19:13 ais523: the reason modern games don't work on intel is that intel only has old shaders 02:19:20 flipping a gfx card check will not help. 02:20:01 old shaders = fixed pipeline where you only get to plug numbers into a prewritten shader, effectively? 02:20:10 hmm, are you sure? 02:20:25 err, what? 02:20:32 shaders are programmable pipeline 02:20:37 intel just only does glsl 1.2 02:21:41 ah, OK 02:21:45 that makes a lot more sense 02:22:04 (fixed pipeline can be seen as simply being forced to use prewritten shaders) 02:22:45 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 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 adanaxis runs nicely on this laptop too, and it does crazy things with shaders 02:24:10 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 I doubt it does /that/ crazy things 02:25:01 -!- ais523 has quit (Remote host closed the connection). 02:26:01 Are there any five dimensional space shooters? 02:27:09 heh 02:27:32 Well, are there? :p 02:29:10 Make one 02:31:01 Make two 02:31:30 make 0 02:31:36 make clean all 02:31:37 Make -1 02:32:44 make pi r^2 17 02:38:10 make make 02:38:13 man make 02:38:14 make man 02:41:43 `man man 02:41:46 man: can't open the manpath configuration file /etc/manpath.config 02:41:52 `make man 02:41:55 make: *** No rule to make target `man'. Stop. 02:42:40 ^ celebrate you know what celebrate needs? 02:42:42 ^celebrate you know what celebrate needs? 02:42:42 \o| |o| |o/ \m/ \m/ |o/ \o/ \o| \m/ \m/ \o| |o| |o/ 02:42:43 | | | `\o/´ | | | `\o/´ | | | 02:42:43 /| /| /| | /'\ /| >\ | /| /| /< 02:42:43 (_|¯'\ /'\ 02:42:43 |_) (_| |_) 02:42:49 ^rainbow a little more rainbow 02:42:49 a little more rainbow 02:43:15 everything needs a little more rainbow 02:43:29 yes 02:43:33 all my websites will be in rainbow colors 02:43:43 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 ^celebrate 1 2 3 4 5 6 7 02:44:32 \o| |o| |o/ \m/ \m/ |o/ \o/ \o| \m/ \m/ \o| |o| |o/ 02:44:32 | | | `\o/´ | | | `\o/´ | | | 02:44:33 /< |\ |\ | |\ |\ |\ | |\ /´\ |\ 02:44:33 /'¯|_) /´\ 02:44:33 (_| (_| |_) 02:52:30 elliott, kallisti update. Phantom_Hoover's not on the list because he's not here. 02:52:54 Sgeo: thanks for the elliott update earlier 02:53:08 You're welcome 02:53:15 I AM NOT WELCOME 02:53:20 WHAT THE FUCK IS WRONG WITH YOU 02:53:31 `welcome Sgeo 02:53:34 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 this is weclome 02:53:40 this is weclome 02:53:45 THIS IS WECLOME 02:53:48 aaaaaaaaaaaah 02:53:51 `unwelcome kallisti 02:53:53 ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: unwelcome: not found 02:53:56 yes. 02:53:59 much bteter 02:55:07 ihihihihihihihihihihihihih 02:55:22 > 3 :> [4] 02:55:23 Not in scope: data constructor `:>' 03:00:47 Finnmark is RELLLLAAAALKLLL~! 03:01:48 -!- PiRSquared17 has changed nick to [Finnmark|Away]. 03:02:25 -!- Ngevd has joined. 03:02:32 Hello! 03:02:33 Ngevd: You have 1 new message. '/msg lambdabot @messages' to read it. 03:02:39 @messages 03:02:39 Phantom__Hoover said 1h 13m 41s ago: CRITICAL INTELLIGENCE UPDATE: elliott lives in the Abbey, move to intercept. 03:02:54 elliott, any good torrent client suggestions for windows? 03:03:26 I have used a program called "Another BitTorrent Client" 03:04:04 also wtf make cancel the default button in an open dialogue 03:04:10 I use Torrent 03:04:12 why does ktorrent (on linux) do that 03:04:25 I don't know! 03:04:34 Ngevd, thanks. How does it compare to ktorrent in functionality 03:04:37 No idea 03:04:45 zzo38, it was a rhetorical question 03:04:53 I've never used ktorrent, and I've barely used Torrent 03:04:57 ah 03:05:03 I'll wait for elliott then 03:05:13 ? 03:05:15 I really only use... Transmission? THe one that's default on Ubuntu 03:05:22 Vorpal: just use utorrent 03:05:25 elliott, okay 03:05:45 or deluge 03:05:46 i guess 03:05:49 but everyone just uses utorrent 03:05:55 Ngevd: Bit late for you to be on. 03:05:58 actually... I forgot the port forwarding assignment for that computer. I'll just use the configured ktorrent on my laptop 03:06:02 and then scp it over 03:06:06 @hoogle stdGen 03:06:07 System.Random data StdGen 03:06:07 System.Random getStdGen :: IO StdGen 03:06:07 System.Random mkStdGen :: Int -> StdGen 03:06:09 elliott, I was saving up 03:06:10 I'm so lazy 03:06:24 :t random 03:06:25 forall g a. (Random a, RandomGen g) => g -> (a, g) 03:06:26 kallisti, I bought magicka on the sale today 03:06:44 Whoever reads MSPA: Possibly update? 03:06:47 kallisti, (complete pack even, it was so cheap) 03:06:49 Dunno if you know already 03:07:19 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 Vorpal, which game? 03:13:07 Or, magicka 03:13:10 I should read 03:14:53 I wish strings has an option to ignore stupid strings like "T$4P" 03:16:47 Ngevd: Dude, it's way past your bedtime. You're scaring me. 03:17:02 elliott, it is way past my bedtime too 03:18:07 whats a bedtime 03:18:12 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 Hi 03:30:36 -!- centrinia has quit (Quit: Leaving). 03:39:21 hi 03:39:32 Phantom_Hoover_Not_here, elliott kallisti update 03:41:11 im phantomhoovernothere 03:41:18 my traditional scottish name 03:41:28 Ngevd: It's almost 4 am, man. 03:44:15 Can I disable space to scroll in Chrome? 03:53:04 probably not unless there's some exttension 03:54:57 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 copumpkin: Does the new kind-lifting stuff in GHC let me have type-level rational literals? 04:53:50 happy new year folks 04:58:21 -!- Klisz has joined. 04:59:02 -!- Darth_Cliche has quit (Ping timeout: 244 seconds). 05:05:56 elliott, update 05:15:27 -!- van3 has joined. 05:16:22 `welcome van3 05:16:25 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 "[...] very soft and savory with a hint of ammonia." --[[Brie]] 05:25:15 Delicate ammonia flavours. 05:27:33 I'm gonna create a language and call it Computer Language Especially Atrociously Named Ex Retronym. 05:31:57 tswett: Crass. Only ocular lenses should take over really yawnful brands. Really ostentatious. 05:32:01 cleaner is stupid 05:32:01 tswett: no, it has to be recursively acronymed! *wink* 05:32:09 I like how all three of us responded at once. 05:32:12 Minutes after the original message. 05:32:55 and i was waiting for the next train while diligently searching for free Wi-Fis 05:33:23 the perfect moment to answer such message. 05:36:32 * elliott just assumes tswett decoded his CLEVER HIDDEN MESSAGE. 05:36:50 happy new year elliott 05:37:00 Happy new year 05:38:16 Clearly loads'a effort vanquished egregious retardations, hailing immaculate decisions deduced excellently, natch. Must emissaries so slowly aggregate greater extensionality? 05:39:24 :( 05:39:56 you have no sympathy for drunk me do you elliott 05:40:22 quintopia: Happy axiomatically passing pages, yes. Never entirely wishful, ye ending alienates really epic lying losers. Oh, tut tut. 05:41:30 you missed an i 05:41:45 :( 05:41:52 *losers, idiot. 05:42:30 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 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 *likenesses; 05:45:37 kallisti, you may have missed updates 05:46:13 http://esolangs.org/wiki/Malbolge 05:46:15 mother of god ... 05:51:21 elliott: all real exogenous yeomen originate under sexually urban crushing herbal arid dungeons. only underground citizens have exceptionally badass gregarious selves. 05:51:24 ? 05:51:52 Are you such a douche bgs? 05:51:59 I... don't know whether I'm such a douche bgs. 05:52:43 baf ass should have been two words 05:52:50 forgive me, i'm drunk 05:53:10 -!- MDude has changed nick to MSleep. 05:53:25 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 quintopia: Fortunately, opium-red grass imitates vain endings. Moreover, entities' idolaters move drunk robotic understandings. Never know. 05:56:59 such ostentatious drivel. really underestimating new krewlness 05:57:34 i agree @ elliorr 05:57:42 ^tt 05:57:50 Sod runk indeed. 06:00:48 hmm 06:01:29 I don't understand what zzo38 said 06:02:12 The prior statement was an attempt at a joke, which I am now aborting. 06:02:13 i think what zzo38 said is "You, oak underneath, hellishly amputate..." translates to "you aren't hiding anything, really..." 06:02:40 ie. 06:03:21 "saw the message starting X and immediately understood what it meant... Y" is akin to "X translates to Y" 06:04:02 with temporal qualifiers removed 06:21:29 hi 06:23:19 * quintopia hugs zzo38 06:23:39 happy new year zzo38 ... in a couple hours 06:28:57 -!- NihilistDandy has quit (Quit: Linkinus - http://linkinus.com). 06:33:32 which year is it in china? 06:41:15 itidus21: No. That isn't what it translates to. 06:41:18 That isn't what I meant. 06:42:07 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 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 what's a good frontend for gnuplot? 06:48:23 or 06:48:32 what's good software for generating a plot of a sinwave? 06:48:40 s/sin/$& / 06:53:22 -!- Guest64412 has joined. 07:00:37 zzo38: when tne chinese new year happens what animal will it be 07:03:01 I don't know that either 07:04:05 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 My internet just died /badly/ 07:55:18 I'm on 3G atm 07:55:28 it says it is connected but it just doesn't work 07:56:03 it works 07:56:13 quintopia, obviously my 3G works 07:56:16 but not my ADSL 07:56:17 duh 07:56:44 -!- itidus21 has quit (Ping timeout: 252 seconds). 07:57:12 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 oh kay! 07:59:50 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 and switching back 08:17:31 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 CTCP QUIT? 11:21:02 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 Gregor: ^ *cough* 11:21:50 oerjan: Yes, I think they should include non-channel PRIVMSGs too. 11:22:08 fizzie: um i was assuming that was sent to the channel? 11:22:22 Could be; that was an irrelated comment. 11:23:17 basically on a channel as experimental as #esoteric, a logbot shouldn't filter out information, not even malformed such 11:23:38 (yeah i know about the raw logs) 11:23:59 HOWDOESTHISAPPEARINMYLOGS 11:24:48 Hah, my bouncer doesn't log CTCP either. What a multiball. 11:25:09 -!- GreaseMonkey has quit (Quit: The Other Game). 11:28:57 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 As well as "ping -p 2b2b2b415448300d0a". 11:30:17 Hello! 11:30:23 (There's also the variant which dials up a phone sex number afterwards.) 11:31:37 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 IIRC it's just "C++ as a time-wasting brain exercise". 11:35:13 Vorpal: You know how people play Sudoku as a time-wasting brain exercise? 11:35:13 C++ is like that, but better. 11:35:13 [...] 11:35:13 I failed at C++ Sudoku for the first time today :( 11:35:13 it is not possible to create a boolean type such that "if (True)" works but 11:35:13 "if (True && 9)" doesn't 11:35:15 [...] 11:35:17 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 mhm 11:40:54 ^celebrate 11:40:54 \o| |o| |o/ \m/ \m/ |o/ \o/ \o| \m/ \m/ \o| |o| |o/ 11:40:54 | | | `\o/´ | | | `\o/´ | | | 11:40:55 /`\ >\ |\ | /'\ /'\ /< | /´\ |\ >\ 11:40:55 (_|¯`¯|_) /'\ 11:40:55 (_| |_) 11:41:14 * oerjan was testing if it did anything different with +c off 11:42:19 What about a \o/ 11:42:19 | 11:42:20 /`\ 11:42:34 Aw, no color-following; now it just looks like an excessively angry dude. 11:42:43 explosive man 11:43:18 I was hoping for it to pretend the color code had a width 11:44:17 I wonder if it also doesn't mind \o/ 11:44:17 | 11:44:18 /´\ 11:44:42 Very good. 11:44:48 it uses all those strange control codes itself (which i cannot see in irc but which show up in the logs) 11:45:03 \o/ 11:45:04 | 11:45:04 /< 11:45:32 good ideas:\o/ 11:45:33 | 11:45:33 |\ 11:45:49 Oh no, the blockhead. 11:46:04 \m/ \m/ 11:46:05 `\o/´ 11:46:05 | 11:46:05 (_|¯'\ 11:46:05 |_) 11:46:32 0 isn't black? 11:46:37 1 is black 11:46:41 0 is white. 11:46:52 \m/ \m/ 11:46:52 `\o/´ 11:46:52 | 11:46:53 /´\ 11:46:53 (_| |_) 11:47:52 \o| |o| |o/ \m/ \m/ |o/ \o/ \o| \m/ \m/ \o| |o| |o/ 11:47:53 | | | `\o/´ | | | `\o/´ | | | 11:47:53 /| /< |\ | |\ /< /| | /< |\ /`\ 11:47:53 /´¯|_) /'\ 11:47:53 (_| (_| |_) 11:49:19 Finnmark is RELLLLAAAALKLLL~! <-- how sad that i broke him 11:49:51 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 and of course there's Hordaland when you want some hordes 11:50:26 and all us ops are from Oppland, naturally 11:50:52 `words --finnish 15 11:51:03 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 the rogues come from Rogaland 11:51:41 basically norwegian counties contain all the names you need for a proper D&D game 11:52:08 Lots of long-ish real words there, "muodollamme", "pitämällään", "ahdistuttavissa", "kateuttamme". 11:52:21 `words --norwegian 15 11:52:25 sursforsøk radiner tankaperapen logien fasissamlovertykksamvir tillene dampbevistilla formeieorierordr trafikaeneruneskyla yrkeroinstor marbehandle mimregn hodeltaktet tingsbehandpla hovektens 11:52:51 sursforsøk is clearly a scientific term 11:53:19 and biologists have seeked long for the mysterious tankaperape 11:53:57 and when your proofs are not up to steam, use dampbevistilla 11:54:24 marbehandle sounds like the kind of treatment you want to avoid 11:54:34 (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 marbehandle sounds like a Dwarf Fortress 11:54:44 mimregn is like rain, except it makes no sound 11:55:34 -!- Phantom_Hoover has joined. 11:55:34 and if you don't know how much ho you have, use a hovekt 11:56:10 i have always wanted to know how much ho i have 11:56:16 Or just get a ho-over. A phantom such. 11:56:19 after which you can split them with the hodeltakt 11:56:54 monqy, so you want a hovekt with type indices? 11:57:44 my ho is very precious to me; i want only the best 11:58:10 -!- Ngevd has quit (Quit: Goodbye). 11:58:12 Are all your hovekt manipulation functions formally verified? 11:58:24 Ngevd could not deal with all these hos. 11:58:26 monqy: but is it a forward or backward ho? 11:58:41 sorry -a 11:58:42 oerjan, hos only go one way, you dolt. 11:58:55 it's a mass noun 11:59:09 Ho only goes one way, you dolt. 11:59:15 ok 11:59:22 always forward ho, check 12:00:24 ho also means "she" in nynorsk 12:00:52 Ho ho ho? 12:01:20 oh and who wouldn't want some nice dried radiner 12:01:58 `words --english 15 12:02:02 Unknown option: english 12:02:05 :( 12:02:15 `paste bin/words 12:02:19 http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.20211 12:02:36 `words --eng-gb 15 12:02:41 eed fix hornicagli splum donary puftyfrydic signie mufk quho ston legealessio lehing incaryfev navige hon 12:02:46 (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 puftyfrydic, yum yum 12:03:16 I think I've been to Incaryfev. 12:03:36 `words --irish 15 12:03:39 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 i need some splum for the donary, hon 12:04:14 Neamhbhreach is only a little implausible as an Irish name. 12:04:28 Phantom_Hoover: you know irish? 12:04:29 -!- baesemada has joined. 12:04:35 oerjan, I know Irish names. 12:05:05 They're characterised by 'h'es where no 'h'es should there be. 12:06:30 03:02:39: @messages 12:06:30 03:02:39: Phantom__Hoover said 1h 13m 41s ago: CRITICAL INTELLIGENCE UPDATE: elliott lives in the Abbey, move to intercept. 12:06:36 hexham will never be the same 12:10:18 -!- baesemada has quit. 12:15:43 * elliott just assumes tswett decoded his CLEVER HIDDEN MESSAGE. <-- ejatdhCHM? that makes no sense man 12:16:48 it's backwards for MHChdtaje. 12:16:52 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 05:46:13: http://esolangs.org/wiki/Malbolge 12:20:32 05:46:15: mother of god ... 12:20:40 no, more like the opposite, i'd say 12:20:47 ? 12:21:31 opposite of mother of god. 12:21:32 dog fo rehtom 12:21:46 god of mothers? 12:21:51 father of god? 12:22:00 mother of satan? 12:22:08 I could go on for hours, which one do you mean? 12:22:09 getting close 12:22:20 lahwran: well which one fits with malbolge? 12:22:34 * oerjan pun appreciation lessons 12:22:39 "mother of god" works nicely 12:22:44 zbgure bs tbq 12:22:56 http://www.urbandictionary.com/define.php?term=mother+of+god 12:23:03 "If something unbelieveable happens or is so unexpected and you cant believe your eyes, you can then say 'Mother of GOD!'" 12:23:05 I rest my case :3 12:23:53 yes, but that's not punny enough. 12:24:14 or wordplay, whatever 12:26:46 I'm busy reading gender-related holy wars on reddit, can't think about puns 12:27:12 lahwran: Solution: Stop reading Reddit. 12:27:25 yeeeeaahhh that's a good idea 12:27:29 Reddit is stupid. Especially "gender-related holy wars" on it. 12:28:11 "holy wars" on the internet in general are stupid, but very entertaining 12:28:14 i don't visit the reddit front page any more these days. 12:28:33 holy wars as in 12:29:03 The Reddit front page is OK once you unsubscribe from every single subreddit. 12:29:04 "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 shachaf: i'm not logged in, so i mean the default set 12:29:22 happens a lot with programming languages, too. perl vs python, anyone? 12:29:26 :D 12:29:51 never heard a proper perl vs python 12:29:58 oerjan: I'm not logged in either. 12:30:14 I don't really log in to websites anymore. 12:30:20 monqy: honestly, I haven't either 12:30:58 of what use is a holy war if both sides are wrong 12:31:15 you don't need that qualifier on there 12:31:16 monqy: Eliminating wrong people from both sides. 12:31:23 That's what war is about. 12:31:37 in general holy wars imply that any aggressive side is wrong :P 12:31:44 and, often the unaggressive sides too 12:32:31 I'm in a holy war with my pants -- in particular the knee area. 12:32:34 I'm losing. :-( 12:32:47 hah 12:33:06 I'm proud to say the knees of my pants have stayed mostly assembled in recent years 12:33:08 my pants and I have a mutual respect 12:33:24 i'm in a holy war with god. it's rather frustrating. 12:34:03 oerjan: A holier-than-thou war? 12:34:52 shachaf: the guy just won't come to his senses 12:36:46 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 "Can't you just _fix_ it already?" "*THUNDERBOLT*" 12:41:53 nahahaha 12:41:59 s/n/b/ 12:46:08 -!- Ngevd has joined. 12:46:43 -!- mr_schlauch has joined. 12:50:16 Hello! 12:51:01 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 ARISE COMPUTER 13:29:20 I SUMMON THEW 13:29:22 so after playing some Skyrim 13:29:25 I think I've decided 13:29:51 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 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 they need to come up with an actual fundraiser if they want to keep drawing millions from the general public 13:48:28 quintopia: what's the difference between an "actual fundraiser" and what they're doing. 13:48:35 if I don't give them money, they'll give me more faces, and I love the faces 13:48:58 I think their fundraider campaign is kind of poorly executed. 13:49:11 fundraider! 13:49:15 lol yes 13:49:21 not enough fun raiding 13:49:23 needs more raids 13:49:39 I think they should have stuck to the "here's the bar showing how much money we need" 13:49:42 instead of the faces. 13:49:53 but 13:49:54 facesssssss 13:49:55 faces are good 13:50:00 faces are friend 13:50:01 it worked fine in the past, and gave people an indication that there is a need to donate. 13:50:15 they could even have faces /and/ the progress bar. 13:50:20 ,,,,,,,,, 13:50:22 progress bar made of faces 13:50:26 yes. 13:50:40 face made of bars 13:50:44 give more money to get more faces 13:50:47 now everyone will donate 13:51:03 yes. all the donate. 13:51:08 all the faces do is attract people to click and read their shitty advertising spiel. 13:51:15 nope 13:51:25 they attract people to look at faces 13:51:32 to admire the faces 13:51:37 it's all so facetious 13:53:04 .. 13:53:10 monqy: hi I got idea for game 13:53:13 super game. 13:53:15 but complicated 13:53:25 you flip a face but it's really really big 13:53:26 maybe I shouldn't plan so comlpicatedly 13:53:54 no it's like RPG + RTS 13:54:12 + maybe dynamically generated storyline/world but I doubt I'll be good at that. 13:54:26 definitely randomly generated world would be nice. 13:55:06 the idea started as a desire to have an RPG where careful consideration and planning are required 13:55:08 and you can go back in time and kill the royal family and everything is different 13:55:22 like, with magic, for example, you can't just run around and throw fireballs everywhere. 13:55:52 you can only throw them where they wont hurt anyone 13:56:21 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 forest fires mean more things dead 13:56:35 perfect 13:56:37 lol 13:56:39 yes. 13:56:44 though if there is an enemy wizard 13:56:47 he could conjure rain. 13:56:48 dead 13:56:50 oh 13:56:53 try megafire 13:56:58 (thumbs up) 13:57:07 megarain though 13:57:25 D: 13:57:57 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 do recommend nuclear blast 13:58:06 so, to start with you'd be one person. the main hero character. 13:58:29 oh sort of like battles in brutal legend 13:58:34 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 though I don't if I actually want to do that. 13:59:07 you dont want to do that 13:59:09 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 you want a game company with resources to do it for you 13:59:27 also I'd rather focus on a small group of awesome hero characters than armies and stuff 14:00:07 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 but yeah 14:00:15 that's like 14:00:17 a game I'll never make 14:00:21 that I've thought about a lot recently 14:00:31 I'd like to be a game company 14:00:34 like the entire game company 14:00:35 at once 14:00:41 like a hivemind 14:00:42 yeah man 14:00:45 developing a game 14:01:20 my dream existence is as a hivemind 14:01:28 a hivemind of robots 14:01:30 or perhaps hiveminds 14:01:40 my existence hive is a dream of minds. 14:01:47 is this a good dream or a nightmare 14:02:26 my dream existence is of mind hives 14:02:45 my dream dream is of dream dreams 14:04:08 mmmm cole slaw 14:04:20 what the hell does cole mean 14:04:23 also slaw 14:04:37 coles law 14:04:43 colesl aw 14:04:44 cole is cabbage, slaw is salad 14:05:00 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 indeed 14:05:23 coleslaw is good except when it isn't 14:05:29 yeah 14:05:38 "closeup of Kentucky Fried Chicken's coleslaw" WHYYYY 14:05:44 thanks 14:05:58 enlarged for texture 14:06:02 they make the worst 14:06:04 delicious coleslaw texture 14:06:05 WHY DOES WIKIPEDIA RUIN EVERY FOOD WITH PICTURES OF SHITTY VERSIONS OF THAT FOOD 14:06:30 is the picture good at least 14:06:49 artistically 14:07:25 "here's some shitty grits I got no 14:07:55 http://en.wikipedia.org/wiki/File:KFC_coleslaw.JPG 14:08:06 mmmm grits 14:08:08 ew 14:08:14 imagine cabbage now imagine KFC sucks 14:10:25 the only retouching they did was a crop 14:10:44 i am glad to in all other respects witness the unadulterated glory of kfc coleslaw 14:10:56 viesual respects i mean 14:11:03 except for some of them 14:12:38 yes 14:18:16 http://en.wikipedia.org/wiki/Brunswick_stew 14:18:22 I love brunswick stew. 14:18:24 so goood. 14:19:52 dont make me hungry when there is no food 14:20:52 http://en.wikipedia.org/wiki/Southern_American_cuisine 14:21:02 http://en.wikipedia.org/wiki/Fried_chicken 14:21:15 http://en.wikipedia.org/wiki/Biscuits_and_gravy 14:21:47 http://en.wikipedia.org/wiki/Gumbo 14:21:58 the american quisine picture is a burger, great 14:21:58 http://en.wikipedia.org/wiki/Jambalaya 14:22:05 monqy: yeah I found that funny 14:22:27 http://en.wikipedia.org/wiki/Hushpuppy 14:22:53 * quintopia does not click on food pron 14:23:14 it's informative it has words 14:23:20 don't you want education 14:23:24 food education 14:23:50 i am hungry! 14:24:33 quintopia: http://en.wikipedia.org/wiki/Chicken_and_dumplings 14:24:40 http://en.wikipedia.org/wiki/Cornbread 14:24:47 http://en.wikipedia.org/wiki/Apple_butter 14:24:54 http://en.wikipedia.org/wiki/Chow-chow 14:25:07 http://upload.wikimedia.org/wikipedia/commons/2/23/Ni%C3%A8r_beurre_National_Trust_for_Jersey_2007_a.jpg yum yum 14:25:17 kallisti is hating me :( 14:25:31 http://en.wikipedia.org/wiki/Fried_green_tomatoes_(food) 14:25:40 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 http://en.wikipedia.org/wiki/Sausage_gravy 14:25:51 what am i seeing here monqy 14:26:08 you'd know if you clicked kallisti's links!! 14:26:54 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 or you could just tell me 14:27:06 quintopia: foods 14:27:12 Making black butter in Jersey - wikepid 14:27:20 oh 14:27:21 first image on the appel buter page 14:27:23 kallisti: I'm not sure you can get Google's image chart API to make a spectrogram, sadly. 14:27:48 it takes a metal-melting forge to make black butter it seems 14:28:04 it's okay I could have just drawn a vertical line on a 2D chart somewhere :P 14:28:06 how else would you butter the apples 14:28:11 those things are hard! 14:28:42 we have "apple houses" here 14:28:46 which just sell all apple 14:28:49 stuff 14:29:03 just tons of different kinds of apples, apple cider, apple butter, apple fritters, apple pie. 14:29:10 probably other things made of apples that I didn't know existed 14:29:13 apple chips 14:29:16 oh, yes. 14:29:58 apple sauce 14:30:44 Apple iBook. 14:30:49 no 14:30:52 bad 14:31:02 not very nutritioys 14:31:02 Apple iRack 14:33:35 is that a pun on Iraq .. 14:33:41 yes it is. 14:34:06 apple macintosh, yum yum 14:36:26 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 yecch 14:38:17 chocochip waffles? 14:38:49 garlic chocochip garlic waffles 14:39:00 garlic garlic in a garlic sauce 14:39:20 fizzie: can you order a whole bulb of garlic. 14:39:28 * quintopia dips it in garlic butter 14:39:57 kallisti: It's not on the menu, but I'm pretty sure you could. 14:39:59 maorp 14:40:11 Also there's a viking-themed restaurant chain that sells tar ice-cream. 14:40:19 what 14:40:30 It's not entirely unique, but top Google hits about "tar ice cream" seem to be about it. 14:40:40 tar is not food 14:40:49 http://susan-stepney.blogspot.com/2011/06/tar-ice-cream.html <-- see, #1 hit is some computational blogger blogging about it. 14:41:03 It's not too bad. 14:41:50 wat ice cream tarpit? 14:41:55 is it the smallest ice cream? 14:42:11 The ice cream with the least amount of instructions. 14:42:23 yeah i just read that 14:42:30 she seems to think it is nice 14:42:52 I'm not sure that's what turing tarpit was originally coined to mean. 14:44:08 "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 does it have a citation 14:44:36 no 14:44:39 i dont buy it 14:44:41 "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 other topics include: apple butter and garlic-themed restaurants. 14:45:16 wikipedia............................. 14:45:26 oh no it gives 14:45:29 lolcoad as its 14:45:32 firsst iexampel 14:45:33 no bad 14:45:55 first example should be Malbolge 14:46:40 ('&%:9]!~}|z2Vxwv-,POqponl$Hjig%eB@@>}= 14:47:56 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 As ... blah as Cyanide and Happiness is, I do like the time travel strips, I think 14:52:39 Once a year. Apparently since 2006 14:53:21 S "I like station v3" geo 14:54:40 I was waiting for that to come up 15:00:53 I officially hate commentors on dilbert.com 15:01:19 So far, two people think Oxytocin is a misspelling. 15:02:31 http://dilbert.com/strips/comic/2011-12-31/ 15:05:24 i officially hate dilbert 15:05:36 and scott adams too 15:17:54 Ah yes. 15:18:02 It's that time of year where I have to remember to update copyright lines. 15:19:11 why not just write them so they dont have to be updated? 15:20:19 Because then they wouldn't be legally correct ... 15:23:18 -!- azaq23 has quit (Quit: Leaving.). 15:23:39 under which law? 15:38:44 -!- cswords has joined. 15:39:19 -!- cswords has quit (Client Quit). 15:44:51 quintopia: None I suppose, under Berne you don't need a copyright notice at all *shrugs* 15:45:44 Apparently a copyright notice can defeat a defense of "innocent infringement" 15:46:13 I need a VCS that can tell me when I need to update copyright notices 8-D 15:46:22 I wonder if there's a plugin for Mercurial to do that ... 15:47:02 You could just not put the year into the copyright notice 15:47:18 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 Do I want to know -cafe's opinion of conduits? 16:31:45 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 Hello! 16:40:34 I'm mildy surprised that http://hackage.haskell.org/package/piet exists 16:41:14 -!- Slereah_ has joined. 16:43:33 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 pietiful 16:44:04 fizzie: A few hundreths of kilobytes, eh? 16:44:40 IOW, a few dozen bytes. 16:45:07 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 11:23:17: basically on a channel as experimental as #esoteric, a logbot shouldn't filter out information, not even malformed such 16:45:45 @ask oerjan Pings? NAMES lists? 16:45:45 Consider it noted. 16:46:11 11:31:37: 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 11:33:17: IIRC it's just "C++ as a time-wasting brain exercise". 16:46:24 fizzie: With an eye towards treating it as a functional language. Especially if you do it at compile-time. 16:46:33 11:35:13: I failed at C++ Sudoku for the first time today :( 16:46:33 11:35:13: it is not possible to create a boolean type such that "if (True)" works but 16:46:33 11:35:13: "if (True && 9)" doesn't 16:46:33 I later figured this out, BTW. 16:46:36 @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 Consider it noted. 16:47:16 Gregor: He just said "I know about timed hit^W^Wraw logs" on the next line or so. 16:47:39 Er, not the bit about timed hits. In retrospect, putting quote marks around that was probably a mistake. 16:47:41 Anyway. 16:48:29 Gregor: You /could/ add unknown lines raw to the text logs (past parsing who sent them). 16:48:46 elliott: I /could/ 16:48:51 I /choose/ not to ^^ 16:49:23 12:15:43: * elliott just assumes tswett decoded his CLEVER HIDDEN MESSAGE. <-- ejatdhCHM? that makes no sense man 16:49:23 12:16:48: it's backwards for MHChdtaje. 16:49:23 12:16:52: ah. 16:49:23 yeah 16:49:58 elliott: YunXttm? 16:50:09 i guess so? 16:53:09 :/ 16:53:38 15:00:53: I officially hate commentors on dilbert.com 16:53:44 Sgeo_: You could try not reading dilbert.com. 16:54:02 's better than XKCD. 16:54:22 At least the author of xkcd isn't a scumbag :P 16:54:23 15:18:02: It's that time of year where I have to remember to update copyright lines. 16:54:23 15:19:11: why not just write them so they dont have to be updated? 16:54:23 15:20:19: Because then they wouldn't be legally correct ... 16:54:35 Gregor: Most people just have the year be when the thing was last updated... 16:54:51 Yes, but you have to remember to do that when you /update/ it. 16:55:10 Well, not really :P 16:55:13 hmmm I wonder if I have arthritis, or some kind of joint problem. 16:55:15 You could just not put a year. 16:55:24 15:47:02: You could just not put the year into the copyright notice 16:55:24 Yes, that. 16:55:47 16:43:33: 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 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 fizzie: Wait, what *was* the context for this? 16:56:03 kallisti: Sounds RSIish. 16:56:12 from..... typing?> 16:56:19 I guess I type a lot. and weirdly 16:56:27 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 elliott, one letter programming language names 16:56:45 kallisti, you probably want to get a doctor to look at that. 16:56:54 a doctor? seriously? I'm shocked. 16:56:58 doctors fix medical problems? 16:57:03 Some do 16:57:08 Others just time travel 16:57:11 kallisti, that is at least the goal 16:57:14 I thought they just gave people drugs. 16:57:20 kallisti, if they are doctors in medicine 16:59:56 do you guys have anything like that? 17:00:11 seems like RSI would be common with programmers and whatnot 17:00:45 thankfully I don't have it 17:01:10 hm, maybe I should learn how to type like a normal person 17:01:30 what with 3 fingers on each hand? XD 17:01:37 yes 17:01:47 (I don't think that many people use all five fingers on each hand to type) 17:01:53 I let my middle finger do too much I think. 17:02:01 they kind of dance around the keyboard :P 17:02:11 that's a poor explanation though 17:02:53 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 cya tomorrow 17:03:04 that never works for me 17:03:05 but good night 17:03:32 Vorpal: that doesn't work, you already fucked up 17:03:49 elliott: hi do you ever get RSI you type a lot. 17:04:09 you don't "ever get" RSI, you just "get" RSI 17:04:15 have you considered that it might be carpal tunnel, hth 17:04:26 seriously it's going to be so hard to type differently if that's what the problem is. 17:04:49 install xwrits or sth 17:05:01 "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 ...oh. no I hadn't considered that. but that sounds pretty accurate. 17:05:13 fun. 17:05:30 if you think you have anything like that (a) stop typing and (b) go and see a doctor 17:05:48 or it'll get bad enough that you won't be able to type. 17:05:55 but typing is fun. 17:05:57 type type type 17:07:05 Type if your nose 17:07:11 Nasal tunnel syndrome 17:07:17 s/if/with/ 17:07:25 I typo phonetically... 17:07:25 -!- Vorpal has quit (Ping timeout: 252 seconds). 17:09:08 http://en.wikipedia.org/wiki/Phalen%27s_maneuver this does not cause any symptoms. 17:09:46 oh no -- 160 over 7 :/ 17:10:08 http://en.wikipedia.org/wiki/File:Carpal_Tunnel_Syndrome,_Operation.jpg 17:10:14 this looks fun. 17:21:41 urgh 17:22:19 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 oh by the way if you don't like looking at meaty human insides then don't click that link. 17:22:43 excellent 17:22:44 not that it isn't totally obvious from the filename. 17:22:53 >_> 17:22:54 just sayin' 17:23:08 do you guys actually read links before you click them? 17:24:32 I didn't know how they fixed carpal tunnel :'( 17:25:12 but using sharp things to literally split the problem in half, of course. :P 17:25:16 divide and conquer algorithm. 17:25:21 s/buy/by/ 17:26:12 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 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 i'm looking for a small language to play 17:32:34 what was I even doing with a bonesaw for a surgery involving the abdomen? no idea. 17:32:59 Potion by _why was promising but then I found out that it's unusable 17:33:15 pail 17:33:33 network headache. 17:33:50 pail 17:34:00 it's like MMO coding (also it isn't hosted anymore, but maybe you can change that!) 17:34:11 ? 17:34:52 elliott? 17:35:38 nooga: http://catseye.tc/projects/pail/ 17:36:23 nooga: flogscript 17:36:39 (I'm in a zzo mood) 17:37:12 nooga: if you learn flogscript you'll immediately become a leet golfer 17:37:24 or well, I think that's how it works. 17:40:52 no docs 17:43:59 writen in php 17:44:01 yuck 17:45:13 Why would you want docs to be written in PHP? 18:00:15 Ha, my feature request got promoted from feature request. 18:07:58 Or should that be "demoted". 18:14:33 -!- oerjan has joined. 18:15:40 @messages 18:15:41 elliott asked 1h 29m 56s ago: Pings? NAMES lists? 18:15:41 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 elliott: ok maybe not pings. NAMES lists could be useful. 18:18:11 oerjan: Gregor: You /could/ add unknown lines raw to the text logs (past parsing who sent them). elliott: I /could/ I /choose/ not to ^^ 18:18:58 Gregor: it's also somewhat about not knowing that the information _exists_ in the raw logs. 18:19:34 * elliott sigh. 18:19:40 oerjan: If you're trying to make me want to dust off ch2, it's working :P 18:19:47 yay :D 18:20:31 Depends whether Gregor will allow Haskell onto his bless-ed servers tho >:) 18:21:36 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 -- oerjan "microwave lutefisk" oerjan 18:23:53 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 i only mentioned those two terms together in order to point out you _cannot_ microwave lutefisk. sheesh. 18:24:44 oerjan: yes, and that's why you didn't have any :P 18:24:57 check. 18:25:27 i did, however, have microwave pinnekjøtt. 18:28:03 http://en.wikipedia.org/wiki/Gumbo <-- the creole restaurant i knew about closed years ago :( 18:32:08 @src length 18:32:08 Source not found. :( 18:32:12 fucking piece of 18:32:20 wat 18:32:25 @source length 18:32:26 length not available 18:32:36 What's the difference between src and source? 18:32:38 @src maybe 18:32:39 maybe n _ Nothing = n 18:32:39 maybe _ f (Just x) = f x 18:32:40 Sgeo_: *BZZT* WRONG 18:32:40 @source maybe 18:32:41 maybe not available 18:32:54 @source Prelude 18:32:55 http://darcs.haskell.org/packages/base/Prelude.hs 18:33:03 OH 18:33:09 it's for modules. i also suspect it's very outdated. 18:33:31 like, ghc no longer uses darcs 18:33:40 > maybe undefined id (Just 5) 18:33:41 5 18:33:53 I was expecting it to be overly strict 18:33:54 oerjan: that's irrelevant, darcs.haskell.org hosts git repos 18:34:01 elliott: okay 18:34:15 Sgeo_: it could not be overly strict without explicitly using seq, parametricity... 18:34:41 http://darcs.haskell.org/packages/base/ seems to be a checkout of http://darcs.haskell.org/packages/base.git/ 18:34:59 I guess Haskell doesn't always go left to right in pattern matching? 18:35:53 Sgeo_: sure it does. 18:35:57 -!- ais523 has joined. 18:36:14 But then why doesn't it die on pattern matching ... oh, I think I get it 18:36:18 id a = 42 18:36:27 *foo 18:36:27 Because to pattern match there, it doesn't need to evaluate it 18:36:30 OMG id pattern-matches on its first argument, foo _|_ must = _|_ 18:36:47 pattern-matching doesn't cause any kind of reduction itself, only discrimination 18:36:49 i.e. constructors 18:36:58 Ok, thanks 18:37:02 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 But there are functions in Haskell that are overly strict, and this makes me sad. 18:38:10 oerjan, I get it, thanks 18:38:12 Sgeo_: it annoys me slightly that show for Chars is overly strict 18:38:35 > fix (concatMap show) 18:38:38 show (undefined::Char) 18:38:38 Sgeo_: i take it you read conal's blog or something 18:38:39 mueval-core: Time limit exceeded 18:38:40 > show (undefined::Char) 18:38:41 "*Exception: Prelude.undefined 18:38:57 elliott, I've read the occasional post 18:39:11 wat 18:39:13 > fix (concatMap show) 18:39:17 mueval-core: Time limit exceeded 18:39:30 ...what gave the "? 18:39:44 > fix show 18:39:45 "\"\\\"\\\\\\\"\\\\\\\\\\\\\\\"\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"\\\\\\\\\\\\... 18:40:04 Sgeo_: Oh, I assumed you were referring to 18:40:07 http://conal.net/blog/posts/functional-concurrency-with-unambiguous-choice 18:40:07 http://conal.net/blog/posts/merging-partial-values 18:40:15 http://conal.net/blog/posts/lazier-function-definitions-by-merging-partial-values 18:40:17 http://conal.net/blog/posts/lazier-functional-programming-part-1 18:40:25 http://conal.net/blog/posts/lazier-functional-programming-part-2 18:40:29 elliott, I had unamb-style stuff in mind, yeah 18:40:33 > show (undefined::Char) 18:40:34 "*Exception: Prelude.undefined 18:40:39 But I think I only read some of those 18:40:40 oh wait of course 18:40:52 I don't think it's all that big a deal in practice. 18:41:01 the " is not for the explicit show, but for the implicit one lambdabot uses on the resulting String 18:41:07 I'm not the biggest fan of unamb, and the left-to-right behaviour is at least predictable. 18:41:20 Also, it really needs to be in the language; HasLub sucks. 18:41:31 oerjan: i could have told you that 18:42:32 "The unsafePerformIO is actually safe in this situation because amb is deterministic when the precondition of unamb satisfied." 18:42:42 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 19:43 oerjan> and the mueval-core timeout prevents any partial result from being printed at all. or... 18:48:32 19:43 oerjan> > "test" ++ fix id 18:48:38 > "test" ++ fix id 18:48:42 mueval-core: Time limit exceeded 18:50:48 WTF 18:50:53 fix isn't in Prelude? 18:50:59 @hoogle fix 18:50:59 Control.Monad.Fix module Control.Monad.Fix 18:51:00 Data.Fixed module Data.Fixed 18:51:00 Data.Function fix :: (a -> a) -> a 18:51:00 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 `welcome xandy 18:54:47 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 `welcome everyone 18:56:23 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 HackEgo: Why thank you. 18:57:38 `welcome FireFly 18:57:39 oops 18:57:41 `welcome fizzie 18:57:42 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 `swat FireFly 18:57:44 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 ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: swat: not found 19:00:01 oerjan holds the swatopoly. 19:05:37 -!- augur has quit (Remote host closed the connection). 19:09:56 hmm, there's no way i'm getting 200 rep today 19:11:10 they have finally caught on to you being a disreputable scoundrel 19:12:17 quite. wait, didn't you get mad at me for calling someone a scoundrel once? 19:13:31 i cannot possibly have done such a thing *erases evidence* 19:14:29 oerjan: It would be quite a scoundrely thing to do. 19:14:30 if i did, it would have been under circumstances where it might conceivable have been interpreted seriously. 19:14:38 *ly 19:14:40 -!- Ngevd has joined. 19:15:05 Hello! 19:15:09 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 (2009-09-07.) 19:15:22 oerjan: hm if contravariant functors are (b -> a) -> f a -> f b, are normal functors covariant 19:15:38 ah a newbie. yes, it's a rather bad first channel impression. 19:15:39 oerjan: oh right i remember, you had no idea that "scoundrel" was old-timey-sounding :P 19:16:23 yes and maybe. 19:16:42 i sure was hyper that day 19:16:45 * elliott stops logreading 19:17:04 oerjan: ok, so is there a name for class Cocontrafunctor f where wtfmap :: (a -> b) -> (b -> a) -> f a -> f b 19:17:09 where you have both covariant _and_ contravariant parts 19:17:10 e.g. 19:17:26 data F a b = F (b -> a) (a, b) 19:17:30 i cannot fathom to whom scoundrel would be old-timey-sounding 19:17:34 Cocoafunctor, the sweetest of functions. 19:17:49 oerjan: Allegedly it "evokes images of top hats and curled moustaches." 19:17:56 What doesn't. 19:18:01 (You realise oerjan was punning?) 19:18:34 -!- olsner has joined. 19:19:06 That wtfmap looks useless 19:19:12 I mean, what's the b -> a for? 19:19:18 Sgeo_: 19:19:18 where you have both covariant _and_ contravariant parts 19:19:18 e.g. 19:19:18 data F a b = F (b -> a) (a, b) 19:19:21 hth hand 19:19:37 you can't give a Functor or Contrafunctor instance for F, but you can give it a Cocontrafunctor instance 19:19:51 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 indeed I believe _every_ haskell ADT of the right kind has a Cocontrafunctor instance 19:20:06 Sgeo_: contramap :: (b -> a) -> fa -> f b 19:20:23 * Sgeo_ blinks 19:20:24 Ah, ok 19:20:35 elliott: oh hm wait that wasn't what you were asking 19:20:37 Sgeo_: e.g. (a -> Bool) has a Contrafunctor instance 19:20:38 oerjan: what question? I thought bifunctors were of kind (* -> * -> *) 19:20:44 http://hackage.haskell.org/packages/archive/bifunctors/0.1.2/doc/html/Data-Bifunctor.html 19:21:06 -!- Klisz has joined. 19:21:07 elliott: i just assumed you were asking about a question i'd recently seen in -cafe or somewhere 19:21:21 lol 19:21:47 hmm... that wtfmap has a flaw 19:21:51 or rather 19:21:58 I don't know what the law has to be to stop you writing 19:22:20 wtfmap f g (a,b) = (a, f (g (f b))) 19:22:31 which is ofc not allowed, you should only apply f and g to the right positions, once 19:24:46 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 oerjan: er what way 19:25:22 sorry, i'm dumb :( 19:25:46 @free f :: (a -> b, a, b) 19:25:46 (forall p q. h . p = q . g => k p = q) => $map_Triple k g h f = f 19:25:58 wtf 19:26:47 that's ugly 19:27:03 @free f :: (a -> b, a) 19:27:03 (forall p q. h . p = q . g => k p = q) => $map_Pair k g f = f 19:27:18 ok maybe not 19:27:29 @free f :: a -> b 19:27:30 h . f = f . g 19:27:32 no language 19:28:46 @free f :: [a] -> a 19:28:46 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 what are the Functor laws again? including the ones that are impossible to violate in Haskell 19:31:02 oh hmm, it's just fmap id = id isn't it, and that's a free theorem 19:31:46 Surely with unsafeCoerce and unsafePerformIO, nothing is impossible to violate? 19:32:00 (Well, some things may be impossible to violate) 19:32:27 (Like the whatchamacallit that says f _|_ = non-bottom and f non-bottom = _|_ is impossible 19:32:52 monotonicity of information, or whatever 19:33:04 it's actually stronger than that 19:33:14 f _|_ [= f x for all x 19:33:19 where [= is a symbol i can't type 19:33:25 |_|| but sideways 19:33:42 Lessthanorequalto? 19:33:43 <= 19:33:56 ...no. 19:34:08 if you think |_|| turned on its side looks like < with _ below it, you're blind 19:34:20 it's less-than-or-equally-defined-as 19:35:05 The Commodore logo?! (Yeah, yeah, that's even further away; but [= is not much farther than the common C=.) 19:37:33 =c 19:38:06 elliott: fmap id = id and fmap (f . g) = fmap f . fmap g 19:38:47 it's not _entirely_ a free theorem btw, you could do fmap' f = fmap (f $!) 19:38:52 or wait hm 19:38:58 Wow, I think I've just understood the . thingy 19:39:09 that doesn't do anything to id 19:40:13 (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 oerjan: hmm... so wtfmap id id = id, wtfmap (f . g) (h . i) = wtfmap f h . wtfmap g i 19:40:39 @free (a, a -> Int) 19:40:40 Pattern match failure in do expression at Plugin/Free/FreeTheorem.hs:54:20-34 19:40:44 argh 19:40:44 that second one might ban wtfmap f g (a,b) = (a, f (g (f b))), dunno 19:40:50 @free f :: (a, a -> Int) 19:40:51 (forall k. h (k . g) = k) => $map_Pair g h f = f 19:41:57 Finally they fixed it I can remove tags from the git 19:43:18 elliott: i suspect you want some swapping in the latter equation 19:43:56 wtfmap (f . g) (h . i) = wtfmap f i . wtfmap g h 19:44:02 er, right 19:44:29 hmm 19:44:36 and of course only if the right side types 19:44:47 duh :P 19:46:21 it _does_ look like a categorical bifunctor map on the incoming end. there's probably some name for it. 19:47:48 that is, if it was wtfmap :: (a -> b) -> (a' -> b') -> bf a b' -> bf b a' it would obviously be one 19:48:54 so what is the categorical term for a bifunctor with its output parameters smushed together :P 19:49:18 hm... 19:49:54 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 oerjan: i find that a fairly odd way of thinking about it, even if the types do match up :P 19:50:00 hm 19:50:04 so turn 19:50:19 data F a = F (a -> Bool) a 19:50:20 into 19:50:23 data F a b = F (a -> Bool) b 19:50:24 ? 19:50:40 (incidentally strict fields can mess up the exact functor laws, i found the other day) 19:51:02 elliott: yeah 19:52:27 oerjan: hm I suppose you could do 19:52:44 class Cocontra f where type Split f :: * -> * -> *; to :: f a -> Split f a a; fro :: Split f a a -> f a 19:52:45 or something 19:53:01 heh 19:53:22 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 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 oerjan: How do strict fields mess up the exact functor laws? 19:58:15 -!- DCliche has joined. 19:59:44 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 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 zzo38: for many types such as [] and Maybe, the laws work always 20:02:23 Yes 20:02:49 But still, that is simply that you use strict stuff, can cause lazy stuff to stop working 20:02:55 It is expected. 20:06:43 Feh, OS X's X11's fonts seem to have become screwy. 20:11:45 150 over less than 4... yeah, not happening today. 20:12:40 Hahahah a couple screaming, cursing and crying at each other in an airport. 20:12:52 Hil...arious? 20:12:58 I'm glad I so enjoy the suffering of others 8-D 20:20:05 no language for me 20:20:34 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 It's Alan Turing year 20:55:22 Let's create as many imaginitively Turing-Complete esolangs as we can! 20:57:01 isn't that what we always do? 20:57:13 Let's make even more! 20:58:44 have we had an imaginatively TC esolang for a while? 20:58:57 Possibly Brook? 20:59:02 pretty much every TC lang is TC for one of a few simple reasons 20:59:07 It's not been proven TC yet 20:59:10 Also, Geom? 20:59:17 hmm, remind me of how http://esolangs.org/wiki/Brook works again? 21:00:59 It's a simple queue based linear-bounded automaton except for the c and C commands 21:01:22 c pushes a char into the next stream, C pushes a number 21:01:44 As soon as a stream has enough characters to be executed unambiguously, it is 21:02:04 and the original keeps executing? or stops? 21:02:20 The original pauses until the one below it can't keep on going 21:02:28 ah, OK 21:02:45 so it's a bit like Muriel, but more awkward 21:02:49 It's got no explicit conditional or infinite loops 21:03:01 Yes 21:03:08 Or is implicit the word I want? 21:04:02 Point is, it's tricky to make it loop forever or on a condition 21:04:21 right, I see 21:04:42 so the problem is, that it has loops, but it's not obvious that it has conditionals 21:05:28 Conditionals are comparatively easy 21:05:34 It's infinites that aren't 21:06:10 Well, I say "easy" 21:06:45 It's impossible to give any information to a higher stream 21:07:04 Unless you give the user instructions to input any output 21:07:08 Which is cheating 21:08:09 To do a conditional, you just do C, followed by instructions to write the rest of the program 21:08:26 As 0(blah) doesn't run blah, but 1(blah) does 21:09:47 The article really needs a complete rewrite 21:10:33 Esolangs?? What is this witchcraft? 21:10:55 I had a really weird dream last night involving witchcraft 21:10:58 And US politics 21:11:04 `quote dream 21:11:06 Ngevd: well, the idea is you don't go to higher streams at all, surely? 21:11:08 190) catseye: Please wake up. Not recorded for this timezone. The big spider is not your dream \ 285) 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) Gregor, yeah, but Purdue has poultry science facilities beyond the dreams of avarice. 21:11:09 just do it Muriel-style 21:11:18 Hmm, yes 21:11:25 `quote singularitarians 21:11:27 786) 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 `quote malaria 21:11:40 497) itidus20: i saw a dancing cgi skeleton named malaria. i danced and played with him. 21:11:56 `quote balloon 21:11:59 No output. 21:12:14 `quite 21:12:17 ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: quite: not found 21:12:21 `quote 21:12:25 412) The eigenratio of reality has to be enormous, though. 21:12:32 `? Taneb 21:12:36 Taneb is not actually Ngevd, no matter what you may have heard. 21:12:41 `? Ngevd 21:12:45 B./mf\j.R.X-8.t.k`fc.:{bR;OF.b:n2bUa!c. 21:13:05 That garble is so reassuring 21:13:43 Weren't you there when that was defined? 21:13:48 Yes 21:13:48 `ls 21:13:52 Mineso \ bin \ canary \ karma \ lib \ main \ min.sh \ paste \ quotes \ share \ typetest.hs \ wisdom 21:13:58 `ls -l wisdom 21:14:02 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 21:15:02 `ls wisdom 21:15:05 ​? \ 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 hm 21:15:30 no phantom hoover with one underscore? 21:15:36 `? phantom_hoover 21:15:39 Phantom_Hoover is a true Scotsman and hatheist. 21:15:50 nooga hate OS X. NOOGA SMASH. 21:15:55 oh, clearly it just ended after a while 21:16:23 `run ls wisdom | paste /dev/stdin 21:16:27 http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.24186 21:16:30 (I know, I have no idea what I'm doing.) 21:16:35 `? haskell 21:16:39 Haskell is preferred by 9 out of 10 esoteric programmers. Ask your GP today! http://learnyouahaskell.com/ 21:16:44 `? oklopol 21:16:48 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 That's inaccurate. 21:17:00 `? friendship 21:17:03 friendship wisdom 21:17:04 Oh, wait, do they call them GPs in the states? 21:17:11 `? u 21:17:13 u monad? 21:17:17 `? monad 21:17:20 `? monad 21:17:20 Monads are just monoids in the category of endofunctors. 21:17:24 Monads are just monoids in the category of endofunctors. 21:17:25 `? monoid 21:17:28 Monoids are just categories with a single object. 21:17:36 :D 21:17:37 `? misspellings of croissant 21:17:40 misspellings of crosant? ¯\(°_o)/¯ 21:17:58 `run cat wisdom/mis* 21:18:01 misspellings of crosant? ¯\(°_o)/¯ 21:18:19 `? quine 21:18:22 ​`? quine 21:18:32 `? zzo38 21:18:35 zzo38 is not actually the next version of fungot, much as it may seem. 21:18:49 `? banach-tarski 21:18:53 ​"Banach-Tarski" is an anagram of "Banach-Tarski Banach-Tarski". 21:18:57 :D 21:19:00 `? php 21:19:03 PHP is preferred by 9 out of 10 idiots. Ask your GP today! [Website redacted] 21:19:14 `? wiki 21:19:17 The wiki is at http://esolangs.org/wiki 21:19:24 `? you 21:19:27 you a haskell 21:19:32 `? HackEgo 21:19:33 `learn PHP is preferred by 9 out of 10 idiots, and past elliott. Ask your GP today! [Website redacted] 21:19:35 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 I knew that. 21:20:26 `cat wisdom/* | paste /dev/stdin 21:20:29 cat: wisdom/* | paste /dev/stdin: No such file or directory 21:20:34 `run cat wisdom/* | paste /dev/stdin 21:20:40 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 Oh, of course, ngevd. 21:21:47 Have I caused bad things 21:21:59 `? Ngevd 21:22:02 ​Y.su).R.$f1&3W....!d[Q.$Q.$zKMP5'Ϫ#.e.3B>u.JS׽βMAlʰ&Hpaj0..Dz 21:22:33 http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.11204 <- head -n 1 wisdom/* 21:23:41 Uh 21:23:45 Why is stuff crashing on me? 21:23:47 -!- Sgeo has quit (Remote host closed the connection). 21:23:57 ... 21:25:50 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 Blame Sgeo 21:26:14 `? Sgeo 21:26:17 Sgeo invented Metaplace sex. 21:26:47 uuuh 21:27:12 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 Phantom_Hoover: *urandom 21:27:22 Argh, yes. 21:27:38 -!- Sgeo has joined. 21:28:06 How hard would it be to make something like HackEgo, but DOS-based? 21:29:23 reasonably hard, I think 21:29:37 DOS is not all that good in terms of security features 21:31:43 easy 21:31:45 just run it in a VM 21:32:24 there are DOS VMs that run on DOS? 21:33:32 do they have to run on DOS? 21:33:44 it wouldn't be DOS-based if they didn't 21:33:47 but yes, I suspect so 21:34:04 ais523: how do you know HackEgo doesn't run on Windows? 21:34:33 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 you inserted a word "purely" not in Ngevd's statement 21:35:17 elliott: I was disambiguating what I said; I interpreted Ngevd's statement with that possible meaning 21:37:07 fair enough 21:37:08 I doubt he meant that 21:37:54 I think elliott is thinking what I'm thinking 21:38:08 And now I've got the theme to Bananas in Pyjamas stuck in my head 21:38:35 sure Ngevd, but where are you going to find seven goats and a hippopotamus at this time of night? 21:39:15 hexham 21:39:29 how convenient. 21:39:33 oerjan, argh, what's that a reference to. 21:39:44 Pinky and the Brain 21:40:14 a very loose reference 21:40:57 Bananas, in Pyjamas, are coming down the stairs 21:41:06 Bananas, in Pyjamas, are coming down in pairs 21:41:17 Bananas, in Pyjamas, are chasing teddy bears 21:41:32 Because on Tuesdays the try to cath them unawares 21:41:38 s/the/they/ 21:42:05 But "cath" still? 21:42:19 s/cath/catch/ 21:42:20 it's a medical procedure 21:42:48 I think, in retrospect, it is obvious why I am so weird 21:43:16 Yes, it's the bananas. 21:44:20 Ngevd: You're not that weird. 21:44:40 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 Ngevd: gah, I've heard that too 21:48:02 is it a nursery rhyme? 21:48:09 it sort-of sticks in the head because it's so stupid 21:48:12 It's the theme to a children's TV show 21:48:25 Bananas in Pyjamas 21:48:30 I used to love it when I was little 21:55:54 -!- augur has joined. 21:59:41 do you think that LOOSE is a good name for a military grade RTOS? 22:00:04 No 22:02:05 oh 22:02:20 Because it looks too much like LOSE 22:13:32 LooseThos, on the other hand... 22:18:43 lossy thossle 22:24:16 I made a TeX program for making binary specials in DVI files 22:25:02 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 elliott, kallisti Phantom_Hoover update 22:34:37 And Ngevd 22:35:23 * Sgeo mentally notes to add Ngevd to the update list. 22:36:19 Could we define a hackego thing so we can just do `mspa and it will say "[names] update" 22:36:55 no 22:37:24 elliott hates automation of tasks 22:38:17 yes 22:38:22 also abbreviation 22:40:17 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 :t (<#>) 23:09:55 Not in scope: `<#>' 23:16:27 Ngevd, elliott Phantom_Hoover kallisti update 23:16:49 Thanks 23:27:27 yw 23:27:31 -!- oerjan has quit (Quit: Good night). 23:27:38 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 elliott, kallisti Phantom_Hoover update no Ngevd because he's not here 00:12:12 -!- augur has joined. 00:12:58 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 `cat wisdom/coppro 00:28:01 coppro prefers his nickname, Pooppy. 00:28:16 `cat wisdom/ngevd 00:28:20 ​=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 coppro: *`? coppro 00:37:50 elliott: what 00:41:58 `? coppro 00:42:01 coppro prefers his nickname, Pooppy. 00:42:15 * Sgeo assumes that Gregor set that 00:42:16 ah 00:42:18 meh 00:42:23 Sgeo: you assume correctly 00:42:40 `log `learn coppro 00:43:08 2012-01-02.txt:00:42:40: `log `learn coppro 00:46:31 @hoogle atomicModifyIORef 00:46:32 Data.IORef atomicModifyIORef :: IORef a -> (a -> (a, b)) -> IO b 00:55:48 Sgeo: 16:08:22 Is hSetBuffering stdin NoBuffering >> hSetBuffering stdout NoBuffering supposed to work on Windows? 00:55:49 Sgeo: No. 00:56:00 http://hackage.haskell.org/trac/ghc/ticket/2189 00:56:14 ty 00:58:00 elliott: Are you reading #haskell logs? 00:58:08 Instead of just joining the channel? 00:58:16 Well, I suppose you're there now. 00:58:26 If only there was a mechanism for posting directly into the logs. 00:59:00 shachaf: I read logs to figure out why it was so silent. 00:59:44 elliott: Curses, you've figured out our "silence as soon as elliott joins the channel" plan. 01:03:07 it would be terrible if someone invented a mechanism to post directly into the logs 01:03:11 such as by saying things in the channel 01:05:21 coppro: http://www.youtube.com/watch?v=xECUrlnXCqk 01:09:03 * coppro bookmarks 01:09:15 elliott, :( at bug lasting for so long 01:11:03 Sgeo: It's the touch of Deewiant. 01:11:11 Every compiler bug he touches never gets fixed, ever. 01:11:16 I know this because n=2. 01:18:06 The way too fix "writeFile complains about too-many-open-files" is obviously to convert Char to Word8. 01:18:22 WTF? 01:19:05 shachaf: His message implies to me that he hadn't actually written it yet. 01:19:14 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 I think "I've" should be "I'll". 01:30:17 WTF, Cracked only started in its current form in 2007? 01:30:32 -!- Darth_Cliche has joined. 01:31:02 It's gone from 'crappy ripoff of Mad' to 'crappy ripoff of Maxim' to 'respected(ish), well-known website' very quickly. 01:31:39 FSVO respected. 01:32:28 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 New rule: Balance ":-(" and ":-)" smileys. 01:42:51 noses :-( 01:43:02 :-( :-( :-( 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 Sgeo: Also seriously why don't you just implement the network protocol. 01:44:35 It's a terrible library for a good game. 01:44:44 elliott, against the TOS I think. 01:44:51 Also, I don't know it 01:45:04 Sgeo: Against the TOS in a completely indistinguishable way. 01:45:09 Also, no, it's a terrible library for a terrible game. 01:45:32 elliott, there are things you cannot do with the SDK that you can do with the network protocol.. 01:47:09 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 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 TeX can make file with binary specials although DVItype will show a message about non-ASCII specisl if you do that. 01:58:57 shachaf can't make file with binary specials. 02:00:21 Binary specials! Eight bits for the price of seven. 02:01:06 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 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 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 Well, #haskell is still bad. 02:09:51 elliott: Maybe it's because zzo38 is no longer in there. 02:10:13 Yes. 02:12:14 elliott, am I helping or hurting? 02:12:25 Why do people ask questions like that? 02:13:11 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 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 shachaf: We have consensus. 02:44:25 elliott: Questions like what? 02:45:39 -!- oklopol has joined. 02:45:42 oasijfoiasjdfoaijwrglkjwelgkjweaklgja 02:45:47 okokokokokokokokokokokokoko 02:45:50 okokokokokokokokoko 02:45:52 okokokokokko 02:45:54 ooijoijadj 02:50:02 hi oklopol 02:50:08 shachaf: Like elliott, am I helping or hurting?. 02:50:19 oklopol: how many phds do you have now 02:50:24 hi elliott, are you the same elliott i talked to last time i was here? 02:50:27 no 02:51:00 you really look like him though 02:51:10 i have zero (0) phds 02:51:16 :( 02:51:20 what 02:51:21 lol 02:51:25 still? seriously? 02:51:28 yes. 02:51:32 are you in a university yet? 02:52:00 well no, i'm skipping the university thing and just getting the phd. 02:52:07 oh okay 02:52:07 because i'm efficient, unlike you 02:52:50 elliott: Don't PhDs typically involve universities too? 02:53:18 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 i have made peace with failing at life. 02:53:26 Of course people like oklopol never find out the real truth. 02:53:38 They must resign themselves to the fake truth. 02:53:55 yes, i just do what people tell me to and try to make the best of it. 02:54:26 elliott: Direct from The Elliott PhD Authority? 02:54:29 the drugs help 02:54:39 and the fight club 02:55:08 shachaf: Yes. 02:56:36 shachaf: University of Phoenix, obv 03:00:20 shachaf: I fixed a silent type error in some unsafeCoerce-using code today. 03:00:24 Thank god I use Haskell! 03:01:44 -!- Klisz has joined. 03:04:29 -!- DCliche has quit (Ping timeout: 252 seconds). 03:07:41 elliott: Was it *your* unsafeCoerce-using code? 03:08:07 If so, I have no sympathy for you. 03:08:19 i have enough sympathy for everyone 03:08:40 shachaf: Yes. 03:08:44 shachaf: Well, sort of. 03:08:52 Take oklopol's sympathy, then. 03:08:56 I wrote about a third of it. 03:08:56 -!- NihilistDandy has joined. 03:09:07 Did you introduce unsafeCoerce to it? 03:09:20 No. But I did suggest doing so. 03:09:25 Although so did other people at the time too. 03:09:37 (It previously abused an IORef and unsafePerformIO for the purpose.) 03:09:45 (Not the polymorphic wossname trick, though.) 03:09:57 It should be possible to implement ST with just unsafeCoerce and Any, right? 03:10:09 And no other functions or types? No. 03:10:17 You'd need (->) at the very least. 03:10:33 I meant, as the only unsafe features. 03:10:41 All the safe ones allowed too 03:10:51 Besides ST 03:11:23 You can implement ST with just unsafePerformIO, too. 03:11:33 But yes, you can construct STMap with unsafeCoerce and Any. 03:11:43 shachaf: Did you hear reactive-banana is getting dynamic event switching??? 03:16:07 -!- DCliche has joined. 03:17:14 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 I could forward that suggestion onto the developer if you'd like. 03:19:28 you should 03:20:25 -!- Klisz has quit (Ping timeout: 276 seconds). 03:20:38 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 we love you oklopol 03:22:05 maybe i should've said epimorphism since the term extension is only used for morphisms of dynamical systems afaik. 03:22:15 (epimorphism instead of surjectiom) 03:22:19 *surjection 03:22:28 speaking of math, i watched an episode of numb3rs today 03:22:54 did you see the irc boats 03:23:20 the first episode was more like 57471571c5 03:23:35 the irc boats aren't in the first ep 03:24:22 `addquote speaking of math, i watched an episode of numb3rs today the first episode was more like 57471571c5 03:24:25 791) speaking of math, i watched an episode of numb3rs today 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 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 congratulations, you have now seen every episode of numb3rs 03:26:53 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 so he was like omgomgomg so simple and predicted *two* zones 03:27:43 and one was where he lived and one was where he went to work 03:28:42 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 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 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 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 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 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 nope 04:53:08 The rules are the same as two players, except that passing is not allowed. 04:56:43 passing should be allowed imho 04:57:48 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 cool 04:58:21 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 zzo38, you could also limit the number of times you can pass? 05:01:18 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 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 istr that 05:34:07 I think Parsec's "choice" function should really belong to Control.Applicative instead. 05:34:39 It is a fold with <|> 05:39:21 @hoogle (<|>) 05:39:21 Control.Applicative (<|>) :: Alternative f => f a -> f a -> f a 05:39:22 Text.Parsec.Prim (<|>) :: (ParsecT s u m a) -> (ParsecT s u m a) -> (ParsecT s u m a) 05:39:22 Text.ParserCombinators.Parsec.Prim (<|>) :: (ParsecT s u m a) -> (ParsecT s u m a) -> (ParsecT s u m a) 05:40:06 Sgeo: They are all the same, Parsec's one is just for Parsec only 05:40:29 zzo38, I just wasn't certain that <|> was in Control.Applicative 05:55:13 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 And why did they define their own operators with the same names and functions as the Control.Applicative ones anyways? 06:05:33 zzo38: asum 06:05:35 @hoogle asum 06:05:36 Data.Foldable asum :: (Foldable t, Alternative f) => t (f a) -> f a 06:05:49 zzo38: and because Parsec is actually the source of the Alternative operators 06:05:53 so, historical reasons 06:06:13 O, that is why. Shouldn't they fix it by now, though? 06:06:37 they should probably re-export the polymorphic versions 06:06:50 elliott: Yes, that is probably what they should do. 06:07:54 submit a patch, it'd be like a five-line change :) 06:10:25 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 is infinity a stream? 06:24:33 hi 06:24:45 infinity is not a stream because that question is meaningless. 06:25:08 Note to self: Suggest strict state monad to apfelmus. 06:25:24 ais523: jokes are not known for their factual accuracy 06:25:48 elliott: but it could be both a joke /and/ factually accurate with just two more lines 06:25:54 then it'd be both amusing /and/ useful 06:26:14 elliott: stand up comedians tend to employ this kind of humor, in fact. 06:26:27 "the truth is funny" is kind of stuff. 06:26:29 -is 06:26:35 or to put it another way, the joke's funnier if it's based on actual facts 06:27:44 but, then again, most of it is just incorrect sexist/racist bullshit so... 06:27:49 maybe the truth isn't very funny. 06:28:23 ais523: it would then be a /bad/ joke 06:28:27 because the timing would be completely ruined 06:28:58 elliott: OTOH, I think the joke's much funnier if there are three commands, and that's the first 06:29:06 it's only funny if it's true 06:29:30 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 how is it untrue 06:30:04 ais523: the command would give you a gentoo installation assuming there are no stupid mistakes in it 06:30:07 there are two other commands, but they just aren't provided 06:30:17 providing the other two would ruin the timing i agree 06:30:28 the other two commands are presumably system configuration, since that one already installs openoffice :) 06:30:38 you'd give them later on in the same quote 06:30:41 after the comedic timing 06:30:44 ais523: yes, which would ruin the joke 06:30:53 perhaps even double-linebreak and give a "for the interested reader" PS thing 06:31:00 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 because to people who aren't ais523, that's really, really boring 06:31:15 then the joke is how bad the original joke is ruined 06:31:16 and will ruin the previous enjoyment of the joke 06:31:18 this is not really complicated 06:31:22 elliott: even a link would be enough 06:31:29 * to ruin the joke 06:31:34 hey, look at me jumping out of this ridiculous conversation -> 06:31:53 don't leave me allone / im fallow suit 06:32:03 Fallow Suit, famous comedian 06:36:00 -!- Darth_Cliche has quit (Quit: SLEEP, GLORIOUS SLEEP). 06:39:21 ~/src/reactive-banana/reactive-banana/src/Reactive/Banana 06:39:22 a good path 06:47:43 it'd be bizarre even without the repetition 06:47:53 I take it the ~ there means home dir, not an actual directory called ~? 06:48:03 alt-f2 on this computer interprets it as the latter, which is annoying 06:48:34 former 06:48:39 what's bizarre apart from the repetition 06:57:35 This is another use of <*> operator: parseInt = option id (negate <$ char '-') <*> (read <$> some digit); 06:57:40 ais523: ? 06:58:08 elliott: if I alt-f2 and then use a ~ in either the command to run or an argument to it 06:58:11 it's interpreted as a literal ~ 06:58:17 not expanded to /home/ais523 06:59:42 ais523: it'd be bizarre even without the repetition what's bizarre apart from the repetition 06:59:56 elliott: oh, the name "reactive banana" 07:00:27 well, "reactive" is taken :) 07:03:39 oh hmmm I need to start thinking about taxes. 07:06:37 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 This is already more than most other MML that I know of. 07:09:33 Maybe another thing I should have is multiple notes in parentheses for making chords 07:09:58 Does this look like good so far? 07:10:59 yes, assuming you can double shift octaves and such 07:11:17 also an absolute octave notation would be good. A4 07:11:24 Yes, you can include multiple ' or , to multiple shift octaves, or you can use persistent octave shifts such as < and > 07:11:35 unless you plan to reserve that notation for things like chords. 07:12:07 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 And use O and a number to persistent select an octave. 07:13:49 hmm, i should go to bed 07:14:21 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 zzo38: you'd also want a way to select time signature so that A4 has meaning 07:14:47 also 07:14:52 A4. could specify a dotted quarter note. 07:15:58 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 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 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 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 I'm sure Haskore can output to a number of different formats 07:18:06 oh dude there's a csound backend for HasSound 07:18:26 The lowercase words commands probably I can make most of them in Italian since music notations commonly uses Italian. 07:19:57 zzo38: surwe. 07:20:04 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 i'm italian 07:20:09 (not treu) 07:21:02 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 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 If you have used TeX, what in your opinion, are what makes TeX an excellent typesetting program? 08:03:33 (Or bad, if that is what it is to you) 08:03:45 it's bad because hitler uses it 08:04:08 Hitler uses TeX? 08:04:56 That isn't a good reason anyways 08:06:09 he might! 08:06:26 It still isn't a good reason 08:08:32 Have you used TeX at all, anyways? 08:12:53 yes 08:14:40 Is it good for you? 08:14:55 maybe! 08:15:45 How many kind of its features have you used and what other things have you done with it? 08:16:11 elliott: Bet you didn't expect the TeX inquisition. 08:17:45 fizzie: i did not :( 08:20:40 elliott, kallisti update 08:32:29 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 Libraries I make in Haskell are public domain but for executables I will usually want GPL 08:34:30 (Although Haskell Swiss Ephemeris library is GPL because Swiss Ephemeris itself is GPL) 08:36:09 sure 08:37:57 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 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 which jurisdictions have public domain and which ones don't? 08:41:21 I know US has it, but that is all I know 08:41:54 germany doesnt iirc 08:42:01 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 ah 08:42:26 I guess it would be prudent to find out if Sweden has it for me. 08:43:26 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 @tell elliott test 08:43:55 You can tell yourself! 08:43:58 ugh 08:44:08 elliott, so you got a message? 08:44:09 -!- elliott has changed nick to colloinkgravisom. 08:44:11 or is the message typoed? 08:44:28 @tell olsner test 08:44:28 You can tell yourself! 08:44:35 no you can't 08:44:38 since it didn't record it 08:44:45 of course you could using other channels 08:44:57 so I guess it is kind of ambiguous if it is typoed or not 08:45:00 the point is that I can tell myself without using lambdabot 08:45:26 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 You can also ask someone else to do it for you, if necessary 08:45:58 olsner, I guess so yeah 08:46:13 @tell lambdabot does this work? 08:46:13 Nice try ;) 08:46:18 nope 08:46:41 arguably that should go to whoever runs the bot 08:46:48 cale 08:46:48 colloinkgravisom: You have 1 new message. '/msg lambdabot @messages' to read it. 08:46:53 colloinkgravisom, right 08:47:10 Does it have anything like the ADMIN command of IRC? IRC has ADMIN command tell you the information 08:47:28 does that actually work I wonder 08:47:34 hm it does 08:48:10 @messages 08:48:10 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 don't dreg up the past lambdabot 08:49:47 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 ah, kallisti counting bottoms, #haskell's favorite pastime that 08:50:15 is it 08:50:45 maybe not *the* favorite, but it's high up on the list anyway 08:52:20 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 that was oerjan. 08:53:29 Yes, I think it was oerjan 08:54:10 Do you think it is a correct zipper? Or is it a correct derivative but not a correct zipper? 08:54:17 And why? 08:58:05 ls 08:58:09 err wrong computer 08:58:35 (I'm using synergy and if fucked up my input focus somehow) 09:09:16 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 Deewiant, what is FRP and LTL in this context? 09:24:27 functional reactive programming / linear temporal logic 09:24:30 ah 09:24:32 Functional reactive programming and linear temporal logic respectivelyi. 09:24:34 -i 09:25:31 -!- Ngevd has joined. 09:30:58 Hello! 09:30:58 @ping 09:30:58 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 Hello! 09:47:27 hey. 09:48:34 Today's xkcd is alright, except for the punchline 09:49:29 -!- FireFly has quit (Ping timeout: 240 seconds). 09:50:06 http://xkcd.com/997/ I like this one 09:50:27 I missed the joke 09:50:46 Ngevd, in the one kallisti linked? Same 09:50:55 I guess it is some US politics joke or something? 09:51:24 kallisti, is that so? 09:51:43 I thought it was a quiz show? 09:51:52 what was? 09:51:59 yes it's an incredibly lame joke about a radio quiz show in the US. 09:52:05 that only old people and nerds listen to. 09:52:07 ah I see 09:53:17 it's funny though because any newsworthy events involving Peter Sagal would basically have to have a headline following that format. 09:53:24 it's required. 09:53:27 I see 09:54:57 there's basically nothing political about NPR, except recently Republican media seems to think NPR is liberal. 09:55:05 when it's just like... not stupid. 09:55:11 not stupid = liberal, I guess. 10:00:06 actually NPR has been known to fire people for displaying a political bias in their personal life. 10:00:38 I don't see the issue as long as it doesn't affect them in their profession 10:01:05 there's not one. I think NPR is just really strict about it for public relations. 10:01:50 but it could easily backfire. 10:01:59 oh? 10:02:25 yes firing people for publically displaying opinions probably isn't good press. 10:03:12 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 hm 10:05:33 but freelancers is probably like... the majority of NPR's employees. 10:05:41 because that includes a lot of people that work for NPR stations. 10:07:15 Occupy #esoteric. (And do what, exactly?) 10:07:52 fizzie, talking about esolangs all the time? 10:07:54 that could work 10:08:54 I guess as a protest of all the non-topicalness that goes on here it could work. 10:09:00 indeed 10:09:39 !perl $_ = "test"; s/(.)./@/; print $1 10:09:41 t 10:09:46 hm 10:10:03 * kallisti has never accessed a capture group from a substitute, actually. 10:10:08 so I wasn't sure if it actually did that. 10:10:42 Do you mean to say you have never used a $n in the replacement part of a s///? 10:11:47 oh hmm... maybe I have. 10:11:50 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 !perl print [] == [] 10:24:55 No output. 10:24:57 !perl print [] eq [] 10:24:58 No output. 10:26:27 hmmm what is a reference in numeric context I wonder 10:26:34 !perl print [] 10:26:34 ARRAY(0x7ff735781d48) 10:26:41 I guess its address? 10:26:58 !perl print "0xFF" + "OxFF" 10:26:58 0 10:27:21 oh okay. 10:27:29 !perl print "0xFF" + "0xFF" 10:27:29 0 10:27:53 so perl doesn't attempt to read hex literals when converting a string to a number. 10:28:49 kallisti, that looks like a reasonable address for the stack to me 10:29:11 ??? 10:29:15 ARRAY(0x7ff735781d48) 10:29:16 that is 10:29:33 how does that look like the address to a stack? it looks like an arbitrary location in memory to me. 10:29:33 looks like about the usual location of the stack on Linux (x86-64) 10:30:25 kallisti, run cat /proc/self/maps a few time on a 64-bit machine 10:30:32 "ah yes good ol' 7ff735781d48" -- Vorpal 10:30:38 kallisti, look at [stack] and [heap] 10:30:46 kallisti, stack is usually 7ff* 10:31:08 kallisti, heap tends to start with many zeros 10:31:48 kallisti, libraries tend to be mapped around 7f0*-7fe* 10:32:02 kallisti, not so hard after all 10:32:13 `run cat /proc/self/maps | egrep '[stack]' 10:32:24 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 `run cat /proc/self/maps | egrep '\[stack\]' 10:32:31 7fbff23000-7fbff44000 rw-p 00000000 00:00 0 [stack] 10:32:58 it is 7ff* on my computer though 10:33:03 on my system the stack is consistently 7fff* for cat even 10:33:07 three f 10:33:16 Yes, "7ff" is quite stacky indeed. 10:33:46 uh, but 7ff* is a huge range of addresses.... 10:33:59 stack or vdso, and you usually don't have addresses into the vdso 10:34:17 kallisti, yes and? 10:34:27 kallisti, there is nothing much else up there 10:34:37 (well, the vdso is) 10:35:19 kallisti, your point was? 10:36:00 It's quite close to the top of the bottom half of the canonical-form 48-bit addresses. 10:36:18 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 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 !perl print map {[]} 1..10 10:36:43 ARRAY(0x7fc52154fd48)ARRAY(0x7fc52156da90)ARRAY(0x7fc52156dac0)ARRAY(0x7fc52156daf0)ARRAY(0x7fc52156db20)ARRAY(0x7fc52156db50)ARRAY(0x7fc52154fb98)ARRAY(0x7fc52156da00)ARRAY(0x7fc52156dc88)ARRAY(0x7fc52156dcb8) 10:36:52 they are mostly allocated on the stack I suspect 10:37:18 kallisti, or in a mmaped area up high 10:37:20 could happen 10:37:26 definitely not on the heap though 10:38:14 -!- oerjan has joined. 10:38:40 looking at perl here indicates it does mmap some anon mappings 10:38:44 could be one of those 10:38:51 7f07f9850000-7f07f9851000 rw-p 00000000 00:00 0 10:38:51 7fffc0302000-7fffc0323000 rw-p 00000000 00:00 0 [stack] 10:38:57 aanon mmappings 10:39:09 hm actually that one is there with cat too 10:39:13 so probably not that one 10:39:19 (I guess that is libc related) 10:39:34 (but then iirc glibc allocs huge chunks from mmap) 10:39:43 !perl $_ = []; s/ARRAY\((.*)\)/$1/; print eval; 10:39:44 140303706385736 10:40:07 Actually when I do that locally, the []s seem quite heap-allocated. 10:40:10 (doesn't explain why perl would allocate from the same mmaped page as something that is there in cat) 10:40:13 $ perl -e 'print map {[]} 1..10; print "\n";' 10:40:13 ARRAY(0x1492d48)ARRAY(0x14b0480)ARRAY(0x14b04b0)ARRAY(0x14b04e0)ARRAY(0x14b0510)ARRAY(0x14b9b88)ARRAY(0x1492b98)ARRAY(0x14b03d8)ARRAY(0x14b0408)ARRAY(0x14b9cd8) 10:40:22 fizzie, strange results with !perl then 10:40:32 but yeah those look heapish 10:41:06 look heapish for me too 10:41:16 fizzie, I guess it is possible plash does something weird? 10:41:26 not sure why it would create a different heap though 10:41:50 `run fgrep '[heap]' /proc/self/maps 10:41:53 00613000-00634000 rwxp 00000000 00:00 0 [heap] 10:41:58 doesn't seem so 10:42:25 !perl @x = ([],[]); @x = map {s/ARRAY\((.*)\)/$1/; eval}; print abs($x[0] - $x[1]); 10:42:25 syntax error at /tmp/input.2124 line 1, near "};" \ Execution of /tmp/input.2124 aborted due to compilation errors. 10:42:37 !perl @x = ([],[]); @x = map {s/ARRAY\((.*)\)/$1/; eval} @x; print abs($x[0] - $x[1]); 10:42:37 432 10:42:40 !perl @x = ([],[]); @x = map {s/ARRAY\((.*)\)/$1/; eval} @x; print abs($x[0] - $x[1]); 10:42:40 432 10:42:42 !perl system("cat /proc/$$/maps | grep heap"); 10:42:42 7f7526a10000-7f7526a50000 rw-p 00000000 00:00 0 [heap] 10:42:43 !perl @x = ([],[]); @x = map {s/ARRAY\((.*)\)/$1/; eval} @x; print abs($x[0] - $x[1]); 10:42:44 432 10:42:56 "!perl" is EgoBot, though. 10:43:05 And that's quite a high heap. 10:43:16 indeed 10:43:18 very strange 10:43:23 `run perl -e 'print []' 10:43:26 ARRAY(0x605d48) 10:43:33 NOT SO "STACKY" NOW EH? ASSHOLES. 10:43:36 :) 10:43:37 `run perl & fgrep '[heap]' /proc/$!/maps 10:43:41 006e2000-006f5000 rwxp 00000000 00:00 0 [heap] 10:43:53 I haven't really been following the sandboxings; at least HackEgo runs on that umlbox thing nowadays, not plash. 10:43:53 I thought egobot and hackego had very similar setups? 10:43:59 fizzie, oh okay 10:44:03 well that could change things 10:44:09 fizzie, why umlbox? 10:44:16 Why not? 10:44:26 and if that is user mode linux then I guess that changes stuff a lot 10:44:32 `run perl <<< '@x = ([],[]); @x = map {s/ARRAY\((.*)\)/$1/; eval} @x; print abs($x[0] - $x[1]);' 10:44:33 NIH syndrome, maybe. 10:44:36 109176 10:44:41 oh my. 10:44:43 fizzie, as for why not: why would you want to fix something that wasn't broken? 10:44:52 or was it broken in some way to use plash? 10:45:01 kallisti, ? 10:45:02 "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 (From the umlbox page.) 10:45:10 the address difference is much higher on hackego 10:45:12 than on egobot 10:45:13 ah 10:45:25 between repeated []'s 10:45:28 ah 10:46:32 fizzie, looks like gregor made umlbox? https://bitbucket.org/GregorR/umlbox/wiki/Home is the first hit for me 10:47:04 !perl print `perl -v` 10:47:05 ​\ 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 hm same version 10:47:20 `run perl -v 10:47:23 ​\ 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 Vorpal: Yes, that's why I speculated "NIH syndrome". 10:47:33 ah 10:48:18 # 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 I thought uml had support for networking in general, so it should be possible to set up 10:48:40 !perl print v5.10 + v5.11 10:48:41 0 10:48:53 I suppose that just means "transparently supports". 10:49:36 hm 10:49:47 I feel like say would improve perl's golf scores, except that it currently requires a use v5.10 line. 10:49:51 actually it looks like umlbox has no network 10:50:04 !perl use v5.10; say "Hello, World!" 10:50:05 Hello, World! 10:50:37 why say 10:50:47 why is it any better than the traditional print? 10:50:51 !perl print "Hello, World!\n" 10:50:51 Hello, World! 10:50:56 ah 10:51:10 it's better for golfing, except for the above mentioned problem. 10:51:29 Vorpal: umlbox certainly can do networking. 10:51:34 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 fizzie, hm 10:51:41 Vorpal: Er, sorry, I mean, UML can. 10:51:45 ah 10:51:46 Vorpal: umlbox probably doesn't. 10:51:58 right 10:52:01 Or maybe it does? There's that "fetch" thing. 10:52:07 I haven't looked at the implementation, really. 10:52:14 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 so uh, it does kind of support x11? 10:52:25 yet it says further down it doesn't 10:52:29 Well, you know how it is with documentation. 10:52:33 true 10:53:17 anyway don't you need to enable UML in the kernel config for umlbox to work? 10:53:21 or is that always-on? 10:53:32 because if it isn't then it probably does require root to install 10:54:24 No. 10:54:29 It's "U" as in user-mode. 10:54:42 The host kernel runs it just like it would any random process. 10:55:00 fizzie, doesn't it need a bit of kernel support to do memory protection between processes? 10:55:01 iirc 10:55:15 I mean, processes in the same UML instance 10:55:49 Possibly there was some bit that you could do optionally. 10:56:08 fizzie, otherwise it wouldn't be secure, you could just write into the UML code itself 10:56:54 I assume it uses ptrace to catch system calls. Since anything else can easily be beaten 10:57:58 or I guess it could dynamically recompile code 10:58:42 ...or what you're saying means there is a way to hack it. 10:59:01 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 (And you can't trace yourself.) 10:59:36 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 yes, that's what i thought you meant. 11:00:24 (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 Right; there was a "skas" patch for the host kernel. 11:00:52 I don't know if it got included in the mainline kernel tree or not. 11:01:02 From what I recall, it was reasonably non-intrusive. 11:01:16 seems it is integrated according to wikipedia 11:01:52 I wonder what system calls are exposed to do this 11:02:01 The "old mode" used the "each UML process is a host process, ptraced by the manager for syscalls" approach. 11:02:06 I would like to take a look at the interface and see if it can be used in some interesting way 11:02:37 fizzie, there is still the need to catch system calls also 11:03:14 I'd check the UML wiki but it's being unresponsive. :/ 11:04:57 I can't even find that wiki 11:05:20 http://user-mode-linux.sourceforge.net/ -> The UML Wiki. 11:05:32 hm indeed not responding 11:05:53 It will eventually give a 502 Proxy Error from uml.jfdi.org. 11:06:17 I see 11:07:54 fizzie, the old skas stuff seemed to use /proc/mm but that definitely doesn't exist these days 11:08:56 Most UML-related things seem quite obsoleted these days. 11:09:26 `ls /proc/mm 11:09:29 ls: cannot access /proc/mm: No such file or directory 11:09:42 It's all qemu-kvm or Xen or then the "containers"-style OpenVZ/vserver stuff now. 11:10:09 yeah 11:10:57 I wonder if anyone's using 'lguest' for some real-world thing, though. 11:11:06 which one is lguest? 11:11:09 as in, which style 11:12:00 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 The only lguest-related tool I've seen is the Documentation/virtual/lguest/lguest.c example code. 11:12:43 heh 11:13:08 "2.6.23-git13 and above", apparently. 11:13:33 Apparently it might be a bit 32-bit-only. 11:14:33 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 wtf, steam got stuck in a loop of "loading game" dialogue popping up and closing 11:20:24 had to kill the process 11:21:07 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 fizzie, horrible? 11:21:38 fizzie, anyway I wonder what the chances are 11:22:32 An empty search in the store returns 4178 matches. 11:22:34 * oerjan swat Effilry -----### 11:22:36 *s 11:22:42 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 Heh 11:22:52 I liked it. 11:23:00 Well, the single-player side, anyway. 11:23:01 THERE IS NO USE TRYING TO HIDE 11:23:02 fizzie, I think the boss fight was terrible though 11:23:24 Also Cave Johnson is one crazy man. 11:23:28 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 fizzie, anyway I found myself thinking "Trine 2 is a way better puzzle game" several times. 11:24:47 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 For some reason I couldn't quite get myself interested about the first Trine. 11:26:10 "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 !" 11:27:03 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 the actual puzzles once you locate all the components are not hard 11:27:59 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 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 usually platforming issues as well 11:30:35 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 executing it was kind of hard though 11:31:04 fizzie, not sure if you noticed that in trine 2 (if you played it?) 11:31:24 Not yet. 11:31:27 ah 11:31:47 meh, just handcuff it to a vending machine 11:31:53 ais523, what? 11:32:03 Vorpal: infamous bug in Scribblenauts 11:32:08 eh? 11:32:11 pretty much all the action levels can be bypassed by doing that 11:32:13 what happened when you did that 11:32:20 the item ends up inside the vending machine 11:32:24 then you can just vend it out 11:32:26 heh 11:32:33 how strange 11:32:33 and skip whatever puzzle you'd normally need to do to get the item 11:33:03 why would handcuffing an item do that 11:33:04 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 fizzie, lol 11:33:30 hellooo 11:33:35 hi, I guess 11:33:36 `welcome Frooxius 11:33:39 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 I'm guessing because I can never remember who's been here before and who hasn't 11:33:55 well, sometimes I can 11:33:59 I think Vorpal's been here a while 11:34:02 XD 11:34:07 It's first time I'm here 11:34:18 ais523, and that guy "elliott" he isn't new either, right? ;P 11:34:34 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 meh 11:34:37 `? welcome 11:34:41 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 ais523, modern syntax? 11:34:53 what 11:34:59 the `? syntax came first 11:35:08 so a less modern one then? 11:35:12 `type welcome 11:35:15 ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: type: not found 11:35:17 `run type welcome 11:35:21 welcome is /hackenv/bin/welcome 11:35:26 now how _vorpal_ remembers who is new when he cannot notice anything else, i don't know. 11:35:29 `url bin/welcome 11:35:33 http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/bin/welcome 11:35:42 Vorpal: DOS "type" = UNIX "cat" 11:35:50 ais523, I was looking for bash type 11:36:07 also that is a terribly complicated piece of code 11:36:13 if (defined($_=shift)) { s/ +/ @ /g; exec "bin/@", $_ . " ? welcome"; } else { exec "bin/?", "welcome"; } 11:36:14 why 11:36:19 * oerjan swats Vorpal -----### 11:36:23 oerjan, ? 11:36:28 oerjan, what 11:36:35 Vorpal: so it can take any number of nicks, including none 11:36:39 ah 11:36:41 * oerjan wrote that :P 11:36:57 oerjan, right. I don't really know perl 11:37:31 of course some of the complication is because it uses @ and ? as subprocesses 11:37:34 -!- nooga has joined. 11:38:05 now I'm trying to work out if @{" "} can be written as @ (that is, @ then space) 11:38:11 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 well, Windows commands are based on them 11:39:27 ais523, btw did you ever consider making wol use UML? 11:39:35 it might end up less insane 11:39:57 I choose to misinterpret that as Unified Modelling Language 11:39:57 it seems EgoBot (but not hackego) switched to some home made umlbox that Gregor wrote 11:40:03 ais523, user mode linux :P 11:40:04 just because that makes absolutely anything more insane 11:40:05 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 and ISTR there's some reason user mode language wouldn't work 11:40:17 Frooxius: the wiki is alive, but mostly with spambots 11:40:23 it's probably the only other active esolang place, though 11:40:35 Unified Modelling Linux. 11:40:39 Frooxius, only problem is that many of us tend to easily go off on unrelated tangents :P 11:40:48 (a lot of off topic stuff in other words) 11:40:56 (usually interesting though) 11:41:03 Yeah, that seems to happen everywhere :D 11:41:10 and ISTR there's some reason user mode language wouldn't work <-- user mode language? 11:41:20 spambots? Are they creating bogus pages or what? 11:41:22 Vorpal: meh, just assume I'm drunk 11:41:26 Frooxius: they're spamming 11:41:29 it's not very surprising that people don't solely about a very narrow topic all the time 11:41:32 for years. 11:41:32 it's what spambots typically do 11:41:33 ais523, I just can't imagine you /ever/ being drunk 11:41:38 Vorpal: I'm not 11:41:38 ais523, it just doesn't fit into my head 11:41:42 s/don't/don't talk/ 11:41:52 ais523, have you ever been drunk? 11:41:52 but assuming it tends to simplify things, it's easier than trying to explain 11:41:56 I don't think so 11:41:59 right 11:42:05 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 I used to drink alcohol slightly, but realised I didn't like it 11:42:12 Frooxius: mostly page creation 11:42:16 ah 11:42:16 occasionally page replacement 11:43:36 kallisti, good point 11:43:58 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 multiple pages is probably simplest 11:44:34 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 ok 11:44:48 thanks 11:44:54 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 hm? 11:45:14 ^ul ((spam )(SPAM ))(~:^Sa~^*a*~:^):^ 11:45:14 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 ais523, like using my distro to install it? 11:45:16 or what 11:45:22 Vorpal: yes, like that 11:45:31 ais523, what if I need it on windows? 11:45:40 I might actually need it on windows 11:45:48 so it isn't just a theoretical question 11:45:54 I haven't tried it on Windows myself, but I've heard that the installer is slightly insane 11:45:59 I see 11:46:34 ais523, as long as it doesn't use ant to build I'm happy. 11:47:08 I'm not actually sure what it uses to build, it abstracts that away from the user 11:47:15 right 11:47:23 fungot: It's all right to say "too much spam!" in cases like the above. 11:47:24 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 also it is sponsored by oracle it seems. Hrrm. 11:47:34 ^style 11:47:34 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 ah 11:47:57 fizzie, what was the story behind the smilies now again? 11:48:13 Frooxius, btw that irc bot is written in befunge-98 (an esolang) 11:48:52 ^style iwcs 11:48:53 Selected style: iwcs (Irregular Webcomic scripts) 11:48:54 Oh cool :D That's ultimate esoterism! x3 11:48:58 ^source 11:48:58 http://git.zem.fi/fungot/blob/HEAD:/fungot.b98 11:48:59 there 11:49:01 fungot, hm? 11:49:02 Vorpal: no, the boy, do i? are you sure the technology! 11:49:10 fungot, doesn't sound like iwc to me yet 11:49:10 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 well now it does 11:49:38 fizzie, does that model include the annotations? 11:49:54 Befunge is 2D language right? One that I'm working on is 2D as well, though works somewhat differently 11:49:59 yes it is 11:50:07 Frooxius, that is befunge-98, not befunge-93 11:50:22 hmm, sorry, I don't really know much about specific versions 11:50:30 befunge-98 is much extended compared to the 93 version 11:50:38 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 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 Frooxius: -98 and -93 are reasonably radically different 11:50:55 Also there's some other punctuation mismatch going on, but that happens more rarely. 11:51:02 fizzie, ah 11:51:15 ais523, indeed 11:51:16 And no, it's just scripts; that's why it says "scripts" in the name. 11:51:19 right 11:51:37 There was an "iwca" set too, but it didn't work quite as well. 11:51:43 I can imagine 11:51:47 hmm, does the Befunge 98 have its own page on the wiki though? 11:52:04 Nevermind, found its homepage 11:52:08 right 11:52:11 it's probably sorted under funge-98 11:52:16 but it's a catseye language 11:52:27 and we tend to just link to catseye for those, rather than try to repeat the whole thing ourselves 11:52:51 cpressey writes pretty good descriptions, and unlike most people, puts them on his own website rather than the wiki 11:53:01 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 No I mean, I'm implementing my own language 11:53:53 well sure, but just as a warning :P 11:53:55 Which is also 2D one 11:54:06 oh okay 11:54:08 Frooxius, funge-98 actually comes in 1D, 2D and 3D variants 11:54:33 yeah, I'm reading its page now, it said something about generalization 11:54:37 just the spec contradict itself once, is broken in another place and is terribly unclear in several places. 11:55:07 Frooxius, I believe fungot here runs on my befunge-98 implementation unless fizzie switched over 11:55:07 Vorpal: sorry, i don't know what they're up! 11:55:28 It's still cfunge. 11:55:30 right 11:55:36 Cool :3 11:55:44 Though probably quite an old version. 11:55:46 fizzie, I guess you wouldn't actually gain that much from using ccbi2. 11:56:20 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 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 from what I can tell it miscompiles, but picking out the relevant functions compiles it correctly 11:56:53 ^bf +[]! I like to loop it, loop it. 11:56:56 kallisti, and I should write an esolang. I only ever implemented them 11:56:58 ...out of time! 11:57:09 That's 100k cycles, IIRC. 11:57:25 Vorpal: it could be worse. You could only design incredibly shitty esolangs. like me. :P 11:57:32 heh 11:57:33 all of my good ideas never finish. 11:57:40 why? 11:58:03 * kallisti is not a very disciplined individual. 11:58:11 fizzie, anyway once tup gets support for variants I'm going to ditch cmake and go for autoconf + tup 11:58:17 so just getting myself to finish all of the important things is difficult enough. :P 11:58:20 but I'm working on that. 11:58:54 fizzie, which should provide some benefits, such as less broken handling of non-C files. 11:59:13 I mean, that is one thing cmakes does get right: dependencies for C-files. 12:00:10 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 kallisti, you know PCRE is turing complete for example? 12:00:54 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 Vorpal: oh, well yes. 12:01:07 I mean to make it more general purpose, rather. 12:01:11 hm 12:01:42 Vorpal: tup still doesn't have variants? Dang. 12:01:43 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 Deewiant, well, I last checked like right before xmas. It /might/ have it now 12:02:06 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 Deewiant, but yeah what with all the build variants of cfunge that is what is holding me back from using it 12:02:54 Vorpal: I last checked a couple of months ago and thought it was on the top of the todo list :-P 12:03:11 right 12:03:18 I thought it was a bit down on the list 12:03:19 since theoretically irreversibility is equivalent to heat production (landauer's principle) you'd want that to be physically expelled, i think 12:03:20 Vorpal: I am aware of all the different kinds of regex and what they can do. 12:03:20 hm 12:03:29 kallisti, /all/ of them? ;P 12:03:38 He knows all the regex. All of them. 12:03:39 well... I'm a little poorly versed in POSIX regex 12:03:45 mainly because I hate it. 12:03:47 kallisti, what about .NET regex? 12:04:05 I've used it? does that count? 12:04:09 sure 12:04:14 kallisti, the java ones? 12:04:19 haven't used those no. 12:04:20 POSIX regex come in BREs and EREs, is what you need to know. 12:04:27 and you use ERE 12:04:32 because BRE are annoying 12:04:48 fizzie, doesn't plain grep use BRE iirc? 12:04:50 is BRE where you backslash everything? 12:05:00 (what emacs uses) 12:05:02 because I hate that. 12:05:03 kallisti, egrep is ERE 12:05:06 right. 12:05:07 Vorpal: It does, yes. 12:05:12 and I think emacs might use something else 12:05:13 not sure 12:05:30 emacs basically reverses the semantics of backslashes. 12:05:36 huh 12:05:37 Emacs is not strictly POSIX, IIRC. But it does involve a lot of backslashing. 12:05:41 Much like BREs. 12:05:44 right 12:06:03 fizzie, also sed uses BRE right? 12:06:18 ^bf >,[.>,]<[[<]>[.>]<]!I like to loop it, loop it. 12:06:18 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 which is why you do like s/aa*/... rather than s/a+/... 12:06:33 vim has four forms: 'nomagic', 'magic', 'very magic', and 'very nomagic'. 12:06:37 lol 12:06:40 Deewiant, hah 12:06:43 Deewiant, what do they mean? 12:07:02 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 oerjan: yes I was considering having a way to basically delete nodes so that you can manage memory. 12:07:18 'magic' is the default and is quite similar to BRE, I think. 12:07:22 Frooxius, verilog or vhdl? 12:07:28 VHDL 12:07:31 hm 12:07:35 I might be able to read it then 12:07:38 and that is cool 12:07:44 (that you implemented that) 12:08:04 'nomagic' seems to change only . and *, so that they need to be escaped if you want their special behaviour. 12:08:09 also that question is best to ask ais523 12:08:39 Deewiant, heh, and the very variants? 12:08:45 Frooxius: page should be named after the language 12:08:58 oh ok, thanks 12:08:59 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 if the language has only one specific purpose, explain what it is on the page 12:09:12 '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 Deewiant, and very nomagic? 12:09:35 And 'very nomagic' is the converse: only backslash has a special behaviour. 12:09:36 The language is tied a lot though to the processing unit architecture 12:09:48 hm 12:09:56 but I can't really see this language being efficient at all, considering how it works. 12:09:59 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 Frooxius, are there several languages for the same processing unit? 12:10:12 Not yet 12:10:15 hm 12:10:36 also 128 cores, is it some sort of massively parallel esolang? 12:10:41 I can't remember seeing any of those before 12:10:46 essentially it works something like this: constraint | pattern -> rewrite 12:10:54 or wait, wasn't there one that ais523 claimed would be good on GPUs? 12:11:27 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 Checkout's basically eso by virtue of being too low-level 12:11:29 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 s/which/with. 12:11:41 it's not really an esolang designed for GPUs, more a description of how GPUs worked converted to esolang form 12:11:45 s/\./\// 12:11:58 ais523, do they still work that way? 12:12:09 I assume so 12:12:12 unless it's changed in the last year 12:12:20 which is possible, I guess, but seems moderately unlikely 12:12:30 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 ais523, hm I'm missing an FMA instruction. I think most GPUs have them 12:13:43 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 Of course, while producing same result 12:13:54 ais523, but yes, it matches what I know about GPUs pretty much 12:14:03 though I'm not sure about the selection of instructions 12:14:12 selection of instructions was mostly a guess 12:14:54 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 It supports parallelism, but it's not so massive parallel like GPUs are 12:15:24 Vorpal: yes, it doesn't allow for hardcoded highlevel stuff 12:15:26 it's very low-level 12:15:32 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 Frooxius, I look forward to seeing this language 12:15:38 ais523, ah. 12:15:59 ais523, with texture interpolation? 12:16:02 no 12:16:11 hm that is like the key feature of textures to me 12:16:19 -!- oerjan has quit (Quit: leaving). 12:16:37 ais523, I haven't used OpenCL so for all I know it might match that 12:16:40 I mostly used GLSL 12:19:18 -!- monqy has quit (Quit: hello). 12:19:46 ais523, is abstain/1 like in intercal? 12:21:21 it's more like computed abstain forced at 1, then regular abstain 12:21:24 and still more like an if statement 12:21:28 hm 12:21:32 it's basically the same as an if except for timing 12:22:23 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 element* 12:22:47 Vorpal: indeed 12:22:51 that's what I'm getting at with abstain 12:22:55 right 12:23:02 the code has to be executed, it's just that it can ignore what it does 12:23:09 indeed 12:23:44 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 err that is 12:24:05 -!- Frooxius has quit (Ping timeout: 240 seconds). 12:24:05 the same loop on different processing elements 12:24:14 I guess you just abstain the last few times 12:24:18 Vorpal: it'd have to cap it to the maximum number of iterations 12:24:28 well yeah 12:24:39 however, all sane GPU programming would make a loop have the same number of iterations for the entire weave 12:24:50 well yes 12:24:57 ais523, not sure what you mean by weave here 12:25:12 Vorpal: it's a technical GPU term 12:25:16 as is half-weave 12:25:21 what does it mean though? 12:25:27 basically, a half-weave is the number of actual commands that run simultaneously on one processing element 12:25:30 ah 12:25:37 and a weave is the number of commands that /effectively/ run simultaneously 12:25:40 right 12:25:44 because there's a 1-cycle pipelining delay 12:26:21 actually I could do something TOTALLY CRAZY 12:26:33 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 and make v and ^ for logical conjunction/disjunction 12:26:42 ais523, hm 12:26:55 ais523, but these details seems to be hidden from you when you are writing GLSL? 12:26:55 kallisti: nah, use Unicode 12:27:00 Vorpal: right, indeed 12:27:04 GLSL is rather higher level than OpenCL 12:27:06 but I can't type Unicode quickly. :P 12:27:10 ais523, ah. 12:27:18 I guess I want to avoid opencl then? 12:27:28 because that stuff sounds annoying 12:27:55 ais523, I just noticed "avoid if when at all possible" seemed to work pretty well for glsl 12:28:13 Vorpal: well, it depends on what you're writing the code /for/ 12:28:22 if you want to write vertex and fragment shaders, glsl is a pretty good choice 12:28:29 ais523, also does anyone actually use the geometry shader? 12:28:35 it doesn't seem to perform well at all 12:28:42 I think using Haskell's list monad will make the logic programming stuff much easier. 12:28:52 if you want to write bitcoin mining code, you're probably better off with opencl 12:28:58 ais523, right 12:28:58 Vorpal: I'm not sure; they're a comparatively new thing 12:29:08 and I'm not entirely up-to-date on what they actually do 12:29:37 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 but I can't type Unicode quickly. :P <-- I can. Try M-x set-input-method RET TeX RET 12:30:11 it is awesome 12:30:29 what if I don't know TeX though? :P 12:30:29 Vorpal: hmm, I'm not sure 12:30:35 possibly depends on what manipulation you're doing 12:30:36 kallisti, you need to learn it 12:30:53 main advantage of something like opencl is that you could make sure that memory was being loaded in an optimal way 12:30:54 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 it doesn't use it for the actual merging 12:31:05 just the bending of the input images 12:31:22 I guess you might want to use the texture units there 12:31:36 to get interpolation when there wasn't a 1:1 map for the pixels (the usual case) 12:31:50 can you access the texture units from opencl? 12:33:56 sure, it's called "constant memory" 12:34:12 ais523, but can you get the interpolation then? 12:34:34 not sure; my guess is it'd involve a nonstandard but nonetheless common extension 12:34:38 heh 12:37:51 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 ais523, btw does opencl have built in noise functions? 12:45:52 ais523, glsl does but most GPUs just return 0 on them 12:45:57 it doesn't have too much built in stuff 12:45:58 which makes them effectively useless 12:46:13 it's one of those languages which is bare-bones and expects people to write libraries for it 12:46:39 and with most I mean all but one card series which I believe is nowdays discontinued 12:46:51 (some 3dfx thingy iirc) 12:48:29 http://en.wikipedia.org/wiki/Logical_consequence 12:48:31 I don't really see 12:48:48 what makes this different from implication over the conjunction of every element in the set... 12:49:38 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 like why does it get its own name, basically. 12:54:03 > let entails :: [Bool] -> Bool -> Bool; entails ss s = not (and ss && not s) in entails [2 < 4, 2 > 0] (2 == 3) 12:54:04 False 12:56:13 > let entails :: [Bool] -> Bool -> Bool; entails ss s = not (and ss) || s in entails [2 < 4, 2 > 0] (2 == 2) 12:56:14 True 12:56:16 much better 12:57:45 De Morgan's laws to the rescue. 12:58:15 wow what a strange texture format: floating point, 9 bits of precision, shared exponent. GL_RGB9_E5 12:58:27 so 5 bits of exponent I think? 12:58:45 three 9s are 27, plus 5 is 32 12:58:48 yes 12:58:51 so it packs neatly 12:58:54 ais523, still it is a pretty strange format 12:59:43 there is also GL_R11F_G11F_B10F 12:59:48 those floats lack sign bits 12:59:56 and the blue one has less precision 12:59:57 why 13:00:14 So that it'd sum up to 32. 13:00:28 And why would you need negative numbers in a texture? 13:00:39 true 13:00:55 fizzie, still it is a strange format with less precision in blue 13:01:08 Vorpal: there are a bunch of asymmetrical pixel formats like that 13:01:13 indeed 13:01:14 there's quite a common 556 one, for instance 13:01:21 hm 13:01:21 I think it's based on what the eyes are best at distinguishing 13:01:28 I thought that was 5-6-5 with 6 on green, most commonly. 13:01:41 not in opengl as far as I can find 13:01:52 fizzie: I'm not sure what order it's in, but 6 on green is entirely believable 13:01:58 there is 3-3-2 (integer) for example 13:02:14 normalized integer even 13:02:16 what on earth would a 2-bit float be like anyway? 13:02:18 not sure what that is 13:02:39 or even sillier, a 1-bit float 13:02:45 heh 13:04:44 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 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 And the 10_10_10_2. 13:06:09 I was mostly looking at floating point formats 13:06:29 but sure I can find all of those apart from 565 13:06:57 fizzie: does 5551 have 128 shades of colour, and 128 shades of transparent? 13:07:01 that seems a little weird 13:07:27 or, hmm, you could define transparent white as actual transparent 13:07:27 just two shades of transparent? 13:07:38 and have a fixed arbitrary value for the alpha as the other value 13:07:51 ais523: 128? 5+5+5 is 15 bits. 13:07:54 Frooxius: it's not Either Transparent (Word5,Word5,Word5) 13:08:01 it's (Word5,Word5,Word5,Boolean) 13:08:03 fizzie: err, right 13:08:09 32768 13:08:58 Vorpal: Your list is probably for the internal color formats, which might not have a 565 one. 13:09:27 fizzie, it probably is, I'm looking on the opengl wiki 13:09:32 wrt texture formats 13:09:39 image formats even 13:09:53 hm why does Prolog only allow horn clauses.. 13:10:01 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 it's 5 + 5 + 5 + 1, right? 13:10:21 1 bit is a boolean 13:10:35 my point is that once you've set the alpha channel to transparent, you still have 15 bits of color 13:10:43 kallisti, iirc they are easy to compute? 13:10:50 lame 13:10:53 that you're just wasting, because different shades of totally transparent are visually indistinguishable 13:10:56 Yeah, but why have 15 bits of color? 13:11:06 kallisti, like always possible to find an answer to 13:11:07 Frooxius: so if it's not transparent, then you can have colors 13:11:15 kallisti, unlike some other forms 13:11:15 Yeah, that's what's bothering me as well 13:11:18 we have 32769 useful possibilities out of 65536 here 13:11:18 but that is all iirc 13:11:22 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 I was suggesting that perhaps the format should do something with the other 32767 13:11:32 If the bit means that it's completely transparent then the color doesn't matter that much 13:11:40 fizzie: oh, indeed, and many graphics packages have an option to do just that 13:12:11 ais523, well you might want to use it for something else. It is not like the pipeline is fixed 13:12:38 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 well, if you're using it for something else, why are you putting an RGBA meaning on it anyway? 13:12:49 Frooxius: that'd be hell on a GPU's memory model 13:12:55 that's a compression format, not an in-memory graphics format 13:13:09 Oh, sorry, I didn't know you were talking about in-memory 13:13:25 I kind of popped in the middle of discussion x3 13:13:40 They have those weirdo in-memory compressed texture formats too. 13:13:56 S3TC and whatever. 13:13:59 yeah 13:14:35 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 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 ais523, you could just call them xyzw or 0123 13:15:59 ais523, I used textures for other stuff than images. Like a height map that I then used in the geometry shader. 13:16:13 Vorpal: well, indeed, that's the point 13:16:26 I'm just not convinced that splitting into 5+5+5+1 format is useful for nonimages 13:16:27 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 ais523, it ended up in the red channel 13:16:37 hm 13:17:15 Frooxius, just draw a whatever-those-diagrams were called. 13:17:23 when you calculate the gates by hand 13:17:29 Karnagaugh maps? 13:17:31 or something like that 13:17:32 ah yeah 13:17:34 those 13:17:39 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 But that's something different. 13:17:44 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 Frooxius, well you could work out what sort of opcode encoding would give you the least number of gates :D 13:18:00 red/green/blue/collidable? I suppose that makes sense 13:18:08 I'm talking about assigning the bits meanings 13:18:12 I was thinking about that myself, and decided that collidable often needs more than one bit 13:18:22 how so? 13:18:26 the implications are state transitions, rather than logical statements. 13:18:52 well the variations, if I have 3 bits, to store 5 states and other 3 are undefined 13:18:56 Frooxius, indeed, but I mean you should check which assignment of the bits give the simplest logic 13:19:17 Vorpal: to determine what happens on collision 13:19:19 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 ais523, game over :P 13:19:26 the logic is simple, I mean, decoding it 13:19:52 There's a simple straightforward way 13:19:54 Vorpal: well, I'm used to games with collisions having multiple sorts of collisions 13:19:58 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 e.g. in platformers, often you take damage hitting enemies from the sides, but not from above 13:20:30 I'm implementing it on FPGA 13:20:33 ais523, not sure you would store that in the image format anyway 13:20:44 Frooxius, well sure, but what if you want to do it old school in the future? 13:20:52 ais523: The RGB10_A2 format gives you four types. 13:21:07 Well I already saved myself a lot of work 13:21:10 heh 13:21:30 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 Vorpal: also, you just use two layers of n-input NANDs 13:21:48 and I can use same logic to decode both. 13:21:58 to efficiently implement any truth table with TTL logic and wire-wrapping 13:22:03 hm 13:22:07 efficiently in terms of time 13:22:20 can be inefficient in terms of logic size in some cases 13:22:36 There's not much of a truth table, it basically corresponds to numeric base 5 13:22:50 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 as well as gates 13:23:13 if the problem's small enough to K-map it 13:23:21 then you're probably not going to run out of gates anyway 13:23:26 true 13:23:36 I dunno if I would do it old school way though. It would be too large anyway 13:23:39 Who is this Frooxius person? 13:23:41 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 ais523, but even for larger problems you could still save some gates. 13:24:03 even though it might be more work figuring out how 13:24:31 Also it's Karnaugh, not "Karnagaugh" or "kaurnaugh". 13:24:36 okay 13:25:02 Yeah, I don't remember how to spell it in English 13:25:29 It's the guy's name, you don't spell it any differently in any other language. 13:26:05 We spell some names a bit differently in our language 13:26:17 How impolite. 13:26:24 It's like everyone has to call SOMs "Kohonen maps" no matter how stupid they think it sounds. 13:26:25 ? 13:26:46 It's not THAT different, I don't really remember how to spell his name 13:27:07 I don't remember all the names 13:27:11 fizzie, the names of the ancient greeks tend to be spelled differently in different languages though 13:27:33 Vorpal: I guess there's some variation allowed when the alphabet differs. 13:28:11 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 It's due to the grammar. 13:28:33 Most nouns are modified and have many variants 13:28:43 Otherwise it would sound... REALLY weird 13:29:04 usually only the ending portion of the name is modified though 13:29:35 which language is that? 13:29:38 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 Czech 13:30:05 ah 13:30:21 Sadly the name isn't Finnish-enough looking, so we have to call it "Karnaugh'n kartta" with an apostrophe. 13:30:41 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 well I guess plural might 13:30:51 I think that Karnaugh has only suffix, but sometimes last one or two letters are modified as well 13:31:01 for family names 13:31:27 We've got 15 noun cases, and many of them make sense for names. 13:31:33 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 fizzie, strangely enough it is called Karnaughdiagram in Swedish, not Karnaughkarta 13:31:55 Well, it's not a "map"-map all geography-like. 13:32:05 indeed 13:32:09 it's called map in my language 13:32:20 well "mapa" 13:32:30 It's called map in Finnish too, but "diagram" makes equally much, if not more, sense. 13:32:33 Whoops, it's bank-time. -> 13:32:33 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 oops, sorry, broadband connection (EDGE) x3 13:36:30 There's a bad signal here 13:36:51 -!- Frooxius has quit (Read error: Connection reset by peer). 13:36:51 http://en.wikipedia.org/wiki/A_Book_from_the_Sky 13:37:08 -!- Frooxius has joined. 13:37:20 aaaarg, bad connection again 13:37:31 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 forget my link.. awesome topic.. i need to scroll up on this one i think 13:39:04 color formats 13:39:37 Sounds slightly complicated, though certainly possible. Also, 9 levels when you count the non-transparent case. 13:39:40 http://fc05.deviantart.net/fs71/i/2011/104/0/8/nyan_cat_timelapse_by_kingaby-d3dygfa.jpg 13:39:49 i guess they could do some huffman encoding of images kind of 13:40:10 like.. determining the probability rates of color neighbourhoods 13:40:10 jpeg uses these fancy things called wavelets. 13:40:16 yaaay DA, did you make that kallisti? 13:40:24 Frooxius: not at all 13:40:50 If you want to call DCT a wavelet transformation... 13:41:43 I was under the impression that the JPEG2000 nobody uses does actual wavelets, though. 13:41:44 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 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 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 ugh again 13:42:51 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 that got through the first time 13:43:28 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 oh cool, sorry, I lost connection immediately after sending that, so I wasn't sure 13:43:34 and on the basis of these %'s, you could map the bits of the neighbouring pixels somehow 13:44:10 <-- sort of dumb, sort of smart, both at same time 13:44:18 OpenGL doesn't do Amiga's HAM formats. :/ 13:44:37 Okay, back out to the snow. -> 13:44:38 fizzie, what were those? 13:44:40 oh well 13:44:57 Hold And Modify, the pixels depend on neighbors. 13:45:16 You get more colors but it's difficult to do sharp edges. 13:45:41 fizzie: ahh.. so i had a nice idea but its done long ago eh? 13:45:47 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 everything has already been done :P 13:46:21 criuudhwudihewuidhwe uidhweuidh ewuidhewuihduiew dhwuih diuhw diuhw iudh iuwehdiuhweiudhweuihdiuwhduiwdwe 13:46:45 `log fuck fuck fuck 13:47:14 2007-02-11.txt:01:49:58: fuck fuck fuck fuck fuck 13:47:48 it's okay I accidentally invented FRP. 13:48:01 `pastlog wtf 13:48:20 2009-11-19.txt:04:38:00: WTF! 13:48:20 kallisti: oh cool 13:48:24 `pastlog wtf 13:48:38 2007-05-01.txt:00:19:54: but WTF does the group have that effect on me? 13:48:53 wow.. simonrc is popular in these logs 13:49:38 well, obviously if you search for swearwords you're going to get people who swear more 13:49:50 `pastlog motherfucker 13:49:54 lol 13:49:57 * ais523 wonders about the chance of no results 13:49:59 2011-01-18.txt:20:41:14: Jeb did it, motherfucker. 13:50:08 ah, no, there was at least one 13:50:33 `pastlog motherfucker 13:50:40 2011-03-22.txt:23:54:58: http://programming-motherfucker.com/ 13:51:13 `pastlog Feather 13:51:15 yes, I went /there/ 13:51:20 2008-08-23.txt:17:41:11: ais523, feather? 13:51:32 * Frooxius bubbles 13:51:49 ? 13:52:02 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 OK, esoteric idea: image format that's neither raster nor vector 13:52:40 hmm, what other possibilities are there? 13:52:42 -!- nooga has quit (Ping timeout: 252 seconds). 13:53:10 Some language to describe the image algorithmically? 13:53:12 * itidus21 laughs. 13:53:25 Frooxius: hmm, I was wondering along those lines too 13:53:27 sorry had to laugh 13:53:40 -!- azaq231 has joined. 13:53:46 not as an insult 13:53:49 -!- Frooxius has quit (Read error: Connection reset by peer). 13:53:53 but, just because someone had to 13:53:58 -!- azaq23 has quit (Ping timeout: 240 seconds). 13:54:35 ais523: my way of approaching this kind of problem would be to look for the generalization 13:54:45 and make another child from it 13:54:58 ah, right 13:54:59 -!- Frooxius has joined. 13:55:01 I hate this connection >.< 13:55:05 Some language to describe the image algorithmically? 13:55:08 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 so, vector and raster would be, children of some parent 13:55:52 humm 13:56:09 So the game took like... ages to load, because it needed to render all the stuff |3 13:56:13 ais523: ok ok.. heres one idea i had once 13:56:29 an 8x4 monochrome display... 13:56:40 let's see… raster images are a bit like an imperative description of what to draw to the screen 13:56:41 the video memory consists of a single 32 bit integer 13:56:42 as is, say, RLE images 13:56:58 more complicated compression schemes are more like an OO description 13:57:18 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 so, hmm, what else is left? 13:57:49 hmm.. its too hot and im too hungry for this lovely topic wuaahhh 13:58:15 clearly, we need constraint-based images 13:58:48 ais523: i am primarily interested in graphics 13:58:54 i have tried to figure some stuff out before 13:59:01 one idea i had once was.... 13:59:03 that 13:59:34 an image which has only 1 colour, can be stretched and shrunken without affecting it at all 14:00:43 hmm, not true for raster images, surely? 14:00:54 if it's 100x100, and you stretch it to 150x150 14:00:58 then you can't roundtrip it back to100x100 14:01:01 *to 100x100 14:01:06 oh, you mean solid color, I see 14:01:09 ya 14:02:17 i applied myself to thinking about graphics in the past but never really got far 14:02:25 but that was one idea i realized 14:03:22 it's still not an excuse for a modern os to ship without a ssh client or with a telnet client 14:03:33 ^ for all the people who just wouldn't believe me when I told them I knew an ssh fanboy 14:03:49 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 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 actually i think i have heard of it.. 14:05:06 in an old edition of computer and video games 14:05:17 but i think the article just said the prorgammers used some clever tricks 14:05:38 maybe its an unconcious uhm 14:05:47 unconcious plagiarism 14:06:23 meh i sure ramble 14:08:03 -!- Frooxius has joined. 14:08:35 Lost signal again >.< 14:11:44 i... i saved a document by accident.. and lost all the images inside it 14:11:46 oy vey 14:14:05 http://en.wikipedia.org/wiki/Kkrieger <- game you're thinking of (probably) 14:14:56 beats myself around the head with imaginary baseball bat 14:16:42 "Textures are stored via their creation history instead of a per-pixel basis" .. interesting 14:17:01 myndzi: maybe i was not actually thinking of ham at all 14:17:04 well, an interesting optimization task anyway 14:17:12 ham what 14:17:16 it was some scifi game in an old magazine 14:17:16 i want a ham sandwich! 14:17:17 :P 14:17:30 it said that the programmers used some tricks to get more colours 14:17:55 ah no, i was referring to frooxius's comment 14:18:01 kkreiger is probably the game he was talking about 14:18:09 who was? 14:18:19 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 demoscene dudes are pretty cool :) 14:18:58 a file went bad in open office 14:19:01 I read recently that there were some people developing an esolang-like language for golfing demos 14:19:06 i did repair but repair didnt go well 14:19:29 when i tried to save it.. i did so without thinking and overwrote it 14:19:40 oh my graviton 14:19:49 it doesn't really matter.. i retained all the text, but i had some silly images 14:19:58 and the images gave this file character 14:20:11 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 you got three copies? 14:20:45 i put a lot of work into my little documents.. i need to be more careful 14:20:46 haha, interesting 14:21:00 I don't recall name of that 100 kB game, though I can look it up 14:21:08 yeah i played the 96kb game 14:21:12 Frooxius: kkreiger 14:21:17 -!- Ngevd has joined. 14:21:21 good stuff 14:21:21 Hello! 14:21:28 yeah, I think that's the one 14:21:38 though it was an entry in a demo party 14:21:47 it's just the most notable one people seem to have heard of :) 14:22:10 myndzi, you're the one with a cyborg account, right? 14:22:14 kkrieger* 14:22:21 ^celebrate 14:22:21 \o| |o| |o/ \m/ \m/ |o/ \o/ \o| \m/ \m/ \o| |o| |o/ 14:22:22 | | | `\o/´ | | | `\o/´ | | | 14:22:22 /´\ >\ /| | /´\ /| |\ | /< >\ |\ 14:22:22 (_|¯'\ /'\ 14:22:22 |_) (_| |_) 14:22:36 I like artistic games a lot though. I try to make my own games as an art form 14:23:10 the game i am thinking of turns out to be Universe on Amiga 14:23:24 i once read they used some kind of tricks to get more colours 14:24:24 cyborg account? 14:24:27 "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 probably not, i'm not sure what you're talking about :) 14:24:37 myndzi, half bot 14:24:41 Half not bot 14:24:44 oh lol 14:24:50 "account" doesn't really apply on irc 14:24:55 but nah, i just idle a bunch :) 14:25:01 Well, nick 14:25:09 And you do the celebrate thing 14:25:17 hehe 14:25:26 well it appears that somebody stored a convenience macro \o/ 14:25:26 | 14:25:26 /< 14:25:33 it draws legs on anything though 14:25:43 \m/ \m/ 14:25:43 `\o/´ 14:25:44 | 14:25:44 /´¯|_) 14:25:44 (_| 14:26:09 what's with the leading 9s? 14:26:28 leading ... 9s? 14:26:39 9 `\o/´9 14:26:39 | 14:26:39 /| 14:26:50 your irc client is rendering color codes weirdly 14:27:00 So's... mine? 14:27:06 it's ^k69^o 14:27:21 I see no nines nor any colours 14:27:31 which is how it should be ;) 14:27:43 I see no colors at all 14:27:47 it's not colored 14:27:50 there's a reset directly after them 14:28:00 it's just hidden tags so i don't interpret lines multiple times or when pasted etc. 14:28:01 Why? 14:28:14 long as it was copied in color anyway 14:28:23 kind of bot-loop protection 14:28:37 ah, right 14:28:43 one of the possible smilies starts with ` 14:28:51 well, dancers 14:28:59 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 well, i wrote this script some time before i ever came here, but you have the idea ;) 14:29:37 it was a problem so i fixed it, i don't even remember what the problem was now 14:29:45 it might have only applied to me! 14:30:02 since i do some funky things with my own client 14:30:18 for example... 14:30:22 <- :myndzi!myndzi@c-67-168-184-168.hsd1.wa.comcast.net PRIVMSG #esoteric :for example... 14:32:45 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 one thing i have pondered about graphics is that things like graphics plots never resemble anything 14:39:07 like, it is not common for a formula to represent a bitmap 14:40:00 well, bitmaps don't frequently come in the form of elegant mathematical expressions ;) 14:40:05 have you read about fractal compression? 14:40:20 like most lineart is discontinuous 14:41:28 and then the idea comes as, just use the brute force of the computer which is available :P 14:41:34 myndzi, I seem to remember there is a way to represent any 1-bit bitmap as an equation. 14:42:04 ah yes https://en.wikipedia.org/wiki/Tupper%27s_self-referential_formula 14:42:05 yeah 14:42:07 1 or 0 14:42:07 :P 14:42:17 myndzi, no I mean as in each pixel is either black or white 14:42:18 but you mean 1 as in the bit depth i'm sure 14:42:19 not grey 14:42:34 see the link 14:42:35 i'd believe it, but is that representation significantly shorter or simpler? 14:42:47 myndzi, see the link and decide for yourself 14:43:02 haha, awesome 14:43:03 I would call it clunky however 14:43:04 a mathematical quine 14:43:22 myndzi, thing is, you can select some numbers in there to draw any image 14:43:33 it's cheating, it's taking an encoding of itself as input 14:44:50 * myndzi shrugs 14:45:00 it doesn't look to be very efficient as far as compression goes 14:45:10 well that is correct 14:45:22 myndzi, I was simply replying to " well, bitmaps don't frequently come in the form of elegant mathematical expressions ;)" 14:45:35 I think the idea is pretty elegant :P 14:45:49 headache being induced 14:45:50 -!- cheater has joined. 14:45:50 except the fact that it requires a multiple-line constant :P 14:45:52 myndzi, anyway: procedural textures 14:46:06 myndzi, bah, details 14:46:44 myndzi, procedural textures tend to be more or less simple mathematical formulas 14:47:08 quite often there is some perlin noise in there though, which might not be so simple 14:47:29 well, yeah, but itidus was commenting on prevalence 14:47:39 such techniques might be prevalent in the demoscene but not really outside of it 14:48:05 myndzi, eh, I used procedural textures quite a bit. Minecraft water is by default a procedural texture afaik 14:48:34 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 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 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 > head "Euler" 15:07:29 'E' 15:07:34 It doesn't! 15:07:54 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 Because you grossly mispronounce it, Ngevd? :| 15:08:17 qfr, not so it sounds like it begins with a J 15:08:26 Jeuler, the jocular Euler. 15:08:47 It's only when I think "what's the initials of Project Euler" do I make this error 15:08:48 A rough English approximation of how it's pronounced is "oilah" 15:09:08 -!- MDud has joined. 15:09:08 You grossly mispronounce it with a silent J, perhaps. 15:09:08 In modern standard German that is 15:09:12 -!- MDud has changed nick to MDude. 15:09:21 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 What? 15:11:18 -!- Frooxius_ has changed nick to Frooxius. 15:11:25 A dud duck. Is that like a duck which doesn't quack? 15:12:01 mIRC keeps switching nick/alternate nick and then keeping it the wrong way around. 15:12:31 mIRC? On MY freenode? 15:12:49 what happens is: 15:12:55 if you are USING your alt nick 15:13:02 and you change to a nick that's not your main nick 15:13:07 it modifies the setting 15:13:13 you can use /tnick to avoid this 15:13:18 Is mIRC a blasphemy here? 15:13:26 it becomes a problem when you get guested or something 15:13:28 Or something like that 15:13:30 mirc changes your main nick to Guest 15:13:44 so when you go to change to your main nick, you instead change the wrong one 15:13:50 or s omething like that anyway. you should get the picture :) 15:14:06 you can alias tnick and maybe reset nick and anick when you get disconnected 15:18:15 8-bit metal! >:3 http://freemusicarchive.org/music/Heosphoros/Embered_Recollections/Eleven_Acausal_Fire 15:18:34 i found something awesome yesterday 15:18:58 http://www.sotb.se/ 15:20:03 They don't sound bad :3 15:20:10 not at all 15:20:32 vocals are a little .. well, not bluegrass but it doesn't really matter 15:20:59 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 even linkin park lol 15:21:15 Does anyone listen to Machinae Supremacy? 15:21:57 think i've heard of them, but i can't place it 15:22:13 SID Metal as they call it 15:22:24 Chiptunes + Metal 15:23:09 i found the bluegrass band 'cause i was looking for piano covers 15:23:14 i downloaded a bunch of dragonball z game music recently 15:23:15 there are some good piano renditions of various songs on youtube 15:24:03 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 :o 15:24:25 ha, this is an interesting combination 15:24:32 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 machinae supremacy 15:27:10 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 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 HAHA oh wow 15:29:07 http://www.youtube.com/watch?v=p8cLJcm_RoU 15:29:10 totally didn't know that 15:31:32 Machinae Supremacy has played once or twice (or thrice; can't quite remember) at Assembly. 15:32:05 Though recently, they seem to get more metal-like and less chiptune-y :-( 15:32:29 And Press Play On Tape did it last year; they're also quite 8-bitty, though not at all metal. 15:32:46 Or I guess officially they spell it PRESS PLAY ON TAPE. 15:33:16 The songs I used in the short film are actually the ones that are available for free on their website 15:36:52 Oh, I see they've released (via Pirate Bay, no less) their Assembly 2011 concert video. 15:39:47 Frooxius: that is really a very cool video 15:39:56 thanks O.O 16:09:57 interesting youtube channel 16:10:45 its kind of funny, that, your understanding of 8bit must be so mysterious 16:11:04 What do you mean by mysterious? Oo 16:11:40 well i was born in 82, and my first computer was a NES.. im not sure which year that was exactly 16:12:16 ah.. 89 :-? 16:12:38 What? Are you asking if I'm 89? 16:12:42 i guess you're not all that young 16:12:46 I'm 91 16:12:49 oh i got my NES in 89 16:12:55 oh x3 16:13:12 I'm October 1991 16:13:23 im not sure how i figured that out actually 16:13:45 I still don't know what you mean by the mysterious though 16:13:59 itidus21, wait, you're *29*‽ 16:14:05 yup................... 16:14:16 You're younger than you look 16:14:22 Older, rather 16:14:26 I remember that we had Sega Master System when I was 3 or 4 and later Sega Genesis 16:14:40 My first console was a Playstation 2... 16:14:43 I feel young 16:14:48 no computer though really as in, PC and such 16:15:05 ahh maybe ngevd feels the mystery about 8bit then 16:15:22 We never had consoles, I just rented a Genesis (well, Mega Drive hereabouts) from the video store every now and then. :/ 16:15:41 Hmm, I think it was named Mega Drive here as well 16:15:45 What kind of mystery? 16:15:59 back then.. the option was.. 1) watch standard def tv 2) watch a vhs tape 3) play 8bit console 16:16:15 and if you were lucky you had some old computer 16:16:58 I see 16:17:04 so slot cars and remote control cars were a lot more exciting back then 16:17:30 Yeah. I know that even computer felt more exciting and mysterious for me when I was little. 16:17:36 Maybe that's what you mean? The feeling of mystery? 16:17:54 There is no way to know what he means: that's the mystery. 16:17:54 It's like how the Romans built the Pantheon 16:18:01 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 Actually, I play Super Mario Bros on a NES emulator from time to time... 16:18:29 ---- in a time when they are being sold for a lot of money :P 16:18:35 I play old games in emulators nowadays too :3 16:18:45 Though dad has NES as well for a while 16:19:03 But mostly it was Sega Master system. Which is 8 bit actually 16:19:12 i mean like... there was no 3d, there was no polygons, there was no street fighter 16:19:23 I've got a friend who's got a Betamax player 16:19:34 So I played some 8-bit games in my childhood, but not really that much, because later dad sold the console 16:20:00 i dunno exactly 16:20:29 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 Though I didn't get computer until I was 12 16:21:42 Frooxius: anyway, your youtube is quite interesting... you're very creative 16:21:47 Before then, we had nothing, because parents divorced 16:21:56 Thanks O.O 16:23:30 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 in that housepets animation, did you work out the animation skeleton or was it done automatically? 16:23:44 Which one? 16:23:56 the one where you move him around like a puppet 16:24:30 Oh, no it was done manually, I positioned the parts with code 16:24:58 It was just silly experiment, it's not even much good |3 16:25:03 hmm... did you make the whole system? 16:25:48 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 i mean you didn't cheat with flash or anything right? :-D 16:26:15 it's not made with flash 16:26:19 ok i understand 16:26:23 so you did indeed do all the work 16:26:39 i just had to be sure 16:26:43 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 i was trying to work on a similar idea myself recently... 16:27:23 i didnt get very far exactly 16:27:39 i sort of got an interpolated arm moving 16:27:41 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 that is 16:28:04 i think one limit i had was this arm thing i made could only bend at one joint 16:28:20 (keyframe[n+1].frame-keyframe[n].frame) 16:28:28 that's the size difference 16:28:35 errr I mean. 16:28:50 Like the span of frames and the ratio is calculated like 16:29:02 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 r = (current_frame-keyframe[n].frame) / (keyframe[n+1].frame-keyframe[n].frame) 16:29:34 Then you can calculate the position as 16:30:06 actual_x = (keyframe[n].x * (1.0-r) + keyframe[n].x * (r)) 16:30:08 do you use the same system to animate tiggy? 16:30:13 No 16:30:23 That's not keyframed 16:30:49 Plus you can first apply some function on the r 16:31:09 ah don't worry im not all that smart.. i won't remember any of this later 16:31:18 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 So the animation is nice and smooth - has smooth start and smooth end 16:32:43 SinFunc(r) can be defined like { return Sin(r*(pi/2)); } 16:32:49 -!- elliott has joined. 16:32:53 Hello elliott! 16:33:02 hellooo elliott! 16:33:04 Or just "helliott" in short. 16:33:25 hello 16:33:25 elliott: You have 4 new messages. '/msg lambdabot @messages' to read them. 16:33:44 Joor so popular. 16:34:05 three of those messages were me 16:34:08 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 Well, self-popular, then. 16:34:46 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 Frooxius: i am sort of the dumb guy here.. i am clueless about esoteric programming.. 16:35:24 elliott, he's vaguely new 16:35:32 I just joined today ^^' 16:36:12 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 elliott: Frooxius is new, ontopic, and seems to understand what the channel's like 16:36:37 you can look at the mess when we welcomed em 16:37:31 ais523: Sad, then, that the Elliott Experience(tm) will likely scar em for life. 16:37:47 and he is into gamedev.. yay 16:37:48 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 and much better at it than i am 16:38:53 * pikhq mutters 16:39:12 If only Homo sapiens were intelligently designed, then I could curse the designer of the sinus. 16:39:18 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 So the transition range is 10.0 to 14.0 16:39:44 limit is limit(val, min, max) limits the value to certain range 16:40:19 Is this game an esoteric game? 16:40:32 Sorry, not really ^^' 16:40:41 We shall have to fix that, then. 16:40:46 Though I have some weird ones in plans 16:40:52 Pick a weird topology, apply to game space immediately. 16:41:05 Well experimental games at least 16:41:06 I recommend the real projective plane. 16:41:18 Phantom_Hoover: that's actually quite a good one for games, I think 16:42:10 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 It is the ONLY. WAY. 16:42:30 nuuuuu 16:42:31 Hahahaha, as if you'd ever use any language other than Haskell. 16:42:36 * Frooxius starts running in triangles 16:42:44 Phantom_Hoover: That's at least one language! 16:42:50 hmm 16:42:50 There's also the Cabal file... 16:42:51 Or condone the use of anything that wasn't either Haskell or Haskell, but moreso. 16:42:59 he is the chosen one.. in 2012 16:43:01 See, that's two languages. 16:43:05 itidus21: oh god what. 16:43:22 a mysterious mix of intelligence and creativity 16:43:51 I... 16:44:05 Frooxius: Congratulations, you're The Prophet(tm). 16:44:08 elliott: hey, implement elliottcraft (ais523 version) for me 16:44:09 Tell us about how the world will end. 16:44:11 I mean, i'ts named after you! 16:44:13 it is likely he will understand esolangs 16:44:17 *it's 16:44:18 WHATDIDIDO? Oo 16:44:24 I have no idea. 16:46:40 the force is strong with him i tell you 16:46:51 hmm... maybe it will end with Kernel Panic. Or a BSOD. 16:47:10 a mysterious mix of intelligence and creativity 16:47:14 Or whatever-Apple-Mac-OS-X-does-when-it-goes-bonkers 16:47:17 Is this intelligence relative to itidus21? 16:47:25 hmm... 16:48:06 i stand by my comment :-D 16:49:15 JUST SEEN: someone self-censoring 'screwed'. 16:49:48 s*****d? 16:49:59 Worse. 16:50:05 'Scr*wed'. 16:50:38 That's totally Nitrloglibimostri*vilious 16:51:05 Yay b*wdl*r*z*t**n 16:51:11 Frooxius: OS X just kernel panics too. 16:51:15 B****fuck 16:52:18 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 if a Mac's going to screen-of-death, at least it's going to be a /stylish/ screen of death 16:52:44 whereas Linux just locks up and flashes the num lock and caps lock keyboard LEDs 16:53:01 (and I don't think I need to explain what Windows does, it's so well known) 16:53:44 ********k. 16:53:56 I would ask what DOS does on kernel panic 16:54:01 but I'm not entirely convinced it even has a kernel 16:54:12 B****fuck <-- just realised the joke... 16:54:24 Ngevd: it's an old joke 16:54:31 but wow, that was almost as slow as Vorpal 16:54:40 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 ais523: The C64 ROM hasn't got a kernel, but it *has* got a KERNAL. 16:55:05 incidentally, most OSes don't react sanely to a GPU crash 16:55:26 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 with standard names like oswrch 16:55:40 and osrdch 16:55:58 (which made asm programs hard to read, as I mentally pronounced both words as "ostrich") 16:57:33 holy shit why is google's search bar under like 10 nested divs and tables. 16:58:18 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 It's even also at the top of the memory. 16:59:15 Well, my BytePusher version of Hunt the Wumpus is tricky... 17:02:21 Tables? 17:02:35 Tables? 17:02:49 TABLES? Oo 17:06:20 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 yep, seems about right 17:07:07 and osrdch 17:07:17 Does it make the processor stick its head in the sand 17:16:42 I think I got a "GURU MEDITATION" error out of some website the other day. 17:18:04 My notebook came with a copy of FreeDOS 17:18:08 I put it into the trash 17:18:56 qfr: it's a legal requirement that Microsoft invented, that computers have to be sold with an OS 17:19:01 (at least, they managed to force it through) 17:19:14 FreeDOS is typically used as a very cheap method of complying with that requirement 17:19:16 :L 17:19:21 by computer companies who'd otherwise be selling bare boxes 17:19:46 What's the easiest way to convert a 256x256 bitmap to a Bytepusher codepage? 17:19:51 qfr: you did put the copy of FreeDOS in the trash, not the notebook, right? 17:19:51 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 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 Actually I'm not terribly sure if it includes the palette if you write an indexed-color image. 17:25:41 But at least a grayscale image is written as a sequence of bytes in the "obvious" manner. 17:27:01 ais523: I decline to comment 17:27:21 hey, you aren't elliott! 17:27:43 oh right: Frooxius, you wouldn't happen to live in Hexham, would you? 17:28:11 No, sorry. 17:28:18 phew 17:28:19 How about Finland? 17:28:35 Why would I live there? 17:28:42 That's a *very* good question. 17:28:45 Why would anyone? 17:28:48 With a Czech hostname, both of those are rather unlikely. 17:29:23 There's two people in this channel in Hexham and god knows how many in Finland 17:29:33 Ngevd: but does anyone else know how many? 17:29:43 Deewiant: I'm sure a place as cosmopolitan as Hexham has a fairly-sized "Czechtown". 17:29:46 ais523, good question 17:30:53 ais523: It's at least five by my last count. 17:31:04 -!- Klisz has joined. 17:31:16 am I the only esolanger in Birmingham? 17:31:28 Let's see... a tehwa, D eewiant, f izzie, i neiros, m tve, and Z warddijk at the very least. 17:31:37 So at least six. And that's before we get to the bots. 17:31:44 (Okay, there's only one Finnish bot.) 17:31:51 Oh, and that's just people here now, so it's at least seven. 17:32:00 elliott: I don't think "m tve" did? But you didn't count "o klopol". 17:32:40 Birmingham, second largest city in the UK, has one esolanger, Hexham, a town with about 1% the population, has two 17:33:19 Two in Sweden? 17:33:53 fizzie: Did what? I assumed he's a Finn because you know him. :p 17:33:56 Deewiant: Aren't all of "V orpal", "o lsner" and "F ireFly" from Sweden? Though I might misremember. 17:34:10 Yes, and a few more too. 17:34:11 I believe. 17:34:14 Are there any Canadian esolangers? 17:34:21 coppro is Canadian 17:34:23 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 Is Zwaarddijk a Swedish-speaking Finn or vice versa? 17:34:28 elliott: a loril seems to be in Finland 17:34:34 Pretty sure it's the first one. 17:34:38 Unless you meant some other. 17:34:41 Oh, wait, you were just counting separately. 17:34:51 fizzie: Okay, fair enough. Maybe I'm thinking of some other Finn you know. :p 17:35:07 Deewiant: I conclude my official tally with the result: "Too many". 17:35:09 lol I like cpressy wrote a script in Perl that literally generates line noise. 17:35:13 +how 17:36:27 kallisti: don't you mean random values? 17:36:28 Ngevd: *at least two. 17:36:34 Also, cpressey used to live in Canadia. 17:36:39 for it to be /literal/ line noise it'd need to be trying to get data from a noisy connection 17:36:54 and reading noise instead 17:37:05 I have seen genuine line noise before now 17:37:06 ais523: http://catseye.tc/projects/noise/script/noise randomly generated in a certain way, yes. 17:37:23 when we linked up a couple of serial ports by physically sticking copper wires into the relevant sockets 17:37:28 and it got knocked 17:37:40 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 I've got to get some of my friends into esoteric programming 17:38:03 Ngevd: do you have friends that program? 17:38:03 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 heh 17:38:33 fizzie: I actually wrote one of those, come to think of it 17:38:35 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 I was testing a Morse code decoder I'd written that was designed to work on noisy input 17:38:58 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 but I don't count those. 17:39:27 ais523: noise cancellation is fun. 17:39:29 I am going to leave for a while 17:39:32 -!- Ngevd has quit (Quit: Goodbye). 17:44:04 @unmtl State s a 17:44:05 s -> (a, s) 17:54:22 * kallisti finds himself using Facebook less and less. 17:57:05 you still use fb? 17:57:37 yes. 17:57:42 people I talk to use it 17:57:43 stop 17:58:05 I probably will once the new terrible profile change takes place. 17:58:19 like, I was fine with every other change 17:58:21 until this one. 17:58:30 kallisti: you have reason to think one's coming other than the fact that they happen often? 17:58:37 Ngevd: why? 17:59:04 stop 17:59:05 are you zzo 17:59:22 elliott: do you seriously have to ask whether any given person is zzo or not? 17:59:37 ais523: are you elliott? 17:59:45 if I were, do you think I'd admit it? 17:59:48 kallisti: are you monqy? 17:59:53 kallisti: yes 17:59:55 clog: are you glogbot 18:00:03 clogbot 18:01:31 elliott: how was your weak squishy human sleep? 18:01:40 I have been awake since last we spakened 18:01:54 spaconed, like bacon. 18:02:29 selenium.common.exceptions.StaleElementReferenceException: Message: u'Element not found in the cache' 18:02:32 WHY 18:15:32 Selenium sucks, anyway. 18:16:00 Phantom_Hoover: well yes. 18:16:18 Tellurium is better in every way. 18:16:47 "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 NO FUCK YOU NOTHING IS "GOOD ENOUGH FOR ASCII" JESUS CHRIST 18:18:06 elliott: even toUpper isn't correct without some knowledge of the language 18:18:29 elliott: is someone trying to find excuses /not/ to use toUpper? 18:18:40 and instead use... that? 18:18:41 what? 18:18:59 that's going to basically fuck up anything that wasn't lowercase. 18:19:00 is the input known to be made out of lowercase letters? 18:19:06 Is this Haskell? 18:19:16 presumably, based on function names. 18:19:50 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 guy keeps opening trivial homework questions without even trying 18:20:12 people keep answering them by giving a complete solution >_< 18:20:25 chr . subtract 32 . ord is not only incorrect but requires more effort than toUpper. 18:20:54 elliott: well, are there any rules against answer homework questions? 18:20:59 yeah but he hadn't imported Data.Char so he was getting "not in scope" 18:21:03 so much easier to use a broken solution 18:21:15 kallisti: you are meant to try and give help for homework questions, not the solution outright 18:21:24 (they are tagged "homework", so there is no excuse) 18:22:43 -!- nooga has joined. 18:23:18 hmmmm how /does/ toUpper work with Unicode characters. 18:23:45 it /should/ be locale-dependent 18:23:51 is there like, a big table? 18:23:55 ais523: for what definition of should 18:24:03 i do not believe the unicode standard talks about locales 18:24:57 elliott: well, it depends on the language 18:25:01 Turkish is the normal example 18:25:13 and I think it more likely talks about locales than languages 18:26:21 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 elliott dead. 18:26:51 elliott: the external state would be used to determine which transformation was used, then, presumably 18:26:52 sure 18:27:42 ais523: how do I say "you're wrong" in a way that doesn't make your response "" 18:28:09 elliott: a link would be helpful 18:28:29 it is impossible to correctly determine what the capital version of "i" is without knowing the language, anyway, is the point 18:28:41 http://www.unicode.org/versions/Unicode6.0.0/ 18:28:55 -!- nooga has quit (Ping timeout: 240 seconds). 18:29:10 specifically, http://www.unicode.org/versions/Unicode6.0.0/ch04.pdf 18:29:14 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 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 “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 —joel spolsky 18:37:02 Joel on Software 18:37:03 this is actually 18:37:05 on the unicode website 18:37:17 http://www.unicode.org/announcements/quotations.html#spolsky 18:38:49 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 I knew it'd be there if I looked hard enough 18:39:26 (and I'm not taking it out of context either, although feel free to check yourself) 18:39:56 ais523: hmmmm how /does/ toUpper work with Unicode characters. it /should/ be locale-dependent 18:39:59 it isn't, your quote is irrelevant to that 18:40:29 elliott: my quote is from the database that contains the default uppercasing algorithms for unicode 18:41:03 it also says that there's a legacy best mappings database that isn't locale-dependent 18:41:16 that should only be used by legacy implementations 18:41:37 although that's at least partly to do with mapping one lowercase character to multiple uppercase characters 18:41:42 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 wow properties sure are bad in Python. 18:43:34 oh hmmm no it's a little bit better than it used to be. 18:45:03 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 ais523: that sounds like just a comment, not a definition 18:45:59 right, indeed 18:46:05 I'm trying to find the case mapping charts at the moment 18:48:21 elliott: anyway, I think it's possible that we're both right 18:48:33 it seems that there are pure legacy versions that map characters to characters 18:48:42 and more contexty versions that map strings to strings, and require locale info 18:48:50 the only case mapping charts I could find were for the legacy version 18:48:58 @unmtl Writer w a 18:48:59 (a, w) 18:49:06 "mtl"? 18:49:07 ais523: heh 18:49:11 monad transformer library 18:49:15 ah, OK 18:49:29 @unmtl WriterT (ContT r (StateT s (ErrorT e IO))) a 18:49:29 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 argh :D 18:49:37 @unmtl WriterT (ContT r (StateT s (ErrorT e IO))) [Int] a 18:49:37 [Int] (a, ContT r (StateT s (ErrorT e IO))) 18:49:41 ... 18:49:41 oh 18:49:46 @unmtl WriterT [Int] (ContT r (StateT s (ErrorT e IO))) a 18:49:46 (a -> [Int] -> s -> IO (Either e (r, s))) -> s -> IO (Either e (r, s)) 18:49:50 ais523: like so ^ 18:49:56 @mtl (a -> [Int] -> s -> IO (Either e (r, s))) -> s -> IO (Either e (r, s)) 18:49:56 Maybe you meant: ft map msg pl unmtl url 18:50:01 that doesn't exist though :P 18:50:30 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 it's just expanding the definitions recursively 18:50:52 yep, indeed 18:51:06 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 they're isomorphic if you ignore the fact that a data declaration adds an extra bottom. :> 18:52:00 but many of those are newtypes, right? 18:52:01 kallisti: they're newtypes. 18:52:03 yes. 18:53:23 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 characters where they are 1-1, and independent of context and language." 18:53:47 0130; 0069 0307; 0130; 0130; # LATIN CAPITAL LETTER I WITH DOT ABOVE 18:53:56 fizzie: thanks for finding it for me 18:55:02 elliott: I'm tempted to make semicolons an infix operator for statement blocks... 18:55:09 talk me out of it. 18:55:26 kallisti: don't work for spammers 18:55:29 oh, talk you out of /that/ 18:56:06 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 oh no, I think I ruined my Monoid instance 18:56:24 hmm it might not be a problem though 18:56:36 kallisti: ICA uses infix semicolon as sequencing, it works fine 18:56:56 the main problem is precedence 18:57:00 low 18:57:06 there's no precedence that doesn't look weird in some combination or other 18:57:06 the precedence is low. problem solved. 18:57:08 -!- iconmaster[1] has joined. 18:57:15 kallisti: lower than if? while? lambda? 18:57:32 yes 18:57:38 those are functions with () notation 18:57:38 pair formation? 18:57:47 I don't think I have that. 18:57:59 a,b;c,d is a bit of a weird case 18:58:08 because clearly a,(b;c),d is the only way it'd type 18:58:42 I don't have to worry about that because I don't treat , as an operator. 18:59:01 so technically if , is an infix operator it's lower precedence than any operator. 18:59:16 as it's defined as part of the function syntax. 19:00:07 hmmm yes I like that. I'll do that. 19:01:48 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 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 hello oerjan welcome to ~AMERICA~ 19:10:11 * oerjan looks suspiciously at elliott 19:10:28 was that scripted? 19:11:46 -!- elliott has quit (Read error: Operation timed out). 19:11:59 ~AMERICA~ 19:13:01 oerjan: I assume it also handles non-determinism? 19:13:23 well what i recall is it has this function: 19:13:23 -!- elliott has joined. 19:13:28 :t (>>-) 19:13:29 forall (m :: * -> *) a b. (MonadLogic m) => m a -> (a -> m b) -> m b 19:14:08 which is like >>- except reorders things to ensure all combinations are tried 19:14:42 19:13:01: oerjan: I assume it also handles non-determinism? 19:14:47 no it's a logic monad without nondeterminsm 19:14:48 aka 19:14:48 Maybe 19:14:51 > [1..] >>- \x -> (,) x <$> [1..] 19:14:52 [(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 *is like >>= 19:15:49 and also i think there are more efficient instances than [] 19:15:52 yeah 19:16:55 i think there's a LogicT monad transformer 19:17:04 oerjan: hmm, are monad instances uniquely determined? i suspect not, but can't think of a counterexample :) 19:17:04 :t LogicT 19:17:05 forall a (m :: * -> *). (forall r. (a -> m r -> m r) -> m r -> m r) -> LogicT m a 19:17:07 I know Functor is 19:17:36 elliott: heh i wondered about that too, whether an Applicative can extend to two different Monads 19:18:18 oerjan: it would be weird to have Functor and Monad uniquely determined but not Applicative 19:18:20 Applicative obviously isn't 19:18:28 hmm well 19:18:31 if ZipList is a monad they aren't 19:18:39 oh that 19:18:40 but if ZipList isn't a monad, there might well be only one Monad for a given Appliactive 19:18:42 Applicative 19:18:52 er 19:18:54 ZipList is a Monad ignoring bottom >:) 19:18:58 that's a different question :P 19:19:03 ok what i was originally asking was 19:19:08 are monad instances uniquely determined for a data type 19:19:08 not 19:19:09 i'm not _entirely_ sure what it is with bottom 19:19:11 are monad instances uniquely determined for an applicative instanc 19:19:11 e 19:19:18 some data types have multiple Applicatives so they're not equivalent 19:19:25 oerjan: i do not believe you have proved that 19:19:30 ok so a simpler question 19:19:40 which one is simpler? 19:19:41 is there a type which has two Monad instances. 19:19:46 right 19:19:56 in fact there is an obvious one 19:20:08 State can be reconsidered as Reader + Writer 19:20:14 hmm 19:20:17 -!- copumpkin has changed nick to HURR_DURR. 19:20:19 that has a Monoid constraint though 19:20:25 you could make the StateList monad, though 19:20:31 and have it be Reader + Writer as well as State 19:20:39 sure but that's a constraint on the parameter, not the monadic value 19:20:39 ok, cool 19:20:45 data T a = List [a] | Maybe (Maybe a) -- Nobel prize plz 19:20:49 are the applicatives the same? 19:21:19 well I guess that's not two different instances 19:21:20 just one still. 19:21:55 elliott: no they're not the same, the applicative of State still threads the state 19:22:09 liftA2 get get 19:22:11 er 19:22:16 liftA2 (,) get get 19:22:21 or hm 19:22:41 liftA3 (,,) get (modify (+1)) get 19:23:23 wat 19:24:04 well you could always do something stupid like... 19:24:25 make >>= only apply the function to the first list element if there is one. 19:24:26 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 basically a Maybe monad instance for [a] 19:24:58 :t listToMaybe 19:24:59 forall a. [a] -> Maybe a 19:25:16 -!- quintopia has quit (Ping timeout: 252 seconds). 19:26:14 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 yeah 19:29:38 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 there _are_ laws to fulfil, after all. 19:31:10 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 similar to what? 19:31:47 to g . k = fmap k . g 19:32:14 Right. 19:32:22 *suspect 19:34:43 Gregor: NAG NAG NAG 19:35:11 `log zjoin.*scanl1.*diag 19:35:18 emacs has taken a liking to randomly freezing on saves for some reason. 19:35:22 -!- quintopia has joined. 19:35:35 2011-12-17.txt:05:00:42: @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 ah okay, now I see why they say Haskell's type system is like a mini-Prolog. <-- without backtracking though, afaik 19:40:14 and no proper constraint solving 19:43:57 i suppose it does at least allow reordering constraints by taking the once it can solve immediately first 19:44:01 *ones 19:44:58 @tell Gregor !!!!!!! 19:44:59 Consider it noted. 19:46:23 oerjan: ban Gregor, he's obstructing my construction of ch2 19:46:32 obstructing my construction so induction has no suction 19:52:00 oerjan: btw i think the word you're looking for is "woven" :P 19:55:39 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 what 19:57:05 also 19:57:11 ur the one who complaininged abotu the log formats 19:57:13 ings 19:58:48 oh i see, this obligates me to institute a cruel and unusual regime 19:59:01 -!- Ngevd has joined. 19:59:08 no, you've already done that part 19:59:14 oh right 19:59:18 Hello! 19:59:51 hellooooo! :3 20:02:31 "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 i 20:03:51 what 20:03:57 what is |3 meant to mean 20:04:13 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 Ngevd: Don't worry, he isn't. 20:05:03 |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 Frooxius: I don't believe you. 20:05:37 it's clearly like a pipe on the 3rd file descriptor or something. 20:05:49 Well it can have multiple meanings 20:05:52 Frooxius......................... 20:06:00 What? Oo 20:06:11 is it like a robot cat 20:06:23 because that is the only way that could conceivably look like a cat 20:06:32 yeah, that too probably 20:07:35 It's like that guy in Star Trek TNG, with the weird sunglassesd 20:08:07 geordi 20:08:17 Possibly 20:08:30 it's cat-geordi 20:08:32 I don't really watch Star Trek enough to have ever seen a full episode 20:08:42 Geordicat 20:23:00 Odocat. 20:23:05 (It is a very smug cat.) 20:25:30 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 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 swat Gregor for being absent pls 20:27:07 but yeah that thing is STUPID 20:27:19 * oerjan swats Gregor for being absent -----### 20:29:30 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 a german one sounds more like oi in oil 20:29:52 i know its oiler but ewler sounds so much better 20:30:04 no it doesn't :P 20:30:16 oerjan, I don't make this mistake with, e.g., euthanasia 20:34:59 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 oerjan: seems Keymaker got them 20:37:19 heh 20:37:22 i know its oiler but ewler sounds so much better 20:37:25 Excuse me wrong. 20:37:43 Although it's not as bad as people who pronounce Gauss as 'goss'. 20:37:49 gorse 20:40:02 http://upload.wikimedia.org/wikipedia/commons/a/a1/De-carlfriedrichgauss.ogg 20:40:07 you should say his full name like this always 20:40:28 -!- nooga has joined. 20:41:14 oh it's 20:41:15 gouse 20:41:18 i say gorse 20:41:19 mentally 20:41:22 gorse and ewler 20:41:27 there's a gauss in the house 20:41:30 well 20:41:33 Phantom_Hoover: i don't actually say ewler 20:41:34 i say 20:41:36 youwler 20:41:39 wtf gorse why 20:41:42 oh wait you're british. 20:41:44 nevermind 20:41:52 au is like 20:41:53 or 20:41:54 gorse 20:41:58 I bet you say saw with an r don't you. 20:42:00 asshole 20:42:29 how can you rationalize that to make any sense at all? 20:42:41 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 also 20:42:46 dude 20:42:54 http://en.wikipedia.org/wiki/Rhotic_and_non-rhotic_accents 20:43:10 I see 20:44:54 but that doesn't really explain why 20:44:57 saw has an r in it 20:44:59 when there's no r 20:45:00 in it. 20:45:12 kallisti: I think that's the intrusive r 20:45:37 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 what? 20:47:07 -!- sebbu2 has quit (Read error: Connection reset by peer). 20:47:13 Sigh, microphone on this doesn't work. 20:47:29 Get Ngevd to do it. 20:47:36 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 Ngevd: what is its nearest equivalent? 20:48:15 sore 20:48:20 oh... 20:48:42 Saw and sore sound the same; so, amusingly, do pawn and porn. 20:48:58 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 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 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 elliott: but... that's what is happening. 20:50:17 you want me to unthink what is happening? 20:50:33 sheesh, just talk like Americans: problem solved. 20:50:45 Merry, Mary, Marry 20:50:50 just switch accents depending on which of porn or pawn you're saying 20:51:25 kallisti, *sigh*. 20:51:41 rs extend and... round off vowels. 20:51:48 elliott: so basically "non-rhotic" means "add r's to things." non-intuitively. got it. 20:51:56 kallisti: Nope. 20:52:00 You really are an idiot. 20:52:01 http://en.wikipedia.org/wiki/Rhotic_and_non-rhotic_accents 20:52:31 It means that rs before consonants aren't pronounced, and instead apply the aforementioned transform to the preceding vowel. 20:52:32 yes I read that. 20:52:52 The result of this is that 'or' sounds like 'aw'. 20:53:44 that doesn't really explain anything though. so "aw" becomes "awr"? 20:53:46 http://en.wikipedia.org/wiki/Linking_and_intrusive_R 20:54:10 oh hi. 20:54:56 No, you twat. 20:55:01 'aw' stays as 'aw'. 20:55:14 Because 'or' now sounds like 'aw', 'or' and 'aw' sound the same. 20:55:19 This is ridiculously simple. 20:55:22 Phantom_Hoover: ^ 20:55:22 so "awr" 20:55:28 with an r 20:55:31 ? 20:55:38 Jesus christ you really are an idiot. 20:55:42 The whole point of non-rhotic is that there's no r's 20:55:47 They both sound like 'aw'. 20:55:49 rho is Greek for "r" 20:55:50 Ngevd, um no? 20:55:56 Ngevd: ^ 20:56:05 'r' is still present if not followed by a consonant. 20:56:34 repeating what non-rhotic means is not going to help explain anything. 20:57:19 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 oerjan, do you see the problem with explaining things to kallisti? 20:58:11 http://en.wikipedia.org/wiki/Linking_and_intrusive_R explains it perfectly 20:58:27 Phantom_Hoover: *MWAHAHAHA* 20:59:05 -!- HURR_DURR has changed nick to copumpkin. 20:59:54 basically in some non-rhotic accents an /r/ is added between two consecutive vowel sounds and other weird places. 21:00:15 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 That's right! kallisti has figured it out! 21:01:02 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 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 elliott: Wikipedia doesn't disagree with what I just said? 21:01:25 oerjan: yes. 21:01:48 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 ? 21:01:56 I think I know less about rhotic accents now than I have ever known before 21:02:16 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 `addquote I think I know less about rhotic accents now than I have ever known before 21:02:23 Phantom_Hoover: no 21:02:25 792) I think I know less about rhotic accents now than I have ever known before 21:02:48 I never knew anything about rhotic accents, and now I still know nothing about them. *happy* 21:03:14 olsner: think of it as /r/ gradually changing from a phoneme into a non-phonemic way of separating adjacent vowels 21:03:36 kallisti, yes, *you do*. 21:03:56 with the change being/stopping at different stages in different dialects. 21:04:04 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 Phantom_Hoover: I don't know everything, obviously. 21:04:52 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 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 kallisti, oh? Then why did you need to read that WP article? 21:06:46 Surely you knew everything it contained beforehand? 21:07:09 Phantom_Hoover: hey stop leaping to conclusions about other people's behavior! oh wait... 21:07:28 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 " I bet you say saw with an r don't you. asshole how can you rationalize that to make any sense at all? 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 co-cromulent should be a word 21:09:48 kallisti, and yet you approached it with an air of smug pedantry, not confusion. 21:09:51 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 Phantom_Hoover: I'm generally not confused when I don't know everything. ??? 21:10:43 this is the normal state of affairs. 21:10:48 but sure 21:10:53 I sound smug. often. 21:10:56 * oerjan has this feeling that was a bad idea 21:10:58 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 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 Phantom_Hoover: can't be arsed. 21:12:31 good world championship for oerjan, as he is (by definition?) the only contestant 21:13:13 I KNEW IT 21:13:18 Very good. Can you now concede the discussion? 21:13:26 imagine if there weren't jokes to deflect criticism with 21:13:33 the human race would be so fucked 21:13:34 Welcome to the world championship in passive-aggressively communicating only through /topic 21:13:51 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 I think I was expecting a different concession 21:14:27 kallisti, OK, I'm sorry; I forgot that your brain is context-free. 21:14:40 Phantom_Hoover: depends on how much sleep I've had. :P 21:14:47 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 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 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 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 I mean, when did anything turn recursive anyway? 21:18:39 olsner: we had to expand due to great demand 21:19:35 olsner, when we remembered that we're a programming channel, so recursion jokes are required. 21:19:53 Phantom_Hoover: I... still think it's stupid. But at least understand how it happens. 21:19:55 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 olsner: when elliott berated me for berating Phantom_Hoover for berating kallisti 21:20:28 oerjan is my knight in shining armor. 21:20:31 i wasn't being passive-aggressive though, i mentioned you directly by name 21:20:32 always coming to my rescue. 21:20:44 Phantom_Hoover: but... adding the word recursion doesn't necessarily make it a recursion joke 21:20:46 elliott: ah. sorry about that. 21:20:57 olsner, I'm sorry, are you new to recursion jokes? 21:21:08 elliott: i may not be entirely sure about the term 21:21:12 You seem to be under the impression that they're meant to be funny, or even make sense. 21:21:52 yes, I expect such things of jokes 21:22:04 not making sense, but being funny, I expect of them 21:22:43 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 Phantom_Hoover: We should do induction jokes instead? 21:22:55 actually already my first topic change was recursive, as i certainly included myself in the reference 21:22:57 When you type "induction" into Google it should say "did you mean: inductio". 21:23:05 Inductio! 21:23:07 Until it ends up at "did you mean: base case". 21:23:24 Phantom_Hoover: Sounds like a Harry Potter spell. 21:23:37 (I:[NDUCTION]) 21:23:51 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 Or should that be (I : [N D U C T I O N]) 21:24:13 Phantom_Hoover: Is that an Inception joke (you will die if it is). 21:24:32 no I think it's a linked list joke. 21:24:33 You just made a crappy recursion joke with induction! 21:24:35 if that's even possible. 21:24:38 Recursion jokes are meant to be recursion jokes. 21:24:39 I can do them too! 21:24:47 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 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 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 see, people, you need base cases! 21:25:22 ais523: please op me 21:25:32 you all know what you have done 21:25:33 elliott: who are you planning to kick/ban? 21:25:34 ais523, no, as it isn't it's just a recursion reference. 21:25:40 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 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 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 zzo38: what about a CGYRMBK printer? 21:26:24 ais523: What is a CGYRMBK printer? 21:26:26 elliott: I'm not sure there is one, but it at least makes me curious 21:26:38 zzo38: a printer that uses six colors of ink, plus black as an optimisation 21:26:45 most people see, say, a cyan+yellow mix as green 21:26:53 but the exact mix is slightly different for different people's eyes 21:27:02 and for a tetrachromat, you might not be able to do it at all 21:27:13 so using six channels rather than three makes sure you can control the color a lot more carefully 21:27:28 although I guess it's only used in really high-end printing 21:27:29 they should just use one channel for every possible wavelength 21:27:40 elliott: the problem is finding one /ink/ for every possible wavelength 21:28:01 elliott: the best answer is probably not to mention anyone by name.. 21:28:02 black ink mixed with a chemical that induces color blindness 21:28:03 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 kallisti: well i left you off the list just in case 21:29:12 here's a good answer: 21:29:24 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 this is just common sense. 21:29:51 that was mathnerd 21:29:53 Since the DVI format allows you to use whatever new kind of special commands you want to make up 21:29:56 anyway, if we're using one channel for each possible wavelength 21:30:02 what wavelength do we use for #esoteric? 21:30:04 also i assume ais523 knew i meant a one-time oppage 21:30:08 ais523: octarine 21:30:12 yes, fair enough assumption 21:30:17 elliott: what's that in nanometres? 21:30:22 ais523: i 21:30:25 ais523, 567nm. 21:30:54 that was i as in i \in C 21:31:18 elliott: I figured it eventually, although it took a few tries 21:31:55 -!- mr_schlauch has joined. 21:32:01 `welcome mr_schlauch 21:32:05 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 gah, I can't read the wololo in the hostname as anything but an Age of Empires reference 21:32:59 freebnc.net? that sounds secur 21:32:59 e 21:33:14 what would the b stand for there? 21:33:38 Phantom_Hoover: I see you've tactfully disappeared from this thread of discussion. :P 21:33:41 ais523: err? 21:33:50 elliott: I know what a VNC is, but not a BNC 21:33:57 kallisti: but so has mr_schlauch 21:34:02 ais523: bouncer 21:34:08 ah, I see 21:34:22 free bouncer -> give your irc password to random people with no reason to be nice to you :) 21:34:28 kallisti, yes, for much the same reasons as my tactful disappearance from conversations with brick walls. 21:34:36 elliott: not identified 21:34:38 so no password being given 21:34:46 ais523: that doesn't make the idea of a free bnc any more secure 21:35:02 Phantom_Hoover: but you'll leave the walls offended! 21:35:25 ais523, they might not let me lean on them! 21:36:57 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 breaking news Phantom_Hoover admits to wanting to lean on kallisti 21:37:19 my ship....... has sailed.................... 21:37:37 lol 21:37:40 kallisti makes conscious effort to lean and grow as a person 21:37:45 he is a pea plant?? 21:37:49 yes. 21:38:02 Mendel would be proud. 21:38:07 he is my godhead. 21:38:51 Phantom_Hoover: hmm, or maybe not attribution bias, but a lack of self-awareness in how I present myself. 21:39:31 `addquote oh right: Frooxius, you wouldn't happen to live in Hexham, would you? No, sorry. phew How about Finland? Why would I live there? That's a *very* good question. Why would anyone? 21:39:33 793) oh right: Frooxius, you wouldn't happen to live in Hexham, would you? No, sorry. phew How about Finland? Why would I live there? That's a *very* good question. Why would anyone? 21:39:47 WHATDIDIDO? Oo 21:39:50 i was gonna addquote that at the time 21:39:52 but got too lazy 21:40:00 Frooxius: terrible things 21:40:01 prepare to be banned 21:40:04 nuuuuuuu 21:40:09 * Frooxius flails and runs in funny shapes 21:40:17 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 what are funny shapes 21:41:04 Octahedra 21:41:05 Lemonoid 21:41:19 triangulum bisectoids 21:41:25 rhombidodecahedron 21:41:30 dual of a pentagonal antiprism 21:41:42 alexander horned potatogons 21:41:46 Phantom_Hoover: not really, no. 21:42:03 alexander horned potatogons 21:42:03 vigintihedra 21:42:09 Phantom_Hoover: thanks, i know what to name my child now 21:42:26 Alexander Horned Potatogon Hird? 21:42:33 What if the child is female? 21:42:40 Alex is a female name. 21:42:55 But Alexander is not. 21:43:03 it could be! 21:43:09 Alexia is a female name, and a neurological condition. 21:43:29 In fact, if I ever have a daughter I will name her that and then snigger whenever I hear her name. 21:43:42 File under "why Phantom_Hoover must never reproduce". 21:43:46 I thought it was Alexandra? I guess Alexis could be a name too. 21:44:05 — Elliott "I will name my child Azimuth" Hird. 21:44:08 Phantom_Hoover: If they're a girl I'll just swap it around: Potatogon Horned Alexander Hird. 21:44:09 kallisti, Alexandria. 21:44:13 SHUT UP AZIMUTH IS A COOL NAME 21:44:15 (That's a city.) 21:44:15 although 21:44:18 not as cool as 21:44:20 Phantom_Hoover: o rly? :P 21:44:22 uh 21:44:28 kallisti, die, seriously. 21:44:29 nope it's the coolest 21:44:50 Phantom_Hoover: rest assured I know Alexandria is a city because it exists in the United States as well. 21:44:54 otherwise I would be oblivious. 21:44:56 Phantom_Hoover: im naming my kid Orly 21:45:10 middle name 21:45:11 Nowai 21:45:14 because 21:45:19 iw ant my child to grow up with a healthy sense of self-loathing 21:45:20 and despair 21:45:36 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 yes, this is for my second kid 21:46:13 kallisti: so controversial 21:46:14 (insert obvious jokes, ha ha ha ) 21:46:25 Phantom_Hoover: alexander horned potatogon orly nowai hird 21:46:34 fuck it crossed the line of terrible back into awesome 21:46:40 they can just sign things as -AHPON 21:46:46 -!- elliott has changed nick to ahpon. 21:46:54 what ahpon 21:46:56 *ahponh 21:47:02 ahpon could easily be their pseudonym as an electronic or hip hop artist. 21:47:09 Phantom_Hoover: alexander horned potatogon orly nowai 21:47:18 WHATDIDIDO? Oo <-- you got innocently involved in a driveby quoting accident 21:47:34 "Bahahahaha nobody will guess who I am if I refer to myself by my initials!" 21:47:44 Phantom_Hoover: but 21:47:44 ahpon 21:47:45 si cool name 21:47:54 WHATDIDIDONOW? Oo 21:48:01 ahpon: you look stupider with that name 21:48:12 `words --eng-gb --canadia 25 21:48:16 Frooxius: packed too many words into one and lost your nose 21:48:18 -!- ahpon has changed nick to elliott. 21:48:18 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 engree 21:48:26 -!- elliott has changed nick to engree. 21:48:30 * Frooxius goes to search for his nose 21:48:50 What about Stramillicon Tibia Rapunda Alexander Horned Potatogon Orly Nowai? 21:48:52 psychon is my new internet handle 21:49:16 A noncarbering declack? 21:49:20 Phantom_Hoover: that's so unproposte 21:49:32 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 Phantom_Hoover: tibia is the best part of that 21:49:37 -!- itidus20 has joined. 21:49:39 because people will ask me like 21:49:41 why did you name your kid that 21:49:42 and i'll go 21:49:43 Probably a component of a Dussarct. 21:49:48 well tibia is my favourite body part after alll hah aha 21:49:55 Phantom_Hoover: tibia is a real thing dude........ 21:50:06 Yes? 21:50:16 Honestly, fancy not knowing what a tibia is. 21:50:24 well you are scottish 21:50:45 engree: it would be more reasonable to assume an American doesn't know what a tibia is. 21:51:08 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 Phantom_Hoover: are you unable to twist your leg joints? 21:51:54 -!- itidus21 has quit (Ping timeout: 252 seconds). 21:51:56 Why would you want to do that? 21:52:16 to do traditional folk dance of course. 21:52:21 as a scot this is important. 21:52:33 rhotic or non-rhotic folk dance? 21:52:47 the one where you add a bunch of r's, probably non-rhotic. 21:53:42 -- kallisti "gosh i'm really only smug about these things by accident" kallisti 21:54:05 only sometimes. :> 21:54:12 the rhotic or non-rhotic unladen swallow dance 21:54:42 Nitin Aftwott could be a name 21:55:23 stalatickly: prone to giggle uncontrollably when touching things in caves 21:55:31 engree: also that wasn't really smugness. 21:55:42 or when touched by caves? 21:55:43 that was a joke. ha ha 21:55:47 -!- pikhq has joined. 21:55:51 caves usually don't poke at people though 21:56:15 whatever you do, don't cross the weitmen 21:56:22 kallisti: jokes can be smug 21:56:23 I imagine this could be Nitin Aftwott's area of expertise 21:56:32 especially when they're indistinguishable from smartassery 21:56:42 and may make people more likely to see smug intent where there is none in the future! 21:56:46 Ngevds can be sleepy 21:56:49 Goodnight 21:56:51 -!- Ngevd has quit (Quit: Goodbye). 21:56:52 Ngevd: dude 21:56:52 its 21:56:53 nitin aftwott, spelunker 21:56:55 10 fucking pm 21:57:14 engree: hey at least I was being accurate! 21:57:29 it probably would be the non-rhotic one. if non-rhotic dances were a thing. 21:57:30 engree: 11 pm in CET 21:57:40 or is ngevd from hexham? 21:58:08 ... 21:58:26 olsner: i think you just outdid Vorpal 21:58:39 kallisti: regardless of style, you dance like an unproposte baffice 21:59:09 oerjan: hmm, at what? 21:59:10 oerjan: undid him how? 21:59:14 olsner: yes, ngevd is from hexham. 21:59:20 er *outdid 21:59:22 that's sort of what started the whole hexham thing. 21:59:26 olsner: obliviousness 21:59:34 oerjan: obliviousness to what? 21:59:39 ha ha ha ha ha 21:59:40 ha 21:59:44 ^ha 21:59:44 ha. ha. ha ha. ha ha ha. ha ha ha ha ha. ha ha ha ha ha ha ha ha. ha ha ha ha ha ha ha ha ha ha ha ha ha. ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha. ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha 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 What is that, a laughing Fibonacci? 22:00:19 whenever someone says facepalm I think of like a really cool kung fu move. 22:00:26 where you wack someone in the nose with your palm. 22:00:43 qfr: yes. 22:00:51 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 the hexham-helsinki-hell axis 22:02:29 engree: I guess it's wrong to be smug. unless you actually are superior because you know more! 22:02:33 hexland and finham 22:02:43 engree: this is the lesson I have learned from #esoteric 22:02:56 kallisti: well, between someone who's smug and wrong and someone who's smug and right... 22:03:08 alternatively: two wrongs, etc. 22:03:39 * oerjan passive-aggressively twiddles his thumbs 22:04:18 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 oerjan: do you really think just fidgeting and complaining whenever anything like this comes up actually accomplishes anything 22:04:48 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 maybe we could make the channel so you never see what anyone else writes 22:05:24 should prove conflict free 22:06:06 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 engree: and now I understand. so cool. 22:07:03 :> smug face. 22:07:07 ...which is why complaining that these things are ~drama~ is way more disruptive than talking about these things. 22:07:20 drama? where? 22:09:02 also oerjan's not really disruptive. I like that he defends me (not necessarily what I'm actually saying). :D 22:09:10 therefore he is not disruptive 22:09:12 * kallisti good logic. 22:09:20 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 oerjan: shame on you. 22:10:35 Zetro: oh and fuck you for being so quiet 22:10:37 xandy: you too 22:10:52 * kallisti hates everyone. rageignores everyone. 22:10:52 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 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 Maybe when I sleep I become Taneb, go back in time, and act out the day as him. 22:12:23 Calculation of Chinese New Year: http://zzo38computer.cjb.net/img_14/chinese-new-year.png 22:12:29 also you have memory loss of what you did as elliott 22:12:37 which makes it way more convincing. 22:12:46 Phantom_Hoover: why did they have heart attacks? 22:13:28 olsner: What's a really small, boring town in Sweden? 22:13:33 Well, not really small. 22:13:36 Stockholm. 22:13:38 Like, pop. 10k. 22:13:47 Kinda ruraly, countrysidey-located. 22:13:49 aha, trick question: all of them! 22:13:52 Maybe has a market. 22:13:53 Ha. 22:14:00 No but seriously what's the equivalent of that, just name one. 22:14:19 Someplace people in the area will know about but people on the other side of the country might not. 22:14:24 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 http://en.wikipedia.org/wiki/Fagersta perhaps 22:14:43 olsner: OK, so imagine there's a guy on IRC in a small, tight-knight community who's from Fagersta. 22:15:02 maybe we could make the channel so you never see what anyone else writes 22:15:07 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 Just /ignore *!*@* ALL 22:15:19 olsner: Someone says "Please tell me you're not from Fagersta", and they go "How did you know???". 22:15:41 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 X-D 22:16:02 ha. ha. ha ha. 22:16:17 olsner: OK, let's put it this way: Hexham is known for having a big ol' church and a market. 22:16:19 3-order Fibonacci laugh has been permitted. 22:16:22 Västmanland, the land of vast men. 22:16:25 olsner: It's mostly houses. 22:16:28 And boring shops. 22:16:35 And boring people. 22:16:55 where I live is mostly Anytown, USA 22:16:57 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 If someone from Nowhere, Ireland turns up I will have to leave and never come back. 22:17:18 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 And carry a gun so you can shoot them. 22:17:30 It's prevention. 22:17:58 -!- ais523 has quit (Ping timeout: 240 seconds). 22:18:00 "unitary authority" is that kind of like a county? 22:18:22 oh no that's "ceremonial county" I guess one is a political entity and the other is formal/historic? 22:18:55 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 oh no unitary authority is more like a state district, kind of. 22:19:27 at least in size. 22:20:10 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 fuck this discussion. too meta. 22:21:28 this is like metametametadiscussion now. 22:21:37 This discussion is a RationalWiki trigger, can it stop? 22:21:52 discussion about the discussion about the metadiscussions 22:22:14 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 There are people with more meta rep than main-site rep. 22:22:33 (Nowhere, Ireland is named after a pile of stones. Seriously.) 22:22:34 You can set /meta reputation bounties/ on questions there. 22:22:35 let's go back to the main discussion, where we're just assholes to one another. 22:23:34 kallisti: Fuck you. 22:23:42 oerjan taking me seriously in 3, 2, 1... 22:24:14 engree: is there a word for when you cause something not to happen by predicting that it will happen? 22:24:17 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 kallisti: self-defeating prophecy 22:25:18 sounds good. 22:25:26 -!- pikhq has joined. 22:25:26 -!- yiyus has joined. 22:25:26 -!- SimonRC_ has joined. 22:25:41 I imagine a netsplit as like a huge storm seperated a bunch of ships.. 22:25:47 or an earthquake. 22:26:11 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 You have a limit? 22:26:33 You'd've thought spamming the channel to the condemnation of all would cross it. 22:26:45 Phantom_Hoover: hey i _did_ ban fax. 22:26:56 oerjan, because nobody asked you to? 22:27:16 oerjan: That was a joke based on your repeated tendency to miss such in-context ironies. 22:27:35 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 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 engree: you realize i was joking in my ^^ message? 22:30:32 oerjan, doesn't make what he said any less true. 22:31:07 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 I take my comments back. 22:31:38 hey if it needed to be said... 22:32:04 I put them back on the table! 22:32:15 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 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 (I['m soorrry I 'mtired) 22:34:17 m['e to 'o 22:34:21 (not really) 22:34:27 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 *n 22:36:22 it was quite an experience i must admit 22:36:42 i lost it at "i am the singularity" 22:38:10 `words 10 22:38:15 sitalk mecut ted folson leiset rehen pantauth uuiorma cyclam han 22:38:33 did freenode reset the dates on all the ban lists again 22:38:40 cyclam = pokemon 22:38:58 pantauth = pokemon 22:39:05 -!- Klisz has quit (Ping timeout: 240 seconds). 22:39:09 it's irritating when you cannot distinguish old bans from new ones 22:39:15 leiset = pharmecutical 22:39:37 what was the mathnerd event? 22:39:59 -!- FireFly has quit (Ping timeout: 248 seconds). 22:40:08 `log mathnerd.*> [0-9]*$ 22:40:14 Uuiorma Rehen is probably a finnish name 22:40:27 No output. 22:40:30 huh 22:40:52 hmm, case sensitive? lack of quoting for the space? 22:41:00 `log mathnerd.*>.[0-9]*$ 22:41:07 2011-02-18.txt:22:52:01: Hask = (->) 22:41:39 `log mathnerd...>.[0-9]*$ 22:41:45 No output. 22:41:54 `log mathnerd.*>.*[0-9]$ 22:42:01 2010-04-25.txt:21:12:09: 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 `log mathnerd.*>.[0-9]+$ 22:42:10 No output. 22:42:11 Hask = (->) 22:42:14 ^^ lol 22:42:32 hm wait 22:42:58 `log mathnerd.*> 22:43:05 2010-10-30.txt:21:58:41: that has to change... I want computer typography! 22:43:31 nah obviously it never really happened. 22:43:49 oh hm 22:44:03 `log mathnerd.*i am the singularity 22:44:09 2012-01-02.txt:22:44:03: `log mathnerd.*i am the singularity 22:44:19 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 oopse 22:44:30 `log mathnerd[3].*i am the singularity 22:44:37 No output. 22:44:58 `log mathnerd.*\d\s*$ 22:45:05 2010-05-04.txt:01:54:25: !haskell flip (-) 1 2 22:45:22 `log mathnerd.*>\s*\d\s*$ 22:45:28 No output. 22:45:33 yep never happened. 22:45:46 `log (?i)mathnerd.*>\s*\d\s*$ 22:45:52 No output. 22:45:58 -!- FireFly has joined. 22:46:19 actually was that when glogbot was down? 22:46:41 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 Sgeo, I would yell at you for bringing up AW, but it's pathologically fascinating. 23:00:42 back 23:01:00 Hask = (->) 23:01:00 ^^ lol 23:01:02 he's correct 23:01:04 pathological and fascinating 23:01:50 engree: the Hask category is literally equivalent to the function type? 23:02:19 kallisti: if you look at category-extras you will see the line 23:02:20 kallisti: The morphisms is, I think 23:02:22 type Hask = (->) 23:02:31 yes the morphism is the function type 23:02:36 the objects are the types. 23:03:14 a morphism is _a_ function 23:03:41 the question I ask is: are categories their morphisms? 23:03:49 this seems incorrect to me. 23:03:59 kallisti: it's surely irrlevant, as mathnerd was almost certainly explaining some signature or declaration in category-extras 23:04:02 *irrelevant 23:04:09 but in haskell 23:04:11 @src Category 23:04:11 Source not found. :( 23:04:13 yes, they are. 23:04:16 fuck you lambdabot 23:04:20 engree: ah okay. I suppose that's the flaw of taking logs out of context. 23:04:22 kallisti: it's one possible axiomatization of categories to only consider the morphisms 23:04:54 How do you define the morphisms without objects? 23:04:57 oerjan: hmmm, I suppose the set of all morphisms does contain all of the relevant information... 23:04:58 Compositions? 23:05:04 Phantom_Hoover: yes 23:05:29 (How does Hask work with functions being types?) 23:05:29 you can identify the objects with the identity morphisms 23:05:50 Phantom_Hoover: it doesn't... 23:05:52 (Are functions-as-morphisms and functions-as-types separated?) 23:06:08 Phantom_Hoover: a function is not a type 23:06:18 the morphisms are function _values_ 23:06:23 (Int -> Int) isn't a type? 23:06:31 Oh, right. 23:06:54 those category theorists should really have consulted with programmers before deciding on their terminology 23:07:35 Those programmers should really have consulted with me before trying category theory wait i am become kallisti 23:08:18 It is Cartesian closed category, it has something to do with that things 23:08:24 Phantom_Hoover: what's funny is that I never actually say things like that. 23:08:33 and if I do I'm probably joking. 23:08:40 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 hey oerjan should I read Mac Lane 23:08:48 in a self-deprecating manner, in fact. 23:09:01 engree, he had things written on him? 23:09:15 Phantom_Hoover: Shut up all the cool kids refer to the book like that. 23:09:27 kallisti, self-deprecation doesn't make being stupid cool. 23:09:42 i think the absence of genuine categorical products might mess it up slightly 23:09:50 Phantom_Hoover: that's an interesting and irrelevant point. 23:10:06 oerjan, is this _|_ again? 23:10:49 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 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 hey oerjan should I read Mac Lane <-- well although it's a standard recommendation, i haven't done so myself, so... 23:12:43 kallisti: That question should be directed at Phantom_Hoover, I just wanted to skip 5 hours of tedium. 23:13:07 Phantom_Hoover: yeah iirc 23:13:12 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 Won't Mac Lane be approaching it from a topological angle? 23:13:24 o.O BitBucket has an option to do git 23:13:43 The reason I'm using BitBucket is because Gregor has me thinking that it may be easier 23:13:51 Erm, that hg may be easier 23:14:02 engree: hm it probably has a lot of advanced examples, at least 23:14:22 oerjan: well the first i heard about mac lane was people saying it was just too much for them :P 23:14:36 but then, it's likely most mathematicians don't know all of them either :P 23:14:36 people who _actually know mathematics_!! 23:14:44 Chapter VI. Monads and Algebras. 23:14:44 Chapter VII. Monoids. 23:14:46 good ordering 23:15:06 Chapter VII: Monoids. A monoid is just a monad not necessarily in the category of endofunctors, what's the problem? 23:15:46 Endomorphisms of a category make a monoid too 23:18:07 -!- Patashu has joined. 23:18:17 Phantom_Hoover: One day I will know more category theory than you and THEN the tables will be TURNED. 23:18:21 engree: i guess this may be one book where you're not expect to get all the way through :P 23:18:25 *ed 23:18:32 engree, I don't really know category theory? 23:18:42 one day, coming now 23:18:47 Phantom_Hoover: THAT IS WHY IT WILL BE EXCEEDINGLY EASY 23:19:09 I'm kind of baffled why you thought I did. 23:19:13 I didn't. 23:19:16 * engree would prefer Categories for the Working Magician. 23:19:50 hmm, page 1 doesn't look so bad 23:19:57 * engree is checking the amazon preview :P 23:20:12 Behold, as I saw a functor in half! 23:20:58 "whenever possible we write f x and not f(x), omitting unnecessary parentheses." 23:21:07 oerjan: category theory was evidently doomed to end up in haskell from the start 23:21:20 obviously 23:22:00 huh this is simpler than i expected 23:22:01 although 23:22:02 I'm fairly sure the topology book with the surprise category theory was a graduate texts in mathematics book too. 23:22:03 it is only page 4 23:22:29 i really don't like these diagrams though :'( 23:22:38 they should make linear notation for them :P 23:22:52 engree: what, the diagrams are like half the point 23:23:12 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 trying to grasp the snake lemma without diagrams - not pretty. 23:25:18 not that i remember what the snake lemma actually said. 23:25:26 oerjan: Phantom_Hoover: yeah but they're ugly :P 23:25:48 oerjan: so what did you read to learn cat theory (as i will henceforth call it, forever) 23:25:50 I've always found them quite pretty. 23:27:00 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 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 oerjan: what is category theory 23:28:07 and of course the K-theory used in my PhD 23:28:09 in fact I probably spent about 6 months slowly reading things about Perl before I ever actually wrote a real program. 23:28:40 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 * engree tries the last one 23:28:50 Algebraic topology books? 23:29:08 Patashu: ask people question in this channel 23:29:10 er 23:29:11 Phantom_Hoover 23:29:31 About algebraic topology? 23:29:42 engree: ask me all of your category theory questions. I am the expert. 23:29:52 wait, grothendieck literally lives in the mountains in the middle of nowhere? 23:29:55 awesome 23:30:35 NationalityNone (Stateless) 23:30:36 wait, how did he manage that one 23:31:45 "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 ... 23:32:17 engree: Some countries actually state that you have the right to become stateless. 23:32:26 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 Phantom_Hoover: You didn't hear about that? 23:32:36 engree: yes you can learn these things and more by asking me questions. 23:32:41 Why would I have? 23:32:50 Phantom_Hoover: Well, it came up in here. :p 23:32:59 grr, the article doesn't explain how he became stateles 23:32:59 s 23:33:08 * engree considers citation needing it 23:33:23 http://en.wikipedia.org/wiki/Talk:Alexander_Grothendieck#Statelessness heh 23:34:01 You just CAN'T do cohomology of groups just after explaining Snake Lemma :D 23:34:02 killingbuddha1 2 weeks ago 23:34:07 Phantom_Hoover: help, I wandered into some bizarro youtube 23:34:16 Oh dear. 23:34:16 everyone has a phd in mathematics 23:34:29 It's also quite possible, given his age, that his citizenship is from a non-existant country. 23:34:32 @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 Like you, I'd love to see a more historically motivated account of cohomology. 23:34:32 abc75 1 year ago 23:34:32 Unknown command, try @list 23:34:39 Phantom_Hoover: HELP... 23:35:00 pikhq: born in germany, lives in france? doubt it 23:35:01 -!- monqy has joined. 23:35:13 That was the context in which the surprise cat theory came. 23:35:53 Or something; I was kind of sleepy by that point and I had an interview the next day. 23:36:02 engree: maybe it has something to do with East/West Germany? 23:36:05 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 pikhq: fair enough 23:36:14 wtf, http://www.grothendieckcircle.org/ actually removed links to his papers 23:36:29 (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 Oh, his mother was German. 23:39:57 There's no way that he was *born* stateless, and his original citizenship would not have ceased to be in effect... 23:41:10 "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 Grothendieck is hilarious 23:42:31 Hmm, wait. The Nazis denaturalised people. 23:43:06 And the law reinstating the citizenships only reinstates citizenship on people who take residence in Germany after 1945. 23:43:35 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 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 So, yes, it is perfectly feasible for him to be stateless. 23:44:22 And be able to gain a citizenship trivially. 23:44:50 does stateless even have a practical impact on one's life? 23:44:53 +ness 23:45:04 kallisti: absolutely 23:45:24 kallisti: You need to do some really annoying paperwork to do a few things. 23:45:31 e.g. get a passport. 23:45:41 you're still subject to all the laws in the area you reside in. 23:45:50 so it basically just makes life more inconvenient. 23:45:57 Someone made a list of the most difficult and complicated kind of mathematics, and "motivic cohomology" was at the top. 23:46:45 pikhq: I doubt you could get a job while stateless? 23:46:49 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 s/there/their/ 23:48:07 so what did the nazis actually do 23:48:17 strip german citizenship of people they didn't like? 23:48:26 Yes. 23:48:27 well, jews at least 23:48:44 oerjan: "Anyone they like" is by far the more accurate classification. 23:48:52 okay 23:48:58 Jews were merely a significant proportion of that set. 23:49:10 Erm. 23:49:12 Didn't like 23:49:12 XD 23:49:22 "fuck this country im out" --hilter 23:49:26 "WE HAVE REVOKED THE CITIZENSHIP OF HITLER" :P 23:49:27 the former worked as well. 23:49:36 It would provide a really convenient country for them to bomb, mind you. 23:49:57 "anyone they like" can mean that they chose whomever they wanted to be denaturalized. 23:50:48 anyoned they liked to denaturalize. :P 23:52:30 him iiy nam eiska llisti 23:54:16 oerjan: there's nothing about the set of morphisms of a category that requires it to form a bijective mapping right? 23:54:27 or is that required? 23:56:09 wat 23:56:39 so, no. 23:56:40 a bijective mapping to what 23:57:08 also, it's not required to be a set, it can be a proper class 23:57:26 a bijective mapping from the object set to the object set. 23:57:29 and, right. 23:57:51 no. for one thing, the objects are not required to be conceptual sets. 23:58:09 er no I mean... 23:58:20 the morphisms aren't acting on sets of objects themselves. 23:58:53 indeed not. such a category is called "concrete". 23:59:19 there is otherwise no requirement that morphisms be _functions_ 23:59:37 okay here's a better question: a single morphism can act on multiple objects in the category, yes or no? 23:59:46 or is there one source object 23:59:49 and one target object 23:59:55 no. a single morphism always has exactly one. 23:59:59 of each. 2012-01-03: 00:00:02 right 00:00:14 and you could think of the set of morphisms as a sort of mapping right? 00:00:28 wat 00:00:40 -!- cswords_ has quit (Quit: Leaving). 00:00:43 hom-set or whatever it's called. 00:00:59 is a mapping... or a relation I guess. 00:01:07 ? 00:01:13 well yes, Hom is a bifunctor from any category to Set 00:01:37 no no I mean... 00:01:56 er locally small category, technically 00:02:08 oh I see I didn't mean hom. 00:02:17 oh... I did 00:02:21 there's two hom expressions 00:02:24 hom(a, b) and hom(C) 00:02:59 A homset is the set of morphisms, isn't it? 00:03:02 hom(C)... is a mapping right? it maps objects to objects in the category, right? 00:03:05 yes 00:03:11 Phantom_Hoover: yes 00:03:19 hom(a,b) refers to the morphisms specifically between objects a and b. 00:03:23 I think. 00:05:18 kallisti: i cannot find your hom(C) concept on the wp Morphism page 00:05:32 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 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 it's on the category theory page. 00:05:59 so anyway I think I got the answer to my question, which is "no" 00:06:05 So it is a different category than Haskell functions category 00:06:05 but I don't know if I worded it correctly. 00:06:15 ah right 00:06:45 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 kallisti: i still don't know what relation you are speaking about 00:07:29 okay so.... 00:07:39 a morphism... is basically like an ordered pair, right? 00:07:43 no. 00:07:52 what makes it different. 00:08:38 what makes it _similar_? two morphisms can have the same source and target, and still be different. 00:08:41 kallisti: Well, I gave one example. There are others 00:09:00 oerjan: oh really? how does that work. 00:09:12 as far as I knew morphisms were just a source object and target object pair. 00:09:40 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 right, but then how is that constructed. 00:09:57 and described 00:10:00 in category theory 00:10:30 By morphism composition. 00:10:54 ah 00:11:01 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 A and B are included just to ensure the target and source maps really are defined. (actually A may be redundant.) 00:12:39 so then morphisms in Set are relations. 00:12:46 ,,, 00:13:02 kallisti: no, functions, but in set theory functions are represented as relations. 00:13:25 I see. 00:13:28 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 of which Set is a subcategory 00:14:13 Phantom_Hoover seemed baffled that I would see "subset of A x B" and somehow think "relation" 00:14:46 but he left... 00:14:47 :( 00:15:40 well i was a bit baffled too 00:15:54 I guess I didn't pay enough attention to the "which is a function" part :P 00:16:03 it's like the most elementary CT fact that the morphisms of Set are functions :P 00:16:54 it's like the quintessential example of a category. 00:17:25 your mom is the quintessential example of a category. 00:17:51 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 i miss fax :( 00:18:07 -!- Vorpal has joined. 00:18:21 I just temporarily forgot that all relations are not functions and saw the "subset of A x B" and thought relations... 00:18:29 yeah there are no relations that are functions :P 00:18:48 ...that's not what I meant by that statement 00:18:56 engree: has anyone seen em around? 00:19:24 i have doubts e would be able to stay undetected 00:19:46 oerjan: well the usual route appears to be via #haskell 00:19:46 what exactly is preventing Set morphisms from being relations? 00:20:13 kallisti: the fact that non-functions are not included in Set morphisms by definition. 00:20:16 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 *eir, sorry 00:20:42 Then can you make a relation set category? 00:20:48 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 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 oerjan: cpressey did comment on eir blog ages ago; but it's completely dead. 00:21:16 .. 00:21:24 that was in '10. 00:21:24 kallisti: erm as i said Rel is a different category, which also exists 00:21:29 are you using spivak pronouns for ironic purposes. 00:21:38 oerjan: right but that's the category of relations.. 00:21:44 kallisti: No. 00:21:50 I do not know which pronouns fax prefers. 00:21:52 kallisti: also for not being bloody sure what gender e actually _is_ 00:22:05 or what sense of is to use 00:22:19 I could've sworn fax was male, but that could just be heuristic talking. 00:22:22 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 pikhq: I believe e identified as male while using the name fax. 00:22:56 Also not very reliable if e has changed the preferred set of pronouns. 00:23:00 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 or something. 00:23:14 oerjan: oh my god, cwcc posted in /r/vortexmath 00:23:16 :D 00:23:20 monqy: 00:23:21 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 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 oerjan: ah okay, so yes. 00:23:59 oerjan: but yeah, I somewhat doubt we'll see em around any time soon: at least not recognisably. 00:24:00 kallisti: well Set has an important special standing in the theory. 00:24:03 oerjan: Rel is kind of misleading as I would expect the objects to be relations or something. 00:24:22 oerjan: so there are properties of Set that would break if it were suddenly Rel. 00:24:25 oerjan: but I still hope we do. 00:24:46 engree: /r/.....vortexmath.............. 00:25:00 i 00:25:02 how 00:25:13 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 VortexSpace.org College of Vortex Mathematics 00:25:46 kallisti: presumably. the yoneda lemma is one important theorem that comes to mind (and which i don't remember exactly.) 00:26:01 yo neda 00:26:03 lemma 00:26:05 ... 00:26:16 yo nedalemma 00:26:20 kallisti: Yoneda remma 00:26:22 pikhq: Chromosomes aren't necessarily an indicator of biological sex, though. 00:26:37 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 engree: Bah. My biological sex is also male. There. Happy? 00:27:08 (no, of course not, nothing makes you happy. :P) 00:27:15 I am an endless pool of sadness. 00:27:26 yoneda lemma in ignorant-american-pronunciation kind of sounds like a really slurred way of "yo, need a lemma?" 00:27:38 +saying 00:27:41 Not just pool of sadness. Also unobtainable desires. 00:28:21 pikhq: Very true. 00:29:21 pikhq: ah but have you actually _done_ a cromosome test? >:) 00:29:30 *+h 00:29:34 oerjan: No, actually. 00:29:44 So I can only infer that with high probability. 00:30:03 how unscientific. 00:30:17 not on par with the rigour of #esoteric 00:30:21 shameful, really. 00:30:37 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 oerjan: Science also only infers things with (unreasonably) high probability. :) 00:31:03 well, either that, or the test tube was contaminated, but how likely is _that_ 00:32:13 I think defenestrate is one of my favorite words. 00:32:52 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 which 00:33:06 along with the other two meanings 00:33:20 makes the word even more awesome than simply the sum of its possible meanings. 00:33:26 it's like a PRODUCT of its meanings. 00:34:59 oerjan: what do you want from a next generation log formatting system. gimme your best 00:35:30 Or perhaps the product of the ^^^3 of its possible meanings. :P 00:37:43 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 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 anyone here use xchat? 00:38:16 also a utility to convert raw text to the tagged format via regex filters. 00:38:35 You could just use AWK to do some of these things isn't it? 00:39:14 engree: total information recall, line wrapping and free money. 00:39:15 probably, but not as easily I would think. 00:39:41 also wild sex parties. 00:40:55 engree: oh, and maybe it should understand the color codes. 00:41:01 colour codes, check 00:41:10 engree: the house format could also contain a header specifying default formatting options when none are provided for the output formatter. 00:41:20 engree: no this should be general to any kind of log, not just IRC. 00:41:25 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 since URLs are rather easy to spot visually in the first place :P 00:41:49 kallisti: i will take your requests into... consideration 00:41:50 lahwran: I do. 00:42:14 do you have nick coloring on? 00:42:19 No, it's annoying :) 00:42:51 well then what I was going to say is irrelevant 00:43:00 do you have time-sorted tabcomplete on? 00:43:10 (was it you I mentioned it to the other day?) 00:43:51 engree: strangely I don't believe you. 00:44:50 at least TeX, XML, HTML, and maybe PDF would be good. 00:44:55 lahwran: Yes, I do, and yes, it was; I've used it forever, I just reinstalled my OS recently. 00:45:10 k 00:45:43 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 that's... 00:45:53 not by any real hashing function at all 00:45:57 the stupidest algorithm i can think of 00:46:11 i guess that's why people complain about collisions so much 00:46:19 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 oerjan: THX FOR FEEDBACK 00:46:31 kallisti: We already have a simple raw log format. 00:46:40 http://codu.org/logs/_esoteric/2012-01-03-raw.txt 00:47:00 well it's kinda funny because I've kinda assigned my own mild stereotypes to different nick colors 00:47:05 Would you have SIRCL format? And possibly CSV format? 00:47:14 and it turns out, there actually might be some real relationships between them 00:47:26 needs JSON and YAML as well. :P 00:47:33 yay json/yaml 00:48:05 Meh JSON ew YAML 00:48:20 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 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 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 engree: XML comes close I guess. 00:50:45 kallisti: To describing all data? No way. 00:51:39 well... can it do referential structures? 00:51:59 What if you use, something such as, Haskell Data Notation? 00:52:10 or does your definition of "all data" include things like an infinite sequence of fibonacci numbers. 00:52:17 kallisti: To be exact, I was not saying you cannot represent data in those formats. 00:52:24 engree: of course. 00:52:27 I said that doing so requirse a separate parsing/serialisation step to fit the restrictions of those formats. 00:52:34 Which approaches the complexity of just writing your own format in the first place. 00:52:35 *requires 00:53:12 zzo38: Haskell data structure notation would not be very good for describing structures with references. 00:53:17 unless you 00:53:23 included the = operator as well 00:53:29 which isn't unreasonable 00:53:42 You just need let...in to describe sharing. 00:54:56 http://www.cs.vu.nl/~x/ this guy has the coolest name 00:54:56 ever 00:54:57 one issue with such a format is that it isn't quite as convenient as JSON for many languages. 00:55:06 similar problems to what XML has I guess. 00:55:19 with JSON you can basically just convert it directly to some native data structure. 00:55:29 in any language. 00:55:50 Haskell's tagged unions and such are not quite so convenient in.. say.. Perl. 00:56:39 JSON's unstructured soup isn't convenient in... say... Haskell. 00:56:56 At least a stupidifying step is more palatable than an enrichening one. 01:00:11 perhaps 01:00:39 I'd say handling JSON data and handling a Haskell-like format would be equally difficult in Haskell. 01:00:53 which is to say not difficult at all. 01:01:01 :t reads 01:01:02 forall a. (Read a) => String -> [(a, String)] 01:01:02 :p 01:01:20 You can make up some format and parse it using Parsec, it works well 01:01:23 oh yes I forgot about Read, but then you need the type information as well. 01:01:59 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 engree: at compile time, to read it like that. yes. 01:02:32 "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 well Haskell's data structures are basically just tagged unions and structs... 01:03:45 that's two kinds of animals. 01:05:50 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 which means that you basically just have tagged unions, structs, and let bindings. 01:06:37 (with syntax sugar for strings and lists, and integer and character primitives) 01:19:22 -!- augur has joined. 01:20:02 has this channel really only existed since november 06? 01:22:13 no 01:22:16 late 2002 01:22:36 freenode's systems get replaced more often than this channel stops existing :) 01:27:02 Do you have suggestion to have substitute player for Dungeons & Dragons game in case some of the players are not available? 01:27:31 zzo38: DMPC is ever a classic. 01:27:45 pikhq: He said he doesn't want to do that? 01:28:33 Hmm. Figure out a way to write certain players out of the story, for sure... 01:28:44 Yes; of course I thought of that already. 01:29:13 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 I am one of the players 01:29:39 The last option may be sanity-straining, of course. 01:29:51 And there is one other player only, who is unavailable 01:29:56 I was, nevertheless, talking in a more general sense. :) 01:30:01 OK 01:30:26 There are only two players, only two player characters. 01:31:06 solo d&d? 01:31:41 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 I'm a bit surprised at having so few PCs. 01:32:15 The "standard" D&D party is, like, 4... 01:32:45 And I've not really heard of fewer people in a party. 01:32:47 I know; but we play the game strangely 01:33:08 There are varying number of NPCs in the party sometimes 01:33:22 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 There are other strange things about the party too; read the recording file for information! 01:33:56 view-source:http://zzo38computer.cjb.net/dnd/recording/level20.tex 01:36:06 Currently we have two human NPCs which are navy marines 01:37:00 Will you have ideas about it by reading this? 01:37:09 Perhaps; lemme take a look. 01:38:05 Hmm, what macro set are you using to generate that? Something you wrote yourself? 01:38:27 Yes, it is a macro set I wrote myself: view-source:http://zzo38computer.cjb.net/dnd/recording/dungeonsrecording.tex 01:38:41 Neat. 01:41:36 Also, doesn't appear to work with pdftex. 01:41:47 Works just fine with tex, though. 01:45:19 Yes; just use TeX it is not intended to work with pdfTeX. 01:45:42 So I don't care whether or not it will work with pdfTeX 01:46:10 I also don't know why, but it doesn't matter 01:47:30 I suspect pdfTeX has a few macros in place beyond what TeX offers that collide. 01:47:41 Possibly. 01:48:47 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 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 *That* much worked just fine. 01:50:38 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 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 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 Are either of these two files good to you? 02:08:10 Quite impressed with the macros. 02:22:48 -!- Jafet has quit (Ping timeout: 240 seconds). 02:26:24 q 02:26:42 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 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 Well those have computer controlled monsters/NPCs, that's not really the same as AI pseudo-players. 02:28:52 They still aren't perfectly D&D regardless of their rules 02:29:07 zzo38: They're reasonable approximations, IME. 02:29:33 The only major divergence is the switch from rounds to real-time action. 02:29:50 A D&D video game would be a neat use of the AI director from Left4Dead. 02:30:36 Though all it knows how to do is swarm you with zombies. 02:30:53 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 I was discussing the mechanical aspects alone, of course. 02:33:23 The play experience is certainly *dramatically* different. 02:33:32 What you want for that is not AI players but an AI DM. :P 02:34:41 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 @tell Vorpal https://www.youtube.com/watch?v=jBd9c1gAqWs 02:37:09 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 Jafet: pro cloak 02:54:57 I use a pro client 03:00:50 Jafet: you can identify with server passwords on freenode :P 03:01:03 : 03:01:07 uh without the <>s 03:04:17 My pro client takes care of that flawlessly 03:06:32 -!- Vorpal has quit (Ping timeout: 276 seconds). 03:14:03 Jafet: 03:14:04 * Jafet (~Jafet@149.171.48.81) has joined #esoteric 03:14:04 * Jafet has quit (Changing host) 03:14:04 * Jafet (~Jafet@unaffiliated/jafet) has joined #esoteric 03:14:12 Jafet: For sufficiently wrong definitions of flawlessly 03:14:58 hmm some spambot changed the front page of the wiki probably 03:15:30 Frooxius: reverted 03:15:39 thanks 03:16:29 oh thanks too, I was poking for a link about how to write a page and look at some existing ones 03:19:20 :) 03:19:37 don't worry about adding anything too rough formatting-wise, it'll get cleaned up in a day or two 03:20:14 engree: The last minor release of this client left parted usernames in the user list 03:20:46 Jafet: Why the fuck are you using Pidgin 03:20:47 okay, I'm making a page about my language(s) 03:21:29 Why do you seem upset that I use it? 03:22:13 Jafet: No, just amazed 03:22:22 I don't know a single person who can stand Pidgin's IRC support :P 03:24:16 I don't care enough to change it 03:27:36 Now they have The Mod Archive - Lite. 03:34:30 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 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 Frooxius: Just be aware that the version on the wiki is public domain. 03:36:33 yeah, I don't mind that 03:36:40 Then you're good. 03:37:07 (source: I read the copyright section of the USC a few years back.) 03:37:33 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 It only applies to the text on the wiki. 03:37:56 oh cool :3 thanks 03:38:16 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 The examples of the language you mean? 03:39:09 -!- Klisz has joined. 03:39:12 No, I mean your implementation. 03:39:25 What's placed on the wiki must be public domain (as a matter of policy). 03:40:16 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 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 well, and windows users :P 03:47:15 engree: Saying "community" automatically excludes them. :P 03:47:34 Hey, I'm a Windows user x3 03:47:44 I use Linux too though. 03:48:21 Oh boy, now you're all going to hate me *hides under a rock* 03:48:45 "Pity" is the correct term. 03:48:55 Windows users. I've heard of those! 03:49:06 I read about them in a book. 03:49:07 * Frooxius peeks from under the rock 03:49:18 (The rock represents capitalism.) 03:49:21 Yeah, we're rare, like a fairy! 03:49:49 Pfff, money. 03:50:22 I prefer my schemes for economic distribution to be more handwavey! 03:50:32 (no, fiat money is not handwavey enough!) 03:50:39 But but but I thought about you and I made Linux binaries as well! *puppy eyes* 03:51:22 No, you made (presumably) x86 glibc on Linux binaries. 03:51:41 Nuuuu 03:51:50 it uses standard C++ 03:51:57 you said "binaries" 03:52:05 if you have an architecture-independent libc-independent linux binary i'll eat my hat :P 03:52:06 (this isn't me being all GNU/X/Gnome/Linux-y, just being pedantic about specifying the ABI) 03:52:26 :) 03:52:37 Well the standard C++ code can be compiled into whatever you want x3 03:52:42 If we had it. 03:52:44 Which we don't. 03:52:46 Thus the problem. 03:52:46 Even a donut. That you can eat instead of a hat. 03:53:05 You will have it :3 03:53:21 pikhq: he did say he was releasing the sources 03:53:28 After I figure out these licenses though x3 03:53:54 Which is basically why I haven't released it yet, I was sort of avoiding it 03:54:40 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 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 BSD is probably a better choice (<-- NOT BIASED) 03:55:51 You just have to put it in a file you include with the sources. 03:56:01 Usually it's called LICENSE (although COPYING is the standard name for the GPL). 03:56:25 pikhq: Pfft, real programmers tri-license their code Mozilla Public License/Artistic License 1.0/CC by-sa-nc 03:56:26 oh cool, I was afraid I have to put this GPL comment blob of text I see in some sources *giggles* 03:56:27 Yeah, BSD is perhaps the simplest, and certainly with the best understood consequences. 03:56:28 -nd 03:56:45 Make it in public domain if you don't care about licenses. 03:56:49 Frooxius: The GPL comment blob is nothing but a courtesy, and one that few people *care* about. 03:57:03 zzo38: In many jurisdictions that's impossible. 03:57:12 zzo38: Assuming public domain is valid in your country and the countries of those who wish to use your software... 03:57:13 Yes, that is why you have WTFPL 03:57:32 And it's ambiguous in the US, but only slightly. 03:57:54 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 (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 pikhq has yet to contradict my SUPERB licensing advice which nobody should follow. 03:58:36 engree: Jesus that is the worst combination of licenses doable. 03:58:43 I mean, CC by-sa-nc? The *fuck*? 03:58:48 pikhq: -nd 03:58:57 It's technically just CC by-nc-nd, though, no sa :P 03:59:24 That only makes it worse. 03:59:48 pikhq: I forget, is normal multi-licensing union or intersection? 03:59:49 I often use GPL or public domain. But use BSD if you prefer 03:59:50 I'm tired. 04:00:16 hmm, I used Qt for the GUI though 04:00:22 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 Frooxius: Qt is LGPL these days, so you're fine licensing your program with anything 04:01:09 Oh that's cool then :3 04:01:14 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 You can use MIT license too, yes that work also 04:01:34 Though GUI isn't really necessary, the emulation core works by itself 04:01:49 It's nicer than BSD3 because it doesn't have a bulleted list. :p 04:01:55 engree: Normally it's select a set, actually. 04:01:57 Or, hmm, that list is actually numbered. 04:01:57 As in, it doesn't depend on the Qt libraries at all 04:02:08 pikhq: Yeah, well, xor licensing is the new thing. 04:02:10 You have to comply with at least one license in its entirety, which license that is is up to you. 04:02:28 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 It is separate, I just #include it in the Qt project 04:03:18 well, the headers and the static library 04:03:41 So, the GUI is basically a seperate program. 04:03:49 yeah 04:03:56 Still you're fine licensing your program with anything. 04:04:07 You should give the GUI away for free and sell the emulation core for $5,000/seat. 04:04:13 :P 04:04:16 it's only logical 04:04:18 |3 04:04:56 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 You would. :P 04:05:36 And sell the roasted assembler-cores $500/bucket :D 04:06:39 *crunch crunch crunch* mmmmm... tasty *crunOUCH* A syntax error! 04:08:04 I like zlib just because it has a cooler looking name. 04:12:58 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 Or just license it entirely under the LGPL 04:19:28 Don't. 04:19:34 hi 04:19:48 Or BSD, MIT, GPL, WTFPL, public domain 04:19:57 You shouldn't use Creative Commons licenses for software 04:20:19 Why? 04:44:18 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 Extra resources of software, such as graphics, sounds, and so on, can be licensed using Creative Commons. 04:44:42 engree: I knew it was you. 04:46:59 I generally find it easy to pick up on elliott's various nicks. He's just very identifiable. 04:47:22 I find it easy to simply see "!~elliott@unaffiliated/elliott" you can know just from that 04:47:46 I tend not to see that. 04:48:40 I think a most common IRC clients hide that 04:48:56 Mine doesn't hide it, I just don't see him join. 04:49:27 I mean that I just came to my IRC client and switched to #esoteric. 04:49:35 * pikhq nods 04:50:41 Mine shows it with every message 04:51:04 Oh, right, yours is a UI for the IRC bytestream. 04:51:13 :P 04:51:21 And syntax highlighting and a few other things 04:55:13 What is the best way in Haskell to check existence of a file? 04:56:04 zzo38: Don't, just try and use it and catch the error. 04:56:20 (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 I try to implement to find file in search path specified by environment variables. 04:59:20 What is the best way of that? 04:59:52 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 zzo38: Writing openFileIfItExists :: FilePath -> SomethingMode (I always forget the name) -> IO (Maybe Handle) will get isolate the exception-handling boilerplate. 05:01:59 I should use the <|> for IO and fold using <|> maybe 05:03:03 At least it is one way. 05:03:15 -!- MDude has changed nick to MSleep. 05:03:50 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 OK 05:15:32 -!- Klisz has quit (Quit: SLEEP, GLORIOUS SLEEP). 05:19:01 http://www.reddit.com/user/Iosethos i don't understand........ 05:19:32 hmm, redditor for six hours. 05:19:43 is that the losethos guy 05:19:51 i think so 05:19:55 http://www.reddit.com/r/IAmA/comments/o0bkh/iama_ratt_tshirt/ 05:20:11 http://i.imgur.com/RmFpI.jpg <-- one of his submissions, wtf (don't click that) 05:20:29 "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 a song by falco is a rare medical condition 05:20:49 holy shit look at the speed he's posting 05:21:08 i mean obviously the text is machine-generated 05:21:10 -!- cswords has joined. 05:21:25 monqy: http://soundcloud.com/footnotegal/sets/the-first-transaction-was/ 05:21:27 christ what 05:21:40 he submitted this to... /r/mylittlepony... wtf losethos guy, wtf 05:22:40 i 05:22:42 http://www.reddit.com/r/IAmA/comments/o0bkh/iama_ratt_tshirt/c3de006 oh good someone else recognises him 05:23:02 http://www.reddit.com/user/losethos 05:23:03 and he's gone 05:23:07 just like that 05:23:13 i 05:23:15 http://www.reddit.com/user/Iosethos with an I 05:23:23 oh 05:23:28 i was thinking that was a bit too perfect 05:24:51 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 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 Frooxius: thumbnail for what? 05:26:07 if an image, http://www.mediawiki.org/wiki/Help:Images might help 05:26:34 [[blah|thumb|caption]] basically 05:26:38 and you can omit the |caption 05:26:47 and blah is Image:blah 05:27:28 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 ok thanks 05:31:32 We need more Deadfish interpreters in esolangs. monqy: You get on that. 05:33:14 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 Nuuuuu x3 05:34:27 are there any decent esolangs left 05:34:30 undeadfished 05:34:39 It's not interpreter though 05:35:02 monqy: Underload, although admittedly it lacks input 05:35:06 INTERCAL 05:35:27 hm, I don't know intercalle 05:35:31 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 Frooxius: ah, you program in both C++ and VHDL... which circle of hell did you learn programming in? 05:37:09 I'm mostly self educated. I poke around for some books and such and play with it. 05:37:20 You mean, that I should rather work with Verilog? x3 05:37:36 due to the C++ part 05:38:05 Nope, they're just two unbearable languages of torture and pain :P 05:38:11 OK, VHDL moreso. 05:38:41 Says the esolang enthusiast? :D 05:39:29 At least we don't claim they're usable :) 05:39:37 :D 05:40:27 Well then... this calls for... HELLO WORLD in attoassembly x3 http://data.solirax.org/attowpu/helloworld.att 05:40:47 Wow, someone added a language to the list and didn't mess up the alphabetic order. 05:40:52 This has to be some kind of record. 05:41:04 It wasn't me Oo 05:41:12 Frooxius: Reminds me of Redcode, though probably not for any decent reason. 05:41:48 here's my implementation of Pong in AttoASM :D http://data.solirax.org/attowpu/Pong.att 05:42:12 does it work 05:42:45 it's broken pong 05:42:52 It works 05:43:26 Why would I publish something that doesn't work? 05:43:46 -!- itidus20 has quit (Ping timeout: 240 seconds). 05:43:56 ask the people who publish things that don't work 05:44:14 ask all of them 05:44:27 oh, I might need a people-who-publish-things-that-don't-work detector though 05:46:35 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 monqy: should i do good thing or stupid thing 05:46:57 It's from an high-school expo where I presented it, earli... oh it's 2012... earlier last year 05:47:02 a good stupid thing 05:47:16 Frooxius: looks like pnog to me!! 05:47:18 pnog. oops 05:47:29 That pong is running there in the simulator 05:53:20 -!- Vorpal has joined. 05:58:23 "An affect can effect an effect that affects." 06:03:47 -!- Jafet has quit (Quit: Leaving.). 06:09:54 hey pikhq how long can human beings stay awake, what does science say 06:10:22 11 days 06:10:35 at least that's the record I think 06:11:04 ok there may be hope for me 06:11:06 then 06:15:07 What you actually *want* is the the time before you start hallucinating, though. 06:15:23 but the hallucinations are fun 06:16:55 also the surreal feeling, involuntary movements 06:18:23 pikhq: what's that then 06:18:44 IIRC, ~72 hours. 06:19:43 engree: actually not that long 06:19:53 you hit microsleeps pretty quickly comparatively 06:20:14 Yeah, don't microsleeps start from ~24 hours? 06:20:41 yeah 06:21:07 well not universally i'm sure 06:21:10 i mean 06:21:15 obviously the point is that you don't notice them 06:21:27 but i've functioned normally and very sharply at 40 hours 06:22:06 I have managed to notice them, but only from noticing "WTF a few seconds slipped". 06:22:32 engree: how much drugs? 06:23:02 I don't use drugs; usually I max out around 30 hours 06:23:07 coppro: every drug, man. (no drugs) 06:23:08 and that's on a good day 06:23:10 the 40 hour thing was just once 06:23:13 engree: I include caffeine 06:23:23 well ok i drink soda 06:23:30 -!- Jafet has joined. 06:23:36 but i'm pretty sure the effects are negligble on me nowadays 06:23:41 and i don't drink any more when sleep-deprived 06:23:58 coppro: consider that a common schedule for me is sleeping approx. every 26-30 hours 06:24:04 so uh 06:24:11 i guess i'm just lucky! 06:24:25 erm not 06:24:27 every 30 hours but like 06:24:31 after 26-30 hours of wakeness 06:25:47 engree: are you peter barfuss? 06:26:06 i'm not sure; probably not 06:26:10 hmm, ok 06:26:18 it depends on who peter barfuss is 06:26:20 is he me? 06:26:55 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 nice, but i don't do the napping thing, with me sleep deprivation is followed by sleeping 14 hours+ 06:27:27 usually 16 hours 06:27:49 i'm pretty sure my natural melatonin levels are abnormally low for some reason 06:28:13 I've hit 18 hours of sleep after massive deprivation 06:28:50 oh, i've done 20 06:28:52 I'm pretty sure holy fuck I feel bad 06:28:55 7:30 and still pitch black outside 06:28:55 Vorpal: You have 1 new message. '/msg lambdabot @messages' to read it. 06:28:58 pikhq: wat 06:29:03 @messages 06:29:03 engree said 3h 51m 53s ago: https://www.youtube.com/watch?v=jBd9c1gAqWs 06:29:07 I hate Swedish winters 06:29:08 engree: I'm sick and complaining about it. 06:29:18 Vorpal: Dude... that can happen in the UK too :P 06:29:26 Especially as I'm already sleep-deprived and now can't sleep well 06:29:42 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 engree, well sure, but it will be the same 10:00 too 06:30:05 Not sleeping would be an excellent opportunity to realign both my sleep schedule and my dwindling Stack Overflow reputation spree, though! 06:30:35 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 @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 Consider it noted. 06:31:07 Vorpal: engree == elliott 06:31:11 oh 06:31:16 it's funny because 06:31:19 engree actually sent that message 06:31:23 :) 06:31:24 I read it as elliott somehow 06:31:25 wtf 06:31:41 I guess it is because I know we talked about the topic before 06:32:00 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 patented(tm) 06:32:12 Vorpal: well, repa does automatic parallelisation 06:32:18 engree, that one never worked for me 06:32:20 I don't think GHC does SSE though 06:32:25 I'm in the wakeup at midnight phase now 06:32:30 and I'm stuck there 06:32:51 Vorpal: the code is actually really readable: http://code.ouroborus.net/gloss/gloss-head/gloss-examples/Ray/ 06:33:00 Vorpal: Better than the wakeup at noon phase, I guess? 06:33:05 engree, more readable than C with SSE? Of course 06:33:14 pikhq, that is standard. 06:33:16 Vorpal: yeah, but it's even pretty idiomatic 06:33:20 pikhq, I usually wake up after noon :P 06:33:23 pikhq: god no waking up at noon is amazingly perfect 06:33:28 if i could wake up at noon every day i'd be so happy 06:33:33 engree: Yes, *I* think so. 06:33:44 Unfortunately a few billion people seem to disagree. 06:33:56 engree, adding SSE gives you an edge. I saw basically that + some CSG + antialias in real time being done 06:34:05 not sure the haskell code could scale up to that 06:34:18 Vorpal: Being editable by a non-madman counts for more. 06:34:19 Well, there's no real obstacle to GHC donig SSE. 06:34:21 *doing 06:34:24 It just hasn't been implemented yet. 06:34:36 pikhq, certainly. But I always had a soft spot for the crazy demoscene :P 06:34:41 :P 06:35:02 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 indeed 06:35:23 engree, I believe the code I was referring to used OpenMP + SSE 06:35:54 engree, openmp is actually quite easy to use. Still it does mention parallelism indeed. 06:38:07 I thought I saw someone working on getting the automatic vectorisation to work with OpenMP... 06:38:14 Might just be misremembering, though. 06:38:39 maybe, I don't think it was used in the code in question though 06:38:48 Nope. 06:38:54 Though in principle it could be. 06:39:04 indeed 06:39:10 Much like in principle you could execute a C program on the Deathstation 9000. 06:39:16 :P 06:39:27 pikhq, actually the program in question was portable between gcc and msvc 06:39:35 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 amazing mod pack back during 1.7.3 at least 06:40:44 haven't really used it since then 06:47:21 6:47 :( 06:53:25 -!- kmc has quit (Quit: Leaving). 06:56:52 monqy: hi, should i sleep, 06:56:58 a 06:57:37 a 06:58:41 monqy: what does, a mean, 06:58:46 a 07:00:08 monqy: help 07:00:12 D:L 07:00:26 are you, 07:00:27 tired 07:00:42 yes 07:00:52 consider sleep 07:01:14 :( 07:01:29 or wait until the tired becomes painful 07:01:40 or until you run out of things to do that are not sleep 07:01:55 or until you slip unconscious 07:04:37 monqy 07:04:45 engrey 07:04:47 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 ill go to bed 07:04:53 oh no,, 07:05:01 and you make sure i get the SO rep I need by the time i wake up 07:05:08 h 07:05:09 how 07:05:11 hhhhow 07:05:13 thats for me to know 07:05:14 and you to find out 07:05:22 D: 07:09:58 monqy: have you found out yet 07:10:12 no 07:12:24 monqy: hury, up? 07:12:31 i 07:12:32 cant 07:12:32 ;_; 07:14:00 ok gon1dight 07:14:01 gondight 07:14:04 gondight monquay 07:14:06 ok 07:14:11 gondighte 07:14:19 bye -engrey 07:14:27 - mqony 07:14:49 Control.Monad.Trans.Error defines MonadPlus IO but not Alternative IO and anyways their instance is wrong 07:15:12 I think they should allow override instances! 07:15:30 I wrote some ideas in my user space in Haskell Wiki 07:17:40 engree 07:18:16 * shachaf ; 07:18:21 What the Haskell wiki needs is more notation. 07:19:06 -!- engree has quit (Ping timeout: 260 seconds). 07:19:27 http://www.haskell.org/haskellwiki/User:Zzo38/Proposal_for_instance_disambiguation 07:19:52 shachaf: Yes that one is the one I meant 07:27:25 argh the key mapping in minecraft gets annoying when you have tens of mods 07:27:41 and there is of course not a single interface to configure them all 07:28:00 Maybe when they finally add that modding API... 07:28:10 fizzie, doubt that will ever happen 07:28:33 fizzie, besides there are key bindings in the settings menu I can't access because they go under the "done" button 07:28:42 zombe do it by config file 07:29:00 rei's minimap does it using it's own config dialogue 07:29:01 and so on 07:30:08 fizzie, currently I'm trying to get technic pack + several freestanding mods to play nicely 07:30:15 it works apart from conflicting keys atm 07:30:53 $ ./testlm-disk.pl ../twungot/tokens.bin.irc ../twungot/model.bin.irc 3 programmers do it with 07:30:53 programmers do it with objects. is that a cartesian product function that i want to 07:30:53 programmers do it with lookahead and the whitespace cset. but please, be patient: i have some 07:30:53 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 cset? 07:31:41 fizzie, also I found a better version of TMI, called NMI 07:31:43 Perhaps short for "set of characters". 07:31:47 if you ever used TMI 07:32:02 Non-maskable interrupts are a better version of too much information? 07:32:03 I suggest switching to NMI, especially if you have lots of mods 07:32:29 fizzie, too many items also typoed NEI as NMI 07:32:35 because that is not enough items 07:32:40 fizzie, the in game inventory editor 07:32:44 useful when testing things 07:33:05 NEI supports searching rather than having like 40 pages due to mods 07:33:10 and so on 07:33:25 The MonadPlus IO in Control.Monad.Trans.Error is the wrong one!!!!!!! 07:33:25 and you can use it to look up recipes as well 07:33:44 fizzie, by turning off cheating mode 07:35:09 fizzie, not sure if you play with many mods though, apart from optifine I presume 07:36:04 Not really. I tried out a few bits from that zombe thing. 07:36:11 ah 07:36:50 I haven't really done any Minecrafting since about September, anyway. 07:37:34 it happens quite frequently that I'll go to bed after staying up all night 07:37:38 and then... wake up 4 hours later. 07:37:38 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 actually looks like optifine is part of technic nowdays 07:38:21 redpower especially adds a /lot/ of blocks 07:38:27 due to combinatorial explosion 07:39:19 like you can make panels, halfblocks and what not out of most vanilla blocks 07:42:09 kallisti, there may have been an update I forgot to notify you about 07:46:03 indeed 07:48:11 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 as in torchlight vs. sunlight 07:50:58 1.8 changelog: + Rewrote the light rendering to use multitexturing instead of direct colors 07:51:43 indeed 07:51:53 which is a nasty way to do it 07:52:07 fizzie, it makes it much harder for mod authors to add their own lights of various colours 07:53:12 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 You could easily make all torches green, though. :p 07:53:30 sure 07:53:38 but not add green, red and blue torches 07:55:03 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 from what I remember 07:55:28 since mc has not specular light 07:55:42 It wouldn't be as "retro". 07:56:13 come on, mc dropped retro the day it implemented smooth light 07:56:47 That was someone else's idea, though, and optional in any case. 07:57:00 well that stuff isn't around any more 07:57:29 Isn't it still toggleable? (I certainly haven't looked.) 07:57:39 I don't think so, can't check atm 08:03:31 -!- cswords_ has joined. 08:05:32 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 maybe somebody here can answer this one 08:08:43 i took some source which was released under the MIT license and significantly modified it 08:08:58 wtf do i do to be all proper about things but still own my modifications? 08:19:00 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 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 there are lots of these licenses that allow you to take and use and modify the code 08:21:14 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 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 that helps :) 08:38:39 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 i'd have thought it would be easier to find an answer for this 08:39:01 (Of course whoever wrote RTMPDump-YLE probably wasn't a lawyer either.) 08:39:06 like, a well-known and "official" kind of answer ;) 08:39:38 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 so now i want to find more :P 08:40:09 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 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 ha 08:41:48 i got a kick out of the WTFPL license 08:58:23 -!- Slereah_ has quit (Ping timeout: 268 seconds). 09:02:17 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 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 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 k(x,0) = 2^h(x,0); k(x,y) = (x+y)^k((xy)^(xy),y-1) 09:07:54 h(0,0) = 1; h(x,0) = p(h(x-1,p(x))); h(x,y) = p(h(x,y-1)) 09:08:02 p(x) = x'th prime number; p(0)=1 09:08:20 q(x,0) = f(x,0); q(x,y) = f(q(x,y-1),q(x,y-1)) 09:08:28 Big number = q(2,q(2,2)) 09:09:07 * Jafet waits for zzo's new exciting result in Ramsey theory. 09:09:15 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 Is it larger or smaller than: Skew's number, Moser's number, Graham's number, and XKCD's number? 09:10:59 Or even equal? 09:11:59 * Sgeo is tempted to put it in Haskell 09:12:44 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 p(x) = x'th prime number; p(0)=1 <-- I thought 1 was not a prime number? 09:22:02 because then there wouldn't be unique factorizations into prime numbers 09:22:25 I know 1 is not a prime number. 09:22:41 But p(0) has to be defined anyways so that is its definition I put 09:22:55 ah 09:23:15 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 it looks like too much work though 09:23:50 anyway, if you worked on it in a CAS you might be able to find something out 09:24:13 zzo38, I assume it is super-exponential then? 09:24:29 hm there is ! in there, so I'd go with probably 09:30:03 Already after expanding f(2,0)=2^f(1,4^((4^4+1)^(2^(h((4^4)^(4^4),0)))))) 09:30:50 Already (4^4)^(4^4) is 256^256 which is more than googol. 09:31:52 What about Googolplex? 09:33:05 Frooxius, is that 10^(10^100) or? I don't remember 09:33:16 yeah 09:33:24 10^googol 09:33:54 mathematica says that 10^(10^100) > 256^256 is True, but it gives a warning about overflow 09:33:57 so I'm not sure 09:34:11 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 but then that is a fairly small level of expansion of zzo38's function 09:35:29 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 I'm currently working with shell integrated version control system, so I really really want that feature 09:36:15 Right clicking in the empty space doesn't work? Or did I misunderstand you? 09:36:40 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 hm I tried to right click the icon for the folder in the corner of the window. That worked under xp 09:36:45 Did you try right-clicking the icon in the title bar? That works in older versions of Windows. 09:37:06 zzo38, that is the thing that /doesn't/ work any more 09:37:14 Did you try using the File menu? 09:37:37 In my computer, which is XP, selecting the File menu has one submenu labeled with the name of the current directory. 09:37:50 ah the option for tortoisehg is under there, good 09:37:54 right under the file menu 09:38:00 which is btw hidden by default 09:38:05 until you set a folder option thingy 09:38:19 Pushing alt should make it display the menu even if hidden 09:38:35 (I really prefer linux, windows would be okay with a usable shell, and no powershell is a joke) 09:39:15 wait what, can't hg handle empty directories? Or is it just this shell extension being stupid? 09:39:43 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 cygwin is kind of broken iirc 09:40:06 "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 right 09:40:38 and there is no tortoisebzr, and I'm /not/ using svn 09:40:39 Git works the same way, unless I misremember. 09:40:41 (nor git) 09:41:13 You can put a placeholder file in. 09:42:19 fizzie, not really in this case though. Meh 09:43:17 also tortoisehg has some problems with tracking the correct state for the icon overlay. More so than tortoisesvn even 09:43:26 and that had some issue with it 09:43:58 A dummy .gitignore/.hgignore is something I've seen in "empty"-but-we-want-them-to-exist directories. 09:45:10 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 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 I figure something to do with lookarounds? but can't figure out what 11:20:52 -!- nooga has joined. 11:26:39 "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 !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 foo gets a bar => match: (foo) (bar) \ foo gets a bar and baz => no match 11:29:59 wait, duh, I'm an idiot 11:30:04 I can just test in LUA after the regex matches 11:31:26 -!- zzo38 has quit (Remote host closed the connection). 11:31:38 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 s/nothing/anything/ 11:31:56 it probably doesn't do anything, no 11:32:03 it's just there because the regex generator put it there for me! 11:33:14 it's interesting seeing what kind of regexes are pathological and what aren't 11:34:41 ((?!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 would the pearl regex engine implement that in the bad way? 11:36:33 *perl 11:36:39 -!- Jafet has quit (Ping timeout: 240 seconds). 11:36:40 b/c that's what mushclient uses 11:37:53 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 01:01:01: :t reads 11:49:10 01:01:02: forall a. (Read a) => String -> [(a, String)] 11:49:12 hm... 11:51:48 > runStateT (replicateM 3 $ StateT reads) "1 2 3 4" :: [([Int], String)] 11:51:49 [([1,2,3]," 4")] 11:52:30 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 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 that's not xor, xor means an odd number 12:11:59 it's addition (mod 2), after all 12:13:14 -!- itidus21 has joined. 12:29:20 if i could wake up at noon every day i'd be so happy <-- i woke up and noon today *MWAHAHAHA* 12:29:39 *at 12:33:03 I, too, woke up at noon. 12:33:09 `words --english 20 12:33:14 Unknown option: english 12:33:24 `words --eng-gb 20 12:33:30 lot verted praxinde ttensent diviot volute prote int esse antisscn sgthconstrefe darade reffe runcharmit ielder difper speari sonder cfol good 12:33:31 no such language. here we all speak rigelian. 12:35:28 sonder the darades, we've got a difper following us! 12:36:11 don't believe that volute runcharmit! 12:36:46 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 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 So is the weather in Hexham today Scotland? http://i.imgur.com/SWaD6.jpg 12:56:49 "Current temperature at Otaniemi: 3.12 °C" 12:57:44 Deewiant, depends on whether everything that hasn't been nailed down has blown away. 12:57:44 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 Weather for Melbourne, Victoria | Temperature: 73F / 23C 13:02:36 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 @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 Consider it noted. 13:14:51 oerjan, does my computer have any chance of storing Skewes's number? 13:15:45 not written out in a common base, no 13:17:01 10^10^10^34 has 10^10^34 decimals. even 10^10^34 has 10^34 which is enormous 13:23:12 09:33:54: mathematica says that 10^(10^100) > 256^256 is True, but it gives a warning about overflow 13:23:24 256^256 = 2^(8*256), so much smaller 13:24:42 Estimates of the amount of "data" in the world are around the magnitude of a zettabyte, 10^21 bytes. 13:25:45 They newsposts that report these estimates never tell how they're made. 13:27:02 The absolute quantum-mechanical upper bound for the data storage of the entire Earth is only around 10^75 bits. 13:28:08 fizzie: is that in non-compressed form? :P 13:28:20 suppose all the data in the world is compressed ... hahahahha 13:28:44 like the amount of "data" in the world probably means the amount of ram in the world 13:28:59 or the size of the world's tape 13:29:02 Clearly they estimated the Bekenstein bounds of all the computers in the world. 13:29:09 oh 13:29:36 this topic over my head which means i am learning 13:29:59 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 The Bekenstein bound of the internet as depicted by The IT Crowd. 13:30:37 (It's zero, because the internet obviously doesn't weigh anything.) 13:30:37 "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 optimally....... compressed......... 13:31:40 science journalism 13:31:50 Phantom_Hoover: That's shorthand for "best algorithms available in 2007". 13:32:07 In the context of this story, anyway. 13:32:22 oh fair enough then 13:33:53 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 fizzie, but.... that's not really helping either. 13:38:14 I mean, I can store an arbitrary number of 'optimally compressed bytes' if I'm allowed to set the algorithm. 13:39:09 i threw that comment in there about compression to show that its a kind of subjective argument 13:39:35 like, maybe each electron on earth can be used as a form of atomic ram 13:39:54 bekensteiiiiiin 13:40:07 ok ok.. to wiki i go 13:40:11 watch me .. ho ho ho 13:40:16 (You'd almost think I knew something about quantum information theory.) 13:40:28 rest assured i don't 13:44:11 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 It's still pretty handwavy, I'm not denying that. 13:45:02 That makes more sense. 13:45:42 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 the NSA, of course 13:51:18 10^21 bytes of youtube videos, facebook photos, B-rate porn, and raw astronomy data 13:51:27 We live in a glorious civilization. 13:51:50 raw astronomy porn, check 13:53:17 Don't google "Young slit experiment" 13:53:27 O KAY 13:58:06 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 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 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 (The image is work-safe, in case someone is wondering.) 14:03:44 (Or, well, I don't know. Maybe if your employer hates kittens?) 14:03:57 (Then it might not be.) 14:04:33 Apparently that's an illustration below where the blog-author calculates the de Broglie wavelength of a kitten. 14:05:21 Also the blog posting is mostly about cat puns. 14:05:35 "-- 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 Hey, I've still got Taneb on ignore. 14:23:42 something fishy here http://www.dagbladet.no/2012/01/02/nyheter/dyrenes_nyheter/innenriks/fiskedod/19632870/ 14:25:18 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 Does it commute if you can't do any commuting? 14:42:38 i think that the number of different brain states is an absurd thing to worry about :-D 14:43:41 sorry, for the "absurd thing" and "worry about" and ":-D" 14:43:47 im being a bit troll 14:49:43 curious questions about quantum states of human brains are.. 14:50:03 are some states of human brains more valuable than others 14:50:53 its all atoms really 14:52:02 itidus21, states, in this case, mean quantum-mechanical states, not anything more abstract. 14:52:12 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 Most of those states consist of soup. 14:53:11 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 ok 14:55:08 Well, it's obviously useful for QM, but not for working out storage capacities. 14:56:26 i don't like the idea of viewing my thoughts as quantum states i guess is what i mean 14:57:42 Why? 14:58:37 its almost like a religion 15:02:24 a religion where information is god :P 15:03:16 what sort of information? physical structures 15:06:42 this is not really motivated as an attack on science or on anyone.. just dealing with some stuff :P 15:07:01 saying it out loud to you all 15:08:13 I, um 15:08:18 This makes little sense. 15:08:51 ok.. well i am hopping afk for some asthma stuff 15:10:12 ok my problem is this :D 15:10:19 Asthma? 15:10:30 trying to understand science and liberal arts at the same time 15:10:57 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 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 hoover: ok heres one way i can put it.. we humans spend a lot of time caring about other humans 15:30:15 we store information in our environments 15:32:35 hmm whats another way for me to randomly angst against science 15:32:58 Creationism? 15:34:28 the geek gradually gets fixed upon a path 15:34:49 forging his mind into a weapon of geekdom 15:35:21 i should concede that all people gradually "invest" their life in some direction or other 15:35:43 but i think it is important to realize that such investments are being made.. there is no perfect investment 15:35:50 its not a game 15:46:43 sorry for so morbid 15:47:08 ^bf +++++++++++++++++++++++++++++++++++++++++++++. 15:47:08 - 15:47:37 ^bf +++++++++++++++++++++++++++++++++++++++++++++......-....++.... 15:47:37 ------,,,,.... 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 looking a bit closer at this bekenstein thing.. 16:52:34 well.. 16:53:03 a mass next to another mass exerts a certain amount of gravity force on it 16:55:05 that is to say, that modelling the static state of something is one question 16:55:34 but modelling the dynamic physical state of something probably requires modelling the totality of the universe acting upon it 16:55:57 just a guess 16:58:56 itidus21: welcome sir 16:59:02 `welcome itidus21 16:59:07 itidus21: 16:59:45 ty hackego for not patronizing me 17:00:57 i'm just typing rubbish as usual.. 17:00:58 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 hmm.. well i guess what i mean is you can't cut and paste the universe 17:02:13 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 it may be values so close to 0 that your computer cannot represent them as anything other than 0 17:02:45 since the two regions will act differently 17:02:53 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 sure. To be an accurate system you'd want your subset of the universe to be as closed as possible. 17:04:47 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 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 Jupitor. 17:05:19 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 Phantom_Hoover: what you've heard of Jupitor? crazy britons. 17:05:51 but if you cut and pasted those same masses very far apart the effect would be less 17:06:09 Phantom_Hoover: I shouldn't even entertain such notions with you. You've probably never heard of the inverse square laws.. 17:06:24 meager forces add up 17:06:29 :-D 17:06:58 they also subtract up in absolute terms since we're talking about vectors. 17:06:59 Sure we do, they're the laws obeyed by the curve generated by inverting a square through a circle. 17:07:00 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 i suppose its not "ok" to cut and paste regions of the universe 17:07:42 in mathematical or physics sense even 17:07:52 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 IT'S MORE COMPLICATED THAN THAT 17:08:21 is it 17:08:36 im just trying to say that as everyone already knows, the universe can't model itself 17:08:51 because im a newbie and i say such things 17:09:04 quintopia: yes you need a better clipboard to do that kind of stuff. 17:09:18 I recommend one of those fancy external clipboard programs. 17:09:26 they have a lot of nice features. 17:09:38 quintopia, *everything* affects gravity, not just matter. 17:10:33 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 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 im just trying to say that as everyone already knows, the universe can't model itself 17:11:04 You're saying that self-interpreters are impossible? 17:11:31 sorry 17:11:49 maybe its possible 17:12:05 http://www.crafts4kids.com/projects/images/solar-sys.jpg doomsday device. the universe will implode now. 17:12:24 i should stop discussing these topics if i don't want to discuss them 17:13:54 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 if it did, then yes, that would be impossible. 17:14:30 so there might exist backups of the universe? :-s 17:14:46 if the data is present, sure. 17:14:54 but... no I doubt it. :P 17:15:26 but that probably hits the backup infinite regression problem 17:15:34 needing backups of backups 17:16:01 just the first backup is already a monumental task. 17:16:18 lol 17:16:33 probably not the best thing for me at 4am either 17:16:42 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 its not going to help me relax 17:16:47 -!- cheater has quit (Ping timeout: 240 seconds). 17:17:55 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 so then it becomes a question, how precise of a model do you want? 17:18:31 enough to get girls probably 17:18:48 i don't imagine theres any other motive 17:19:10 itidus21: I'm afraid there may be no end to your goal in sight.. 17:19:26 girls like cars and money. sorry. 17:19:35 I guess you'd need a lot of money to simulate the universe though. 17:19:42 so indirectly, perhaps. 17:19:45 "oh tidus, what a wonderful universe simulation you have made" 17:19:53 "i think so" 17:20:34 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 Hello! 17:22:04 (this is where the precision of your models really comes into play) 17:22:53 Hmm... 17:23:14 The odds of me having seen elliott have increased mildly 17:23:54 Due to the Scottish weather? 17:24:27 you should write brainfuck on the public toilet walls 17:24:35 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 itidus21, I'll write some lambda calculus 17:25:05 are you in hexham? 17:25:06 Ngevd: yes that was elliott 17:25:13 itidus21, yes 17:25:28 kallisti, engree, or the person whom I saw 17:25:36 hmm 17:25:36 Ngevd: engree 17:25:38 .. 17:25:44 is code as graffiti bad? :D 17:25:46 no, I'm psychic. :P 17:25:51 i wonder how far such ideas have gone 17:26:00 itidus21, I'd imagine not very 17:26:35 google images suggests "not very much" 17:27:33 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 kallisti, /at around the same time/ as elliott whent to sleep 17:29:00 I said the odds of increased mildly, not OMG TOTALLYZ SEEN ELLIOTT LOL 17:29:06 ??? 17:29:08 oh 17:29:09 okay. 17:29:12 sure. 17:29:15 but I doubt it. 17:29:18 just sayin' 17:29:24 http://boingboing.net/2009/10/09/c-graffiti.html 17:29:44 -!- elliott has joined. 17:29:45 http://i.imgur.com/pAy4z.png 17:30:06 itidus21: ah I see you've found the zenith of the artform. 17:30:29 "I told them I knew C because I am good with word and email so they hired me." looooool 17:30:38 i don't see a declaration of ii though 17:30:52 wow it took them an entire 2 months to get fired. that's incredible. 17:30:57 oh i get it 17:31:01 its (;;) 17:34:15 Deewiant: amazing 17:34:15 elliott: You have 1 new message. '/msg lambdabot @messages' to read it. 17:35:30 @messages 17:35:30 You don't have any new messages. 17:35:34 spOOky 17:39:35 07:56:13: come on, mc dropped retro the day it implemented smooth light 17:39:35 07:56:47: That was someone else's idea, though, and optional in any case. 17:39:36 07:57:00: well that stuff isn't around any more 17:39:36 07:57:29: Isn't it still toggleable? (I certainly haven't looked.) 17:39:37 Yes, it is. 17:39:46 It's on-by-default, though. 17:41:00 09:05:48: 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 09:06:51: 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 09:07:24: k(x,0) = 2^h(x,0); k(x,y) = (x+y)^k((xy)^(xy),y-1) 17:41:00 09:07:54: h(0,0) = 1; h(x,0) = p(h(x-1,p(x))); h(x,y) = p(h(x,y-1)) 17:41:00 09:08:02: p(x) = x'th prime number; p(0)=1 17:41:01 09:08:20: q(x,0) = f(x,0); q(x,y) = f(q(x,y-1),q(x,y-1)) 17:41:04 09:08:28: Big number = q(2,q(2,2)) 17:41:05 09:09:15: 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 09:10:36: Is it larger or smaller than: Skew's number, Moser's number, Graham's number, and XKCD's number? 17:41:12 09:10:59: Or even equal? 17:41:14 I am completely unqualified to answer this, but I really doubt it's as big as Graham's number. 17:51:17 11:34:41: ((?!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 11:36:31: would the pearl regex engine implement that in the bad way? 17:51:18 11:36:33: *perl 17:51:18 11:36:39: -!- Jafet has quit (Ping timeout: 240 seconds). 17:51:18 11:36:40: b/c that's what mushclient uses 17:51:19 11:37:53: From what I've heard, it's not uncommonly smart. 17:51:21 11:52:30: 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 fizzie: Patashu was almost certainly referring to PCRE... 17:51:50 12:11:17: 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 12:11:30: that's not xor, xor means an odd number 17:51:50 12:11:59: it's addition (mod 2), after all 17:51:50 Er, right. 17:52:23 12:54:14: So is the weather in Hexham today Scotland? http://i.imgur.com/SWaD6.jpg 17:52:31 Deewiant: The winds actually blew us over the border. 17:55:31 elliott: I sort of thought it was maybe about PCRE, but since e just said "Perl"... 17:55:51 Embedding Perl's regexp engine in some software and then exposing it to Lua would be impressive. 17:56:27 13:58:06: 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 13:59:11: 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 HA HA HA I CAN'T STOP LAUGHING OH THE LIFE OF A SPEECH RECOGNITION RESEARCHER 17:57:02 I felt like getting a grasp on zzo38's number 17:57:10 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 It's scary 18:07:51 You've clearly never heard of Graham's number. 18:16:26 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 Phantom_Hoover: Pfffft, you've CLEARLY never heard of inaccessible cardinals! 18:29:58 -!- myndzi\ has joined. 18:31:09 Hello 18:31:38 so 18:31:40 How do I stop being away? 18:31:50 Be present 18:31:52 Or type /unaway or w/e 18:32:06 w/e 18:32:06 on irssi it's just /away with no arguments 18:32:14 I'm on XChat 18:32:16 no clue. 18:32:55 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 as your processor count increases your network adapter becomes a larger bottleneck. yes? 18:33:24 -!- Ngevd has joined. 18:33:27 or, a smaller bottleneck, I guess. 18:33:29 Back! 18:33:39 on irssi it's just /away with no arguments 18:33:48 no, that's not irssi - that's the irc specification of AWAY 18:34:08 some clients alias /back or /unaway to a /away with no arguments 18:34:10 ah. didn't know. I always prefix my IRC suggestions with "in irssi, it works like this" 18:34:16 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 anyone use a non-qwerty layout? 19:03:19 -!- Vorpal has quit (Ping timeout: 240 seconds). 19:03:42 Yes 19:06:37 I use qwerty except I swapped t and y. 19:07:01 -!- kmc has joined. 19:09:21 because qweryt sounds better? 19:14:53 Totally. 19:20:25 > appEndo $ mappend (Endo f) (Endo g) 19:20:25 Overlapping instances for GHC.Show.Show (a -> a) 19:20:26 arising from a use of `... 19:20:27 grr 19:20:29 > appEndo $ mappend (Endo f) (Endo g) :: Expr 19:20:30 Couldn't match expected type `SimpleReflect.Expr' 19:20:30 against inferred ... 19:20:35 oh 19:20:39 > appEndo (mappend (Endo f) (Endo g)) x :: Expr 19:20:40 f (g x) 19:20:46 > (f >>> g) x 19:20:47 Ambiguous type variable `b' in the constraints: 19:20:47 `SimpleReflect.FromExpr ... 19:20:48 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 hi ais523 19:25:04 hi elliott 19:26:31 -!- Klisz has joined. 19:27:37 -!- premek has joined. 19:29:26 -!- premek has left. 19:30:05 `words --eng-gb 10 19:30:10 herefine rol cha bourterminim ing katlanz eive diseuen karto inde 19:30:33 Bourterminim. 19:30:48 Herefine sounds like an archaic word. 19:30:51 Place name maybe. 19:31:10 "Should we stop here?" "Fine." 19:39:03 !perl print map {$_, 'c' } "hello" 19:39:06 helloc 19:39:12 no bad 19:49:07 -!- NihilistDandy has quit (Ping timeout: 240 seconds). 19:58:46 !perl print "h", uc " ", "i" 19:58:47 h i 19:59:41 !perl print "h", uc undef, "i" 19:59:41 hi 19:59:47 !perl print "h", uc undef // " ", "i" 19:59:47 hi 19:59:51 ah 20:00:02 !perl print "hello" 20:00:03 hello 20:00:08 My first perl program 20:05:32 17:24:35: 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 Ngevd: Wasn't me. 20:05:50 Well, mystery solved 20:06:10 Ngevd: Well, unless you peeked in my window or something. 20:06:33 Someone's door 20:07:01 !perl $_"hi"; %t{uc}=ucfirst; print %t; 20:07:02 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 !perl $_="hi"; %t{uc}=ucfirst; print %t; 20:07:14 syntax error at /tmp/input.15724 line 1, near "%t{uc" \ Execution of /tmp/input.15724 aborted due to compilation errors. 20:07:18 !perl $_="hi"; $t{uc}=ucfirst; print %t; 20:07:18 ucHi 20:07:45 !perl $_="hi"; $t{&uc}=ucfirst; print %t; 20:07:46 Undefined subroutine &main::uc called at /tmp/input.15851 line 1. 20:07:57 !perl $_="hi"; $t{;uc}=ucfirst; print %t; 20:07:58 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 !perl $_="hi"; $t{+uc}=ucfirst; print %t; 20:08:02 HIHi 20:08:08 lol 20:09:00 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 http://www.amazon.co.uk/coal-primer-William-Patrick-Rogers/dp/B0007302VM/ref=cm_cr_pr_product_top 20:13:35 Hey guys, should I buy this book? 20:14:04 Why not? 20:14:21 Deewiant: It's a little on the pricey side, don't you think? 20:14:26 Nah. 20:14:41 I guess if it's worth it! 20:16:33 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 Deewiant: I don't trust third-party sellers 20:16:50 The added £2.80 for delivery is a bit much. What, no Super Saver stuff? 20:16:53 Also the 5% discount is nice. 20:17:32 !perl @x=1..5; print map{@x}@x #yeaaaaaaaah 20:17:32 1234512345123451234512345 20:18:02 "Paperback: 7190 pages". That's a big book. 20:18:11 It's 15 volumes. 20:18:16 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 Also it's a CD-ROM. 20:18:26 Also I'm just getting these from Phantom_Hoover, he's missing out bigtime on #esoteric karma. 20:18:41 You little git! 20:18:47 sometimes I feel Perl is a little overzealous with the warnings. 20:19:04 it told me that a , in a qw could possibly be an attempt to seperate words with commas. 20:19:20 !perl qw( z x c v b n m , .) 20:19:20 No output. 20:19:25 !perl use warnings; qw( z x c v b n m , .) 20:19:26 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 !perl use warnings; print qw( z x c v b n m , .); 20:19:48 Possible attempt to separate words with commas at /tmp/input.17585 line 1. \ zxcvbnm,. 20:22:43 -!- oerjan has joined. 20:23:08 `words 50 20:23:16 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 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 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 also sthophal 20:24:59 you guys picked all the wrong words. 20:25:19 mahart is idly pitudie 20:28:36 well no one could possibly deny that pensici, solvo, capdlak, sposusan and gonomi are supprompt game names 20:29:46 I SAID NO ONE COULD POSSIBLY DENY IT 20:29:56 what? sorry, i was off on a bertic misson 20:29:59 * quintopia denies it 20:30:04 except quintopia. 20:31:40 Hand me the aculin, we have a rampant echlori infection here! 20:32:34 `words --eng-all 50 #we need crazier words 20:32:41 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 the patient's segm is serring, we need more sthophal! 20:33:48 it looks like the patient has placox chianartum 20:35:27 get a livaiin nephaltur, stat! 20:35:59 have you heard of that fancy new music website called roxyfm? 20:37:12 -!- _Slereah has changed nick to Slereah. 21:39:02 I am completely unqualified to answer this, but I really doubt it's as big as Graham's number. <-- *MWAHAHAHA* 21:39:09 oerjan: wat 21:39:17 i mean, i also doubt it, with even some qualification 21:39:44 (see logs) 21:40:15 oerjan: right 21:40:41 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 well _technically_ so is graham's number :P 21:41:27 -!- iconmaster[3] has joined. 21:42:09 oerjan: yeah, but this doesn't apply the large numbers to the /control flow/ 21:43:01 i guess that's another way of saying it has to be primitive recursive 21:44:37 oerjan: it was not intended to be a precise assessment :P 21:45:06 none of the functions is using itself to determine its recursion depth 21:45:20 er 21:45:49 -!- iconmaster[3] has quit (Ping timeout: 252 seconds). 21:46:00 yes, i guess that's it 21:46:30 Frooxius: what year did AttoASM first become public? 2011, or 2012? 21:47:37 -!- iconmaster has joined. 21:48:04 he linked to a video of it from 2011 iirc 21:48:09 but i think he's just released the lang itself 21:48:38 whew FINALLY connected: I came to the conclusion that my IRC client is shit. 21:49:06 Did you get a bunch of wierd messages from me? 21:50:04 iconmaster: not that i noticed 21:50:17 Apparently, arbitarily picking your IRC client from the first item on Wikipedia's IRC Client List is not a good idea. 21:50:33 you don'ts ay 21:50:42 * elliott dont's ay all day 21:50:59 (My old client was Bersirc. Notic the alphabetic precedence.) 21:51:20 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIRC 21:51:37 the world's most reassuring irc client 21:52:19 hello! welcome to #esoteric! hello! welcome to #esoteric! hello! wel 21:54:19 -!- aloril has quit (Ping timeout: 240 seconds). 21:54:43 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 We have a bot that does this for us, fungot 21:55:12 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 :D 21:55:23 lucky 21:55:23 fungot: bravo! 21:55:23 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 ^style 21:55:34 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 î thought iwc got a little repetititive at the end 21:56:11 ^style youtube 21:56:11 Selected style: youtube (Some YouTube comments) 21:56:16 fungot 21:56:16 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 fuck, i haven't been keeping up with iwc reruns 21:57:20 oerjan: have the sunday annotations still been good 21:57:54 -!- Jafet has quit (Quit: Leaving.). 21:57:56 elliott: sure 21:58:55 fungot: don't tell me youtube comments are less repetitive than iwc! 21:58:55 oerjan: the accident report? i think mona is looking more and more!! its kinda scary at first but it was 21:59:18 fungot: yes that's scary 21:59:18 oerjan: boy, suuure looks like everything i hear it was manned. ignore him. 21:59:33 fungot, hugs 21:59:33 Madoka-Kaname: yes. there were passengers and none of you. 21:59:41 fungot, I hate you :( 21:59:41 Madoka-Kaname: this game. 21:59:49 fungot: it seems youtube comments are a bit short 21:59:49 oerjan: bad thing is it when the plane 21:59:54 functor 21:59:55 Er. 21:59:57 fungot 21:59:57 shachaf: looks ok. now be gone, troll. thats bad. 22:00:01 ^style 22:00:01 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 ^style lovecraft 22:00:47 Selected style: lovecraft (H. P. Lovecraft's writings) 22:00:51 fungot, are you okey? 22:00:52 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 fungot, are you... okey? 22:01:02 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 more like off-key 22:01:39 fungot, hugs? 22:01:40 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 fungot, make sense :< 22:07:57 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 ^style homestuck 22:08:06 Selected style: homestuck (Homestuck pages 1901-4673) 22:08:11 fungot, can you make sense now? 22:08:16 fungot, hello? 22:08:36 Thank fucking god fungot has a message limit. 22:08:37 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 In my earlier days, I cursed the message limit. 22:09:49 Now I see it for the blessing it truly is. 22:09:49 -!- azaq23 has quit (Quit: Leaving.). 22:11:30 :t find 22:11:31 forall a. (a -> Bool) -> [a] -> Maybe a 22:12:29 :t (.:) 22:12:30 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 > nubBy((>1).:gcd)[2..] 22:13:02 [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 oerjan: it's caleskell, man 22:13:42 :t (.) . (.) 22:13:43 forall (f :: * -> *) a b (f1 :: * -> *). (Functor f, Functor f1) => (a -> b) -> f (f1 a) -> f (f1 b) 22:13:56 .: is great 22:14:29 :t (.) . (.) . (.) 22:14:29 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 :t (.) 22:14:41 forall a b (f :: * -> *). (Functor f) => (a -> b) -> f a -> f b 22:14:45 oerjan: just think of (.) as liftF 22:14:51 you're lifting into the nth depth of a stack of functors 22:14:56 by composing liftFs 22:15:06 :t (.:.) 22:15:07 Not in scope: `.:.' 22:15:21 :t (..:) 22:15:22 Not in scope: `..:' 22:16:22 -!- zzo38 has joined. 22:17:42 @ty (.::) 22:17:43 Not in scope: `.::' 22:17:54 @let (.::) = (.) . (.) .(.) 22:17:55 Defined. 22:18:34 The Total Recall combinator. 22:21:20 I feel like words/unwords and lines/unlines should have their names flipped. 22:21:57 I feel like you're wrong. 22:22:13 I also feel like lines/unlines and words/unwords are evil because they lose information. 22:22:20 well sure. 22:22:30 they're not perfect inverses, no. 22:22:40 They're EVIL inverses. 22:22:46 presumably you don't want that extra information, and if you do, you want to use something. 22:23:01 something isn't evil because it doesn't fill the purpose you want it to. 22:23:04 I want a function onlines :: (String -> String) -> String -> String 22:23:19 This is usually implemented as \f -> unlines . f . lines, which is wrong. 22:23:25 indeed. 22:24:05 -!- DCliche has joined. 22:24:12 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 "lines" gives you the lines in a string. 22:24:27 and lines taking a list of strings and produce a single string of lines. 22:24:28 "unlines" does the opposite of lines. 22:24:44 Think more, like, declaratively, man. 22:24:46 shachaf: you could do the exact same thing with the flipped meanings. 22:24:57 No. 22:25:16 kallisti's proposal is nonsense. 22:25:18 "lines" gives you a list of strings as lines 22:25:18 elliott would like to explain. 22:25:20 shachaf is completely right. 22:25:22 "unlines" does the opposite of lines. 22:25:25 That is my explanation. 22:25:33 elliott: Are you going to Hac Boston? 22:25:36 kallisti: "lines xs" is not the lines of xs. 22:25:39 Therefore the name is wrong. 22:25:55 "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 "lines s" is the lines of s, so the name is right. 22:26:04 shachaf: No. 22:27:06 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 shachaf: I was going to say "f and z" but then I decided to be a MATHEMATICIAN about it!!!!!! 22:27:56 We should use "of" as infix application syntax. 22:28:00 And allow spaces in function names. 22:28:10 -!- Klisz has quit (Ping timeout: 252 seconds). 22:28:13 foo = the unlines of the lines of xs 22:28:18 replicate of 3 of "hello" 22:29:14 hmm, I'll give this guy 5 minutes to accept my answer 22:29:37 elliott: I like how your "of" basically breaks down completely. 22:29:37 So I had this silly idea 22:29:42 *of analogy 22:29:52 because some Haskell functions are in fact verbs. 22:29:55 I'm writingh an "auto-responder bot" 22:30:26 Pretty much when I'm away, there will be a shitty chatbot that talks when you mention it 22:30:37 i guess like fungot but less markov-y? 22:30:37 iconmaster: is it 22:30:40 Congratulations, you've invented fungot. 22:30:40 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 elliott: you got ninja'd 22:30:53 `addquote 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 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 794) 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 fungot is a depraved individual. 22:31:01 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 elliott: that is not a good fungot quote 22:31:04 ais523: of what??? now you've seen everything! weaky, is it really so much to the frustration of the suitor. 22:31:08 iconmaster: you should make it sentient like Strider's bot... 22:31:08 `quote 22:31:10 `quote 22:31:11 735) i cnat eve begin to understand what you meant with that "one" 22:31:12 `quote 22:31:13 `quote 22:31:14 `quote 22:31:21 461) elliott: You have become the very thing you fought for! 22:31:25 448) pikhq, living in the future sucks. The past just keeps coming up to us and trying to make us feel guilty. 22:31:25 Srider was an inspiration, so i'll try my hardest 22:31:46 but yeah, it'll prolly just be a shitty chat-bot 22:32:07 chitty-chat bot 22:32:15 674) It's missing the "bear scat showing a diet of prime numbers" picture. 22:32:15 490) rest in peace lambdabot???? monqy: it'll probably be back later nap in peace 22:32:26 I mean, this IRC library I'm using right now... It's not documented almost at all 22:32:46 You could just write your own IRC code; the protocol is trivial. 22:32:50 I had to fix the example 22:32:53 elliott: 735 the worst? 22:32:57 ais523: only 4 have came 22:33:09 elliott: there are 5: 735 461 448 674 490 22:33:24 there are 5 quotes! 22:33:37 oh, right. i like them all but 674 is prolly worst 22:33:46 I don't get 735 at all 22:33:53 fungot's Homestuck mode is the best. 22:33:54 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 674 sounds like it might have a context 22:34:18 hmm, I like the fungot styles other people seem to hate 22:34:18 ais523: not that it would actually bother pitying you. 22:34:25 so testing of my bot is at #iconbot 22:34:33 Nothing there right now 22:34:54 What's "Homestuck"? 22:35:00 People keep talking about it on the Internet. 22:35:03 Which probably emans it's bad. 22:35:06 Homestuck is basically the best thing ever. 22:35:14 It's very good, but the people who like it are terrible. 22:35:25 I agree. 22:35:31 examples: elliott, kallisti, Sgeo, iconmaster 22:35:48 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 Phantom_Hoover: I identify everybody as terrible. 22:36:19 shachaf, you're well on the way. 22:36:20 Including Homestuck. 22:37:37 shachaf, keep it up and you'll be a top-flight Homestuck fan in no time. 22:37:54 This looks boring. 22:37:58 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 shachaf: Homestuck is a new diet and children's cartoon. 22:38:16 It kills bears for cash. 22:38:20 F- don't buy. 22:38:56 Phantom_Hoover: Back me up on this. 22:39:09 These are true facts. 22:39:18 I don't get it. 22:39:29 Is this like a game where you can only press one button to go forward? 22:39:35 Yes. 22:39:58 (Before Phantom_Hoover or someone jumps in, the actual games are just really complicated single buttons.) 22:39:59 Why would you have two buttons you can press to go forward? 22:40:03 That would just be stupid. 22:41:32 -!- cheater has joined. 22:42:15 I don't get it. 22:43:23 shachaf: It makes sense if you eat bears. 22:45:05 -!- Klisz has joined. 22:45:28 Phantom_Hoover: So that you can fast or slow forward, I suppose. 22:45:29 zzo38: You have 1 new message. '/msg lambdabot @messages' to read it. 22:45:39 shachaf, here, watch http://www.mspaintadventures.com/?s=6&p=004748 22:45:44 ?messages 22:45:44 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 the approx. ackermann level. 22:45:45 It should make sense after that. 22:46:06 But no audio. 22:46:26 It should still make sense without audio. 22:46:38 Phantom_Hoover: But what about the voice acting lovingly done by 3-year-olds? 22:46:45 shachaf: Don't believe the bears. 22:46:52 -!- DCliche has quit (Ping timeout: 252 seconds). 22:46:55 It's not terribly vital to the plot, fortunately. 22:47:32 That's what they tell you. Then you're buying speakers and dealing drugs on the street. In the "ghetto" "hood". 22:47:36 "Ghood". 22:52:07 shachaf 22:52:08 are 22:52:10 are you still there 22:56:05 Phantom_Hoover: [] 22:56:19 Does it make sense now? 22:56:26 I didn't really watch it. 22:56:37 -!- Jafet has quit (Quit: Leaving.). 22:56:41 Honestly, it's not much to ask. 22:57:21 -!- Jafet has joined. 22:57:54 Honestly, it is. 22:58:12 But you would be SO ENLIGHTENED :( 23:02:00 > show{-lol-}3 23:02:01 "3" 23:03:04 a lot of programming language tutorials tend to say something like "comments are ignored" 23:03:42 but it would be more accurate to say something like "comments can be thought of as a single space" 23:03:52 > (show)3 23:03:53 "3" 23:03:58 Comments aren't whitespace, they just separate tokens. 23:04:02 (Except in C, where they actually are whitespace.0 23:04:11 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 whitespace-> whitestuff {whitestuff} 23:06:34 whitestuff-> whitechar | comment | ncomment 23:06:42 -!- augur has quit (Remote host closed the connection). 23:07:23 Racist. 23:09:15 nearly all programming languages are racist. when did _you_ last see a pl which allowed blackspace? 23:09:33 sorry, african-americanspace 23:09:38 oerjan: That's why I invert the colours in my terminal. 23:09:51 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 kallisti: you're babbling again 23:11:25 function application is just an adjacency of two of a particular set of tokens. 23:12:28 if function application were literally defined as whitespace, then (f)x would not be valid. 23:12:46 how do you define something as whitespace? 23:12:59 by specifying what whitespace is, and then specifying that this thing involves whitespace. 23:13:02 kallisti: more precisely, it's about separation of lexical analysis and parsing 23:13:09 oerjan: yes 23:13:27 where whitespace is thrown away before the latter 23:15:36 -!- iconmaster has joined. 23:18:05 octal-> octit{octit} 23:18:21 -!- monqy has joined. 23:18:27 monqy: bye 23:18:38 hm i was going to say it's octet, but that's something else 23:18:43 hi 23:19:07 an octit is three bits, anyway 23:19:10 oerjan: an octet is base-256 :P 23:19:26 oerjan: it's the breasts of cephalopod mollusks obviously. 23:19:34 presumably a bintet is base-4 23:19:38 ...right. 23:19:43 so a base-8 digit is a tritet 23:19:47 base-(2^3) 23:20:14 *bitet methinks 23:20:34 elliott: actually i think octet is the same as the musical term, so it would be duet and trio 23:20:42 :D 23:20:46 that's awesome 23:21:09 duet, trio, quartet, quintet, sextet, septet, octet, nonet and dectet 23:21:15 or possibly duo? those have slightly different meanings 23:21:27 that last one is base-1024. perhaps not very useful 23:21:30 or am i confusing with norwegian again 23:21:32 oerjan: well ^ is a quote from wp 23:21:34 so duet methinks 23:21:40 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds). 23:21:41 duo is more informal i think 23:21:51 duet ofc can refer to http://en.wikipedia.org/wiki/Duet as well 23:23:48 oh heh it seems i looked at that page at _precisely_ the moment wikipedia logged me out 23:24:12 gave some strange layout error 23:25:01 oh wait no 23:25:42 > deriv (\x -> cos x) (x :: Expr) 23:25:43 1 * negate (sin x) 23:26:09 i got confused by being brought to wiktionary when clicking duo 23:26:27 -!- Patashu has joined. 23:26:34 check this 3d fractal out http://www.youtube.com/watch?v=jYsbFreUMkg&feature=g-all-lik&context=G27426daFAAAAAAAALAA 23:30:39 Prelude Data.Number.Dif SimpleReflect> deriv cos (x :: Expr) 23:30:40 1 * negate a 23:30:41 uh.... 23:30:42 what? 23:31:52 kallisti: what 23:31:59 I don't know. 23:33:03 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 but so far everything has been fine. 23:33:26 I just reinstall numbers and it's still producing the same output. 23:33:33 > deriv cos (x :: Expr) 23:33:34 1 * negate (sin x) 23:34:20 By any chance did you define x = asin a? :-) 23:34:27 uh, no. 23:34:54 > deriv cos (asin a :: Expr) 23:34:55 1 * negate (sin (asin a)) 23:34:55 -!- iconmaster has quit (Ping timeout: 255 seconds). 23:35:15 Prelude SimpleReflect> x 23:35:15 x 23:35:15 Prelude SimpleReflect> y 23:35:15 y 23:35:15 Prelude SimpleReflect> cos x 23:35:17 cos x 23:35:20 etc 23:35:35 so something is weird with Data.Number.Dif 23:36:05 kallisti: did it use to work before? 23:36:12 -!- Phantom_Hoover has joined. 23:36:12 yes. 23:36:28 it's been a while since I've installed the new GHC 23:36:30 the dif thing hasn't been updated since 2009. 23:36:35 so, no. 23:36:38 it's not that 23:36:48 elliott: that's not quite what I meant. 23:37:10 are you implying it's a ghc bug 23:37:14 no 23:37:28 I as implying that the error has something vaguely to do with that module 23:37:30 and not SimpleReflect 23:37:32 the two modules being used. 23:37:44 not that they suddenly uploaded a new version and it broke. 23:37:59 kallisti: so what happens if you do map (deriv cos) [0..] 23:38:10 er, *sin 23:38:14 er no 23:38:16 **cos 23:38:32 I get a lot of numbers in (-1,1) 23:38:40 oh no 23:38:42 not that. 23:38:45 I get a lot of numbers. :) 23:38:58 > map (deriv cos) [0..] 23:38:59 [-0.0,-0.8414709848078965,-0.9092974268256817,-0.1411200080598672,0.7568024... 23:39:04 actually yes 23:39:06 I get a lot of numbers in (-1,1) 23:39:16 kallisti: but are they the same as abovE? 23:39:18 *e 23:39:32 yes. 23:39:47 ok so it works for Double, but not simplereflect? 23:40:02 maybe it _is_ something to do with simplereflect as well 23:40:33 Prelude SimpleReflect Data.Number.Dif> deriv cos (0 :: Expr) 23:40:34 1 * negate a 23:40:44 18:39 < oerjan> ok so it works for Double, but not simplereflect? 23:40:48 I believe that is an accurate statement 23:41:33 presumably it breaks because Expr does not provide a genuine group/ring 23:42:02 cos = lift (cycle [cos, negate . sin, negate . cos, sin]) 23:42:11 lift :: (Num a) => [a -> a] -> Dif a -> Dif a 23:42:12 lift (f : _) (C x) = C (f x) 23:42:12 lift (f : f') p@(D x x') = D (f x) (x' * lift f' p) 23:42:12 lift _ _ = error "lift" 23:42:25 see http://hackage.haskell.org/packages/archive/numbers/2009.8.9/doc/html/src/Data-Number-Dif.html 23:43:46 Prelude SimpleReflect Data.Number.Dif> negate b 23:43:47 negate a 23:43:49 found it 23:44:14 Prelude SimpleReflect Data.Number.Dif> negate (var "the queen of france") 23:44:14 negate a 23:44:25 > negate x 23:44:26 negate x 23:45:05 > 0 - x 23:45:06 0 - x 23:45:14 * kallisti tries to reinstall simplereflect 23:45:36 negate = withReduce $ fun "negate" `iOp` negate `dOp` negate 23:45:46 looks ok to me 23:45:56 kallisti: where is your simplereflect from? 23:45:59 that's a quote from the show package 23:46:07 how do I figure that out... 23:46:14 i dont know, you installed it 23:46:18 I have a feeling when I reinstall it, it will be fixed. 23:47:01 :t iOp 23:47:02 Not in scope: `iOp' 23:50:26 no that didn't fix it 23:50:30 here's some relevant information: 23:50:31 http://sprunge.us/bQQf 23:50:43 oh well 23:50:47 ~who knows~ 23:51:12 oops 23:51:14 adam@maria:~$ ghci --version 23:51:14 The Glorious Glasgow Haskell Compilation System, version 7.2.2 23:51:20 that line was missing 23:51:21 from my paste 23:53:24 * Phantom_Hoover → sleep 23:53:26 -!- Phantom_Hoover has quit (Quit: Leaving). 23:55:59 :t intExpr 23:56:00 Not in scope: `intExpr' 23:56:43 anyone with GHC 7.2 want to see if they can reproduce? 23:57:55 kallisti: what do you get from negate (undefined :: Expr) ? 23:58:32 negate a 23:58:36 it's basically constant for anything 23:59:21 elliott: what are some things I should have done before compiling and installing GHC? 23:59:28 I basically just removed ghc via apt-get 23:59:43 kallisti: which version of simplereflect was installed? 2012-01-04: 00:00:21 oh wait it's show? 00:00:37 well I installed both show and simple-reflect but it seems to be using show. 00:00:49 I'm not sure that it matters 00:00:58 but even after installing show it installed simple-reflect when I told it to 00:01:25 Configuring show-0.4.1.2... 00:03:33 I have a feeling it has something to do with a misconfigured system. 00:03:40 I have both GHC 6 and 7 on this computer. 00:03:48 kallisti: what does Prelude.negate x give? 00:04:08 same thing. 00:04:24 elliott: what are some things I should have done before compiling and installing GHC? 00:04:27 removing everything 00:04:28 kallisti: iirc they are not supposed to mix packages for different ghc versions 00:04:36 elliott: define "everything" 00:04:36 anyway 00:04:37 no 00:04:39 it's not a misconfiguration 00:04:43 the library is just fucked up 00:04:51 come on, ghc bugs don't manifest as subtle wrongness where "a" is used for no reason 00:05:04 elliott: -shrug- 00:05:10 so does it work on your system. 00:05:17 with your snazzy GHC 7 00:05:31 and perfectly configuredness etc 00:05:45 negate = withReduce $ fun "negate" `iOp` negate `dOp` negate 00:05:46 iOp :: (Expr -> Expr) -> (Integer -> Integer) -> Expr -> Expr 00:05:46 iOp rr ff aa = (rr a ) { intExpr = ff <$> intExpr aa } 00:05:46 dOp :: (Expr -> Expr) -> (Double -> Double) -> Expr -> Expr 00:05:46 dOp rr ff aa = (rr aa ) { doubleExpr = ff <$> doubleExpr aa } 00:06:04 O_o 00:06:04 instance (Show a, FromExpr b) => FromExpr (a -> b) where 00:06:05 fromExpr ff aa = fromExpr $ op L 10 " " ff (lift aa) 00:06:17 cba to figure out the bug 00:06:30 elliott: that rr a should have been rr aa, no? :D 00:06:48 hm on the source I looked at it was a not aa 00:07:07 oerjan: aha 00:07:07 yep 00:07:08 kallisti: see the second iOp line 00:07:09 iOp r f a = (r a ) { intExpr = f <$> intExpr a } 00:07:10 a is the variable "a" 00:07:12 on hackage 00:07:18 kallisti: http://hackage.haskell.org/packages/archive/show/0.4.1.2/doc/html/src/SimpleReflect.html 00:07:23 I don't care what source you're looking at, it's the wrong one 00:07:29 oh hm 00:07:34 Debug.SimpleReflect.Expr 00:07:46 that's not the show package 00:07:50 I would have spotted it much earlier if I were looking at the right source. :P 00:07:51 which is what lambdabot uses 00:07:56 otoh it might be newer/less buggy 00:08:04 http://hackage.haskell.org/packages/archive/simple-reflect/0.2/doc/html/src/Debug-SimpleReflect-Expr.html#Expr 00:08:14 anyway 00:08:15 http://hackage.haskell.org/packages/archive/numbers/2009.8.9/doc/html/Data-Number-Symbolic.html 00:08:16 same package as Dif 00:08:18 probably works better :P 00:08:22 :t Data.Number.Symbolic.var 00:08:23 forall a. String -> Sym a 00:08:25 yay 00:08:46 kallisti: um you were clearly using show-0.4.1.2 in what you pasted 00:08:53 not simple-reflect 00:09:28 * kallisti is well-known for his attention to detail. 00:09:46 you don't say 00:10:03 well, technically, yes. I ACTION'd it 00:10:13 :> 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 elliott: you never explained why I shouldn't move mueval into /usr/bin 00:12:27 or maybe you did and I forgot 00:12:47 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 loadInputFile = parseInputFile >=> either ((>> exitFailure) . hPutStrLn stderr . show ) (fmap join . sequence . fmap loadIncludeFiles); 00:13:06 parseInputFile n = theSearchPath >>= (<|> fileErr n) . choice . fmap (parseFromFile (mmlParser <* eof) . ( n)); 00:13:15 loadIncludeFiles (Include x) = loadInputFile x; loadIncludeFiles x = return [x]; 00:14:15 Is this the proper way or is there better ways? 00:14:50 elliott: also what's the difference between mueval and mueval-core? 00:15:21 oerjan: hm in (f x), what precedence is f at 00:15:31 kallisti: i don't know 00:15:53 elliott: 11 or so... 00:16:17 I don't recall seeing the Report mention a precedence for function application. 00:16:27 iirc showsPrec uses 11 for the level above operators? 00:16:53 the haskell report doesn't assign any numbers to non-operator syntax afair 00:18:00 oh nice Symbolic does reductions 00:18:07 like actual reductions 00:18:18 deriving cos yields -sin x 00:18:33 also, the let, case and \ expressions don't fit into simple precedence 00:19:35 they are high from the left, but cannot be put right after application, and are greedy/low to the right 00:22:59 kallisti: simplereflect does too, they're just manual 00:23:02 you have to ask for them 00:23:28 -!- Phantom_Hoover has joined. 00:23:41 Oh, Jesus, Vi Hart is now affiliated with Khan Academy. 00:24:13 @tell Sgeo You are no longer allowed to use any Khan Academy resources. Thank you for your coöperation. 00:24:14 Consider it noted. 00:24:27 What's wrong with Vi Hart? 00:24:28 Sgeo: You have 2 new messages. '/msg lambdabot @messages' to read them. 00:24:39 @messages 00:24:39 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 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 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 lambdabot: i don't like your reverse amnesia 00:26:17 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 > let derivs f x = takeWhile (/=0) . map val . iterate df . f $ dVar x in derivs (^3) (Data.Number.Symbolic.var "x") 00:26:59 [x*x*x,(x+x)*x+x*x,2*x+x+x+x+x,6] 00:27:05 .....6? 00:27:42 yes, 6 00:27:44 > let derivs f x = takeWhile (/=0) . map val . iterate df . f $ dVar x in derivs (^3) (Data.Number.Symbolic.con "x") 00:27:45 No instance for (GHC.Num.Num [GHC.Types.Char]) 00:27:45 arising from a use of `de... 00:27:56 > let derivs f x = takeWhile (/=0) . map val . iterate df . f $ dVar x in derivs (^3) (Data.Number.Symbolic.con 5) 00:27:57 [125,75,30,6] 00:28:04 hm, okay. 00:28:09 oh right 00:28:15 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 But I don't know why they didn't simplify the other results more 00:29:12 oerjan: hm what precedence is \ at 00:29:16 > 2 + \e -> e 00:29:17 *Exception: show: No overloading for function 00:29:29 elliott: i just told you above 00:29:37 oerjan: ah 00:29:44 oerjan: ok what's a _conservative_ precedence to assign \ :P 00:30:00 11 from the left, -1 from the right? 00:30:33 oerjan: *single precedence 00:30:41 conservative as in, always valid but sometimes produces needless parens 00:30:50 (yes -inf would count :P) 00:31:06 oh. -inf then 00:31:07 @src shows 00:31:07 Source not found. You untyped fool! 00:31:09 @src show 00:31:10 show x = shows x "" 00:31:17 oerjan: bah fine 00:32:13 oerjan: hm what precedence is e at in (\_ -> e) 00:32:36 ...it's an arbitrary expression 00:32:53 so also -inf, i guess 00:33:08 or hm 00:33:16 oerjan: ok what precedence would you showsPrec it at if you had to showsPrec an e in that position :P 00:33:23 I guess (-1) would work 00:33:27 except, no 00:33:30 you want /no/ parens 00:33:33 not /always/ parens 00:33:35 so it's actually +inf 00:33:43 so... 11 00:33:52 elliott: erm not really 00:34:05 er wait no 00:34:07 oerjan: ok it's +inf 00:34:35 http://www.reddit.com/r/math/comments/o13r9/profile_of_eric_lander_mathematician_turned/ 00:34:48 Profile of a mathematician turned biologist.... turned killer 00:34:53 elliott: no, that way if e contains any operators it will be parenthesized 00:35:07 oerjan: oh right it's > not < 00:35:11 oerjan: ok so -1 then 00:35:53 -!- oerjan has quit (Quit: Good night). 00:36:37 Phantom_Hoover: I was hoping it'd be actually that. 00:37:02 Does the prospect of biomathematical murder entice you? 00:37:08 Yes. 00:37:11 Phantom_Hoover: What's a synonym of inspectable. 00:37:29 Lookable. 00:37:41 Phantom_Hoover: I hate you. 00:38:26 (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 elliott: scrutinable 00:40:23 * Phantom_Hoover → sleep 00:40:27 -!- Phantom_Hoover has quit (Quit: Leaving). 00:41:32 elliott: auditable 00:41:35 examinable 00:41:57 investigable 00:43:49 * kallisti enjoys how particularly easy it is to define a recursive dual number for automatic differentiation. 00:44:01 so that you can continue taking derivatives of derivatives. 00:44:20 or compute values from differentiated numbers and differentiate that. 00:47:12 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 also x+x to 2*x, and x + C*x to (C+1)*x 00:50:20 perhaps I could convince them to let me patch it or something? 00:51:46 though I'd be more interested in a more generalized way to redefine display/reduction behavior. 00:54:14 itt: cas 00:55:52 not quite, no. 00:56:12 unless a CAS can be embedded in Haskell's numeric typeclasses. 00:56:16 then yes, sure. 00:57:18 but I'm mostly interested in a few simple reductions. 00:57:59 not, say, sovling equations and performing complex algebra. 00:59:29 -!- Jafet has quit (Quit: Leaving.). 00:59:35 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 @tell iconmaster hi, your nick makes me think of ReBoot. 01:04:10 Consider it noted. 01:05:36 it would be interesting to analyze the complexity of language implementations. 01:06:27 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 s/factors/factors or is it/ 01:08:06 I would think it's mostly constant factors or linear factors. 01:08:52 variable interpolation would be linear (not counting stuff like @{[...]} which is basically an eval) 01:13:07 kallisti: did you know: the asker of the highest-voted question of all time on SO only has 263 rep 01:13:52 this is hilarious to me 01:13:54 probably because 01:13:57 i have gone completely off the deep end 01:14:08 yes 01:14:26 you're like me when I was playing WoW. 01:15:32 elliott: which question? 01:16:08 "how do I shot web?" 01:16:28 not "how is babby formed?" then? 01:18:34 olsner: http://stackoverflow.com/questions/194812/list-of-freely-available-programming-books 01:18:46 it got converted to community wiki before they could reap the massive rep spoils :P 01:19:18 slightly above an hour after being posted, even 01:36:54 -!- derdon has quit (Remote host closed the connection). 01:37:42 "I am a bug" is the worst thing I've ever read. 01:44:03 wat 01:45:43 -!- lambdabot has quit (Ping timeout: 244 seconds). 02:02:44 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 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 that list is pretty cool 03:47:46 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 Due to these rules, it isn't a very good game. 03:50:24 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 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 zzo38: real pinball tables penalise you for nudging the table 03:58:26 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 ais523: Yes they do; but only if you do it too hard or too much. 04:14:17 i have the best pinball game 04:14:26 it is a dos game 04:14:42 i can't remember what it's called but it is best 04:16:09 I have Visual Pinball, it has some flipperless games JiggleBox is best one. 04:17:23 i cant play it anymore 04:17:31 because i dont have a windows box 04:17:45 if i find it, i'll give it to you 04:18:14 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 i vote yes 04:19:10 but you have all these ideas and you never make them :/ 04:19:14 I don't think this is a yes and no question 04:24:31 this pinball project which is under strict deadlines will require a new programming language like C and Haskell, but markedly superior 04:26:11 like C and Haskell? 04:26:12 simultaneously? 04:26:45 hmm.. it just has to be better than them 04:28:15 it's hard to envisage a language that's better than C at everything and also better than Haskell at everything 04:28:22 although if it existed, I'd probably use it 04:30:13 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 its necessary to make the pinball game 04:38:25 make it 04:39:18 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 I am not saying it has to be done either 04:40:05 ais523: Wouldn't it be enough to be better than C and Haskell in every respect? *zing* 04:40:20 neither's really good for one-off text processing 04:40:29 ais523: @ 04:40:36 What, and Perl is? 04:40:39 doesn't yet exist 04:40:41 :P 04:40:44 pikhq: surprisingly, yes 04:40:45 ais523: neither does scapegoat 04:40:55 (yes, yes, I know, that's the *one* thing Perl actually does well.) 04:41:00 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 elliott: give him @ and he'll give you scapegoat 04:41:08 like he said 04:41:12 It *is* awk on steroids, after all. 04:41:17 but what vcs will i develop @ with? 04:41:31 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 I see we have a cyclic dependency here. 04:41:36 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 elliott: something that sg imports well 04:41:46 I'm going to solve this in the standard elliott way. 04:41:48 ais523: give me a bit of scapegoat and i'll give you a bit of @ 04:41:56 elliott: You will develop @ with @ as the VCS. 04:42:15 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 pikhq: @ as the solution to every problem, offloading work to others... yep, checks out 04:42:21 the second, harder to say 04:42:37 ais523: I need 32 bits to get started 04:42:45 in return i'll produce 64 bits of @ 04:42:53 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 elliott: "Scap" 04:43:19 elliott: are we just both going to come up with increasingly long header comments? :P 04:43:24 zzo38: Yup. And Perl is AWK with more stuff. 04:43:31 but I can't even do that without knowing what language to write sg in 04:43:34 ais523: no way, @ isn't textual 04:43:38 ais523: just gimme the start of the README or something 04:43:40 or LICENSE 04:43:40 seriously, I probably would write it if I could think of an appropriate language 04:43:46 (in spirit, if not in a more strict sense) 04:43:53 elliott: surely, @'s /comments/ can contain textual data, though? 04:43:56 it doesnt have to be the first 32 bits does it? 04:44:07 do the bits have to be consecutive? 04:44:08 so you just need to start with the bits that mean "comment", then the content of the comment 04:44:14 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 ais523: anyway, I'd be trying to implement sg more actively if I remembered what the most recent model was 04:44:52 pikhq: Yes, Perl does have things like AWK 04:44:58 as I said, I'd draw a picture of it if I were any good at drawing 04:45:00 So Perl can be used for text processing too 04:45:21 ais523: just use LaTeX or something, there's diagram packages 04:45:30 Which, if it's designed for anything, that's what it's designed for. 04:45:31 but I'd have to learn them 04:46:23 ais523: ah, you're trying to do something successfully without learning! 04:46:27 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 good luck, nobody has ever managed that. 04:46:38 elliott: no 04:46:46 I'm trying /not/ to do something, to avoid having to learn how 04:47:37 that's reasonable, right? 04:47:46 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 Yes, PHP does have drawing function too. 04:50:08 I have done job asked by some other people, making program in PHP to draw pie charts. 05:05:40 Wow, I've been programming for ~8 years. 05:09:06 wow, only 8.. 05:09:19 apparently programming is about quality not quantity 05:11:02 -!- MDuck has joined. 05:11:12 itidus21: 8 years is a pretty long time to do one thing. 05:11:31 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 (Not to say I was any good at it at 8.) 05:11:35 it is if you actually do that thing instead of pretending to do it 05:12:50 itidus21: Please, like you wrote large, significant things when you were 15. :P 05:13:05 i never created anything signifigant ever :D 05:13:16 its the art of super procrastination 05:14:27 -!- MSleep has quit (Ping timeout: 244 seconds). 05:17:29 ok i get it anyway 05:17:45 so elliott is referring to programming when he knew how to program 05:17:55 not the screwing around training years 05:23:58 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 the point is ~8 years ago 05:25:51 Frooxius: i think the concept of when does a child become an adult is related 05:27:42 Yeah that's not sudden transition either. Though... some remain children in some ways for a long time :D 05:28:00 Frooxius: for someone like me, the process is about realizing i am not yet a programmer 05:28:07 having my ego smacked down 05:28:23 by that bastard cryst_eheh_heh 05:28:34 in a chatroom in a distant land 05:28:52 umm nevermind :D 05:28:58 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 Plus I constantly think things I do are horrible anyway so... x3 It helps to improve them though 05:30:06 Or throw into garbage and redo from scratch 05:32:33 i see myself as more of the john romero type.. except not as cool as him 05:32:52 so elliott is referring to programming when he knew how to program 05:32:52 not the screwing around training years 05:32:52 no 05:33:10 I programmed when I was 8 but I didn't know how to program when I was 8 :p 05:33:20 ah 05:33:28 so is it like learning to speak? 05:33:53 -!- Frooxius_ has joined. 05:34:43 I doubt it. Maybe a foreign language, but I've never learned one. 05:34:50 The easiest way to find out what it's like would be to do it. 05:35:08 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 or, hmmm, a few months. 05:36:08 i screwed around in qbasic 1.0 with the help files at first 05:36:24 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 I was 15. so, 5 years ago. 05:36:46 -!- Frooxius_ has changed nick to Frooxius. 05:36:49 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 elliott: when does one learn to program, great sensei. :P 05:37:25 you don't. 05:37:31 no one is programmers? 05:37:41 what we do? 05:37:48 no, we're programmer 05:37:49 s 05:37:49 how is shot web? 05:37:59 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 it was like *pow* *pow pow pow* 05:38:30 lol 05:38:33 why did you think of it as a competition? 05:38:44 kallisti: because that's the only way he can frame it as losing 05:38:46 because im an asshole 05:39:02 kallisti: observe him attempting to lose your question ^ 05:39:11 lol elliott 05:39:41 yes, i'm making a funny joke 05:39:42 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 a few weeks in, I remember asking #python what a delimiter was. :P 05:40:59 it used this word "delimiter" in the split method thing and I didn't know what that meant. 05:42:52 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 Maybe I should add one class for calculus or category theory or something like that, too. 05:45:06 lol. 05:45:25 motivic cohomology 05:48:44 i should clean my room some day 05:49:02 itidus21: what do you have to do right now? 05:49:04 why not clean it now? 05:49:49 it can wait a little longer.. 05:49:49 !perl print int(rand(2)?'clean room":"definitely clean room" 05:49:52 Can't find string terminator "'" anywhere before EOF at /tmp/input.2326 line 1. 05:49:58 !perl print int(rand(2)?'clean room':"definitely clean room" 05:49:59 syntax error at /tmp/input.2368 line 1, at EOF \ Execution of /tmp/input.2368 aborted due to compilation errors. 05:50:15 !perl print (int(rand(2)?'clean room':"definitely clean room") 05:50:16 syntax error at /tmp/input.2431 line 1, at EOF \ Execution of /tmp/input.2431 aborted due to compilation errors. 05:50:18 ? 05:50:45 !perl print int(rand(2)?'clean room':"definitely clean room" 05:50:46 syntax error at /tmp/input.2508 line 1, at EOF \ Execution of /tmp/input.2508 aborted due to compilation errors. 05:50:47 olwkeojsdfoijiowejr 05:51:03 oh 05:51:07 !perl print int(rand(2))?'clean room':"definitely clean room" 05:51:08 definitely clean room 05:51:09 :> 05:52:33 -!- Vorpal has joined. 05:59:24 i seek feedback on this http://pastebin.ca/2098801 06:06:09 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 and adding the instructions {"w","a","s","d"} to change the current cell in the io matrix 06:12:40 (mirrored to http://sprunge.us/GdOR, http://sprunge.us/UNSd) 06:12:57 lol 06:13:02 how do you initialise the io matrix 06:13:08 BF IO is based on one-dimensional bytestrings 06:13:16 so how do you turn the input into a matrix? 06:14:39 hmm.. by violating everything near and dear about esolangs heheh 06:15:24 one analogy for what i have dubbed the io matrix is a bitmap 06:16:24 so all the input and output would act upon a bitmap 06:17:08 you should check out paintfuck 06:17:11 not the same thing but bitmap bf all the same 06:17:28 i also had the idea of a frame updating operator 06:18:44 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 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 my lack of comprehension of bf's [ and ] operators is probably signifigant at this stage :P 06:21:03 but doesn't really matter 06:22:58 hmm paintfuck seems to embody the idea of wasd as nsew 06:24:30 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 this isn't a valid brainfuck program 06:24:38 ! is just a notational convenience for /interpreters/ 06:24:42 it specifies input 06:24:47 ya 06:24:50 you have to compute the ascii value of ! manually intsead 06:24:54 oh i see what you mean here 06:25:03 since... my input is my bitmap 06:25:14 i can't really have my cake and eat it 06:25:15 (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 hmm 06:27:28 ^bf +++++++++++++++++++++++++++++++++++. 06:27:29 # 06:27:57 +++++++++++++++++++++++++++++++++++w.w.w.w.a.a.a.a.s.s.s.s.d.d.d.d.e :-D 06:28:39 i guess i should focus on paintfuck direction notation 06:30:02 +++++++++++++++++++++++++++++++++++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 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 "q" is really intended here along the lines of vsync as if to say, the data is ready 06:34:11 well not like vsync.. but sort of like it 06:37:49 -!- zzo38 has quit (Quit: zzo38). 06:38:30 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 but the more i think about it the more ridiculous it seems 06:46:40 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 "q" is really intended here along the lines of vsync as if to say, the data is ready 06:53:29 it's called blitting... or flipping the buffer... or w/e 06:53:44 ah 06:56:29 so it's really a perverted goal of writing pong in a brainfuck derivative 06:56:47 or.. not the entire pong, but the logic of it 06:58:56 i have to admit paintfuck is very curious 07:01:10 -!- Klisz has quit (Quit: SLEEP, GLORIOUS SLEEP). 07:07:43 i won't truely be a BF programmer until i master the [ and ] 07:11:22 kallisti: hi 07:11:42 hi 07:11:46 lo 07:11:47 l 07:12:46 kallisti: i just descended into 07:12:50 the furthest depths possible 07:12:56 quit it 07:12:58 do something productive 07:13:09 like me 07:13:14 sitting aorund watching SC2 games. 07:13:16 http://meta.stackoverflow.com/questions/41976/question-title-that-doesnt-describe-the-problem 07:13:18 i just read 07:13:19 this 07:13:21 * kallisti paragon of productivity. 07:13:24 i have hit absolute rock bottom 07:13:28 because 07:13:29 lol 07:13:31 it's actually really funny 07:14:00 no it's terrible 07:14:11 it's stepped in SO culture. 07:14:22 so is your face 07:14:25 qez 07:14:38 is qez like qed but cooler. 07:15:41 yes 07:17:07 $.butterfly({ aLongList: ofParameters, whichAre: notExplained 07:17:09 }); 07:18:08 elliott: there are so many things in this that are like... 07:18:13 self-deprecating. 07:18:20 like SO culture is to self-deprecate itself. 07:19:22 kallisti: metastackoverflow is about 65% experienced users complaining about the terrible quality of most of the questions/answers 07:19:32 fun 07:20:47 is pollyanna even a user? 07:23:00 itidus21: renamed 07:23:06 @-references don't get updated when names change 07:23:06 Unknown command, try @list 07:23:06 ahh 07:23:09 infer from context appropriately :P 07:23:20 (they really should get rewritten but i guess it's too heuristicy) 07:24:37 http://bicycles.stackexchange.com/ 07:24:39 yesssss 07:24:42 just what I've been looking for. 07:25:14 apparently pollyanna is adam davis 07:25:43 http://cstheory.stackexchange.com/questions/9563/all-recursive-algorithms-are-inherently-not-inplace-isnt-it 07:25:47 loooooooooooooooooooooooooooooooooooooool 07:25:58 "This question has an open bounty worth +50 reputation from Alan Turing ending in 7 days." 07:26:00 you don't see that every day 07:26:06 thanks turing 07:26:13 obviously all of those recursive tree algorithms in the STL are not in-place. 07:28:04 cstheory stackexchange doesn't get a lot of answers 07:28:08 elliott: THIS IS YOUR GOLDEN OPPORTUNITY 07:28:13 TO BECOME MASTER OF CSTHEORY STACKEXCHANGE 07:28:16 THINK OF THE REP 07:28:18 YOU COULD BE NUMBER 1 07:29:21 "Porn Univeristy Of Blow Job" 07:29:35 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 ais523: uh, what are you talking about. :P 07:31:10 kallisti: wiki spam 07:31:15 oh 07:32:07 ais523: hey, my degree is from the Porn University of Blow Job 07:32:34 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 *town 07:32:41 heh 07:32:50 anyway, findthisall.com is responsible for about half the spam the wiki gets 07:33:02 ais523: what's graue's email? 07:33:18 the domain's oceanbase.org, you can probably guess the rest 07:33:28 Blow Job is a wonderful little down the way 07:33:51 hmm, if we even had a spam blacklist, I could just put findthisall.com on it 07:33:53 but we don't 07:34:34 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 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 findthisall.com started on 15th november 2011 07:35:40 yes let's spam the wiki and the channel at the same time 07:35:42 great idea. 07:36:06 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 I suggest we try and trick the spambots into spamming Graue if he doesn't reply :) 07:41:48 change the names/ids of every element on every page. 07:42:02 and the bots won't know where to find anything. 07:43:09 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 elliott: well, the bots are breaking the CAPTCHA 07:43:56 elliott: why does it not work like that. 07:44:06 swapping the IDs for captcha answer and edit summary would probably work 07:44:25 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 ais523: I rather suspect they might go on element order 07:44:44 perhaps even rendered size 07:44:46 ah, that's possible too 07:44:53 or they might search for known text around the boxes 07:44:59 like usage information and field labels 07:45:07 site admins really won't want to mess with those, after all 07:45:10 seems a little advanced for a spambot 07:45:25 normally they just aim at low-hanging fruit 07:45:33 "Aren't you little short for a spambot." 07:45:41 ais523: yeah, Esolang must be reeling in billions for them :P 07:45:49 (I realise they're not specifically targeting Esolang) 07:46:14 elliott: I think you're expecting far too much from spambots. 07:46:16 OK, now I'm curious 07:46:17 maybe /some/ do that. 07:46:21 * ais523 visits findthisall.com in w3m 07:46:31 even if its purpose is to spread malware, I bet it doesn't spread it via w3m on Linux 07:46:47 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 anyway if it's element order (which is pretty likely as well) then you can just add some hidden elements somewhere 07:47:29 hmm, it's a list of searches it guesses I might be using, and some results 07:47:32 although quite a few of them are empty 07:47:34 Hidden elements, which they ignore, since they try to approximate what a user would do. 07:47:35 what an embarassing homepage 07:47:47 * ais523 searches for INTERCAL 07:48:01 Are you sure you're not looking for High Quality Euro Watches? 07:48:20 heh, many of the results are just random URLs with irrelevant descriptions and INTERCAL worked into them somewhere 07:48:25 this seems to be a clearinghouse for spam links 07:48:43 as in, it's nothing but sponsored referrals 07:48:55 ais523: i visited it, it's boring 07:48:57 "Check results for INTERCAL on our free comparison site" 07:49:15 elliott: indeed 07:49:24 what a pointless thing to spam 07:49:43 ais523: I say you tias 07:49:52 and you may be pleasantly surprised at how dumb spambots actually are. 07:49:56 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 nah, every distinct website I visit increases the chance that one of them has a w3m exploit 07:50:17 and by you and I mean the owner of the wiki. 07:50:33 kallisti: oh, you mean change the wiki layout? 07:50:34 I can't 07:50:40 yes. 07:50:42 and yes I figured. 07:50:42 there are several obvious solutions to the current rash of spam 07:50:51 but graue isn't implementing any of them, or even responding to emails 07:51:04 hmm, yay, I should hit the last SO privilege level before the 3 ridiculously huge ones today 07:51:18 "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 (it goes 5000, 10000, 15000, 20000) 07:51:29 what does the 5000 level do? 07:51:49 hmm, are you going to hit the top privelege level then delete the entire site? 07:51:50 allows me to vote on suggested post edits and approve tag wiki edits 07:51:55 ais523: yes, that's my master plan 07:51:59 like EVE Online scammers? 07:52:52 (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 I assume there's some secret level above those that lets you delete the site 07:53:17 it'd only be logical 07:53:41 "delete votes"? that sounds abusable 07:53:47 hmm, the 10k rep privileges are kind of like wikipedia making people admins when they hit a certain edit count 07:53:52 does it let you delete downvotes aimed at you? 07:53:58 except not really, since people have to vote and accept your stuff to raise rep :) 07:54:03 ais523: cast delete votes, that is 07:54:06 i.e. cast votes to delete questions 07:54:08 oh, I see 07:54:17 and also cast votes to not delete, I take it? 07:54:33 I don't think any of the voting systems work that way, they're mostly just 5 people -> action taken 07:54:39 e.g. it takes 5 close votes to close a question 07:54:43 ah, I see 07:55:05 and you need a good amount of rep to cast them in the first place 07:55:12 so the chances of a high-quality question being closed like that are low 07:55:38 I guess 5 people with the ability to cast delete votes could delete the whole site, one question at a time 07:55:57 heh 07:56:45 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 the thing would just get undeleted pretty quickly, though 07:57:10 I'm amused that the safeguards against deleting it are so much higher than the safeguards against editing it 07:57:18 ais523: You've mentioned this before, in fact. Are you sure you're not harboring some Main Page deletion fantasies? 07:57:30 He's talked about it at least 3 or 4 times. 07:57:37 fizzie: it's because I've been trying to persuade Wikipedia to move it to Portal:Main for ages 07:57:41 but I gave up after a while 07:57:42 Department of Wikiland Security may be in touch. 07:57:49 hmm, I suppose I should claim that's the reason I left 07:57:52 ais523: You can delete Esolang's main page. Nobody will notice if you just do it for a few minutes. 07:57:57 Don't keep your urges cooped up inside. 07:58:02 anyway, there's always a big debate about "can you actually /do/ that?" 07:58:09 and the answer is "yes, if you know how, it's actually quite easy" 07:58:14 but nobody ever believes me 07:58:43 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 elliott: indeed 07:59:37 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 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 ais523: if that is the case, I salute its creator 08:00:33 godspeed, me 08:00:50 but it's inevitable that I /will/ end up doing all that, because it's specified in the parameters 08:00:54 so I don't have to devote any effort to actually doing it 08:01:09 probably the simplest way this will happen is for me to change my mind and devote effort to it 08:01:16 ais523: Jimbo Wales' editcount is /under 9000/? 08:01:28 would you expect it to be high? 08:01:33 most of what he does doesn't require actual edits 08:01:36 and he isn't even in charge any more 08:01:48 also, he preferred to use a mailing list to wiki talk pages for discusison 08:01:50 *discussion 08:01:56 which is, I think, a mistake 08:02:03 ais523: well, it's been 11 years 08:02:07 elliott: You can aim for the low-hanging fruit and just design an esolang called "Main Page". 08:02:11 he's made under 818 edits per year 08:02:30 that seems abnormally low for a founder who at least participated /moderately/ actively for a good while 08:02:51 fizzie: do you really think any of us would object to putting a dab on our main page for that? 08:03:01 I'd probably just link the trilime to it :P 08:03:53 What's that "I have plans for this file!" mean? 08:04:33 fizzie: I uploaded it to put it on my Main Page redesign. 08:04:41 You can't hotlink it from the theme files. 08:04:58 Obviously I had to upload it before anyone actually knew about the redesign, though, to test it :p 08:05:31 http://esoteric.voxelperfect.net/w/index.php?title=Main_Page&direction=next&oldid=21677 08:05:43 I like how the last few edits before I replaced it were adding more "of the day"s 08:05:48 it reached critical mass 08:06:38 ais523: [[User:Fydo851ts563n‎]] 08:06:41 So what does the trilime symbolize? 08:06:45 fizzie: nobody knows 08:07:00 wait 08:07:02 holy crap 08:07:07 ais523: fizzie: the trilime is the matrix of solidity 08:07:07 elliott: deleted 08:07:16 elliott: but, umm, what? 08:07:24 it predates us hearing about the matrix of solidity 08:07:31 ais523: exactly! 08:07:37 do you seriously believe the matrix of solidity didn't exist before we heard about it? 08:07:38 Linear time is no boundary for the matrix of solidity? 08:07:39 we're /trapped/ in it 08:07:44 further evidence: 1. limes are solid 2. if not the trilime, what else? 08:07:47 elliott: s/trapped/locked/ 08:08:14 ais523: hmm, I suppose you could argue we're consensually locked 08:08:16 deep 08:08:30 elliott: but you're underage! 08:08:40 ais523: not in the matrix of solidity! 08:08:47 This is the Postfix program at host pendrell.textdrive.com. 08:08:48 I'm sorry to have to inform you that your message could not 08:08:48 be delivered to one or more recipients. It's attached below. 08:08:48 For further assistance, please send mail to 08:08:48 If you do so, please include this problem report. You can 08:08:48 delete your own text from the attached returned message. 08:08:50 The Postfix program 08:08:52 : maildir delivery failed: error writing 08:08:54 message: Disc quota exceeded 08:08:56 ais523: you lied to me 08:09:30 elliott: well, that's the last known email address for Graue 08:09:38 I didn't get an error about it when I sent there 08:09:42 my guess is that it /is/ his email address 08:09:44 but he no longer reads it 08:09:51 and his disc quota has entirely filled up with mail 08:09:57 explaining why I didn't get a bounce on my last email, but you did 08:10:00 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 ais523: searching elsewhere, scott at the same domain seems to be his email address too 08:10:19 note that you're not going to get "disc quota exceeded" unless it can identify the user in question 08:10:22 elliott: are you going to try it? 08:10:25 ais523: maybe! 08:10:42 failing that, I'll find out where he lives and take a crowbar 08:11:14 sent, let's see if it bounces 08:12:43 ais523: theory: graue likes spambots 08:13:01 so how do you explain the ban on
? 08:13:04 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 ais523: he also hates div and span tags 08:13:26 fizzie: :D 08:13:33 It's SPAMbots he likes, not SPANbots. 08:13:40 fizzie: ("Tokio".) 08:13:55 elliott: Whoops; went with the Finnish spelling. 08:14:31 hmm, maybe i should sleep 08:14:37 maybe i'll ask ais523 whether i should sleep 08:14:48 elliott: I should sleep myself 08:14:51 but I keep getting distracted 08:15:03 either that, or I should stay awake until a sensible time to sleep and then sleep 08:15:11 the thing is, I need to be awake at about 7pm 08:15:16 "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 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 fizzie: setgid? why? 08:15:34 to a group that doesn't exist? 08:15:43 why would the edu group not exist? 08:15:47 Huh? The 'edu' group exists just fine. 08:15:52 Inherited from the parent, probably. 08:16:08 fizzie: Can't you just use a root escalation? 08:16:20 oh, I read edu as the user, and 7168 as the group 08:16:42 Oh; right, I redacted the user. 08:16:50 To protect the guilty, and so on. 08:17:29 Oh well, the student-run exam archive probably has scanned copies of the old exams anyway. 08:17:52 (Not the 2011 ones, apparently.) 08:20:25 fizzie: I wish the students could see this, it'd be so reassuring for them. 08:21:22 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 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 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 How much can three people matter? Wait, no, not three people: three students. 08:24:02 Three smelly, unwashed students. (Disclaimer: they might not smell.) 08:24:12 fizzie: You should just not give them an exam and they'll be so happy. Probably. 08:24:28 "Is this an exam?" (correct answer "no") 08:26:10 hmm, i just got another upvote 08:26:14 maybe i _will_ sleep after all 08:26:24 (cue ais523) 08:26:37 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 The lecturer was Deewiant all along. 08:27:46 (Is Deewiant still even at that place? Finland is so confusing.) 08:28:07 Yes, I'm at that place for a sufficiently broad value of "that place". 08:28:52 Deewiant: University thingy thingy Google Wave. Without the Google part. 08:28:57 Although Finland might merge with Google in the coming years. 08:29:21 Yes, I'm at that university. 08:29:40 Haven't you been there, like, ten years now? FINLAND. 08:29:48 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 Deewiant: I guess it's borderline possible he'd have a ready exam in his office? Though probably not very likely. 08:30:21 fizzie: Worth a shot I guess. 08:30:26 elliott: Like four, I think. 08:30:32 Who the hell doesn't take a computer with them? 08:30:41 That's like "I'm not taking clothes, or oxygen." 08:30:42 elliott: It's called a va-cay-shun. 08:30:52 Naked space vacuum vacation. 08:30:59 (The term is "holiday", foreigner.) 08:31:07 wow, i just got another update! 08:31:09 Holy day. 08:31:15 ais523: you should sleep, i don't need you to be awake to entertain me since i'm sleeping 08:31:19 *upvote 08:32:41 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 Hussel-bussel. Anyway. 08:33:26 Tokyo, the last uncharted wilderness. And so on. 08:34:01 (Can you even get an Internet connection there? Maybe with a satellite phone...) 08:34:26 I have a hard time believing it's possible to cross the street without a smartphone in Tokyo. 08:35:55 I think ais523 fell asleep. 08:36:15 fizzie: On an unrelated note, your ICS user web page is old enough that it's full of dead links. 08:36:39 no, I'm still awake 08:36:41 I don't take computer to vacation. 08:36:51 I usually do take books, pencil, paper. 08:37:17 I don't take telephone to vacation either. 08:37:35 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 (Who the fuck calls a university Wave?!) 08:37:54 elliott: He's using an out-of-date template. 08:38:18 Deewiant: Yes, it's like the Confederate flag. 08:38:27 Deewiant: You just can't handle: FREEDOM. 08:39:03 I'm not saying he should use the new template, making up his own stuff is fine by me too. 08:40:24 fizzie: You should tile whatever logo you guys used before Aalto as the background. 08:42:20 Maybe he went to Tokyo to DRIFT RACE. I've understood that's kind of what they do there. 08:42:46 They have cars in Finland? 08:43:03 Horse-driven snowmobiles. 08:43:13 Some use polar bears. 08:44:49 Sometimes when the two kinds meet there are... accidents. 08:45:11 I really hope Finland is actually like that. 08:45:44 ais523: here's a question for you: is efficient /// compilation (to a "standard" language, like C) possible? 08:45:50 You'll be so disappointed when your government finally exiles you here. 08:46:08 elliott: hmm 08:46:14 I can't think of an obvious way, but I'm not convinced it's impossible 08:47:01 it's self-modifying, but at least code only modifies code /after/ it 08:47:11 e.g., a replacement never does anything to /itself/ 08:49:27 @tell oerjan You should fix the Perl /// interpreter (per http://esolangs.org/wiki/Talk:Slashes) :P 08:49:27 Consider it noted. 08:50:28 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 http://www.google.com/search?q="matrix+of+solidity" 08:51:31 It says it is expected kind `*' but `f x y' has kind `* -> *' 08:52:28 zzo38: you can't have instances like that afaik 08:52:39 but it's impossible to say the real error without knowing context 08:53:49 itidus21: i like how we are second place 08:54:29 its actually surprising we aren't first place 08:54:32 But doesn't it have like the (,) functor and (->) functors have one additional type argument for all type of kind (*) 08:54:50 hmm ill try a better search engine 08:55:33 duckduckgo drops the ball on this one 08:55:56 bing drops the ball on this one 08:56:34 ais523: why the hell is it 9 am? 08:56:49 becaues it's almost 9am 08:57:42 http://www.lifeoflight.com/channellinglibrary/merlin/533.html beloved beloved beloved 09:04:21 ais523: becaues? 09:04:34 s/whatever/whatever/ 09:05:01 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 I suggest * on a line by itself 09:06:00 s/typed/intended 09:06:01 sdiojf oe hefu ahfhiwe 09:06:03 * 09:06:43 bleh, i have to sleep now, or i'll end up sleeping at some even more terrible time 09:07:04 ais523: wake me up before it gets too late, please, thanks 09:07:17 i think its a form of courtesy 09:07:34 or a form of acknowledging ones typos 09:08:56 -!- elliott has quit (Read error: Operation timed out). 09:10:01 Then how can I make constraints and classes that put multiple parameters in? 09:12:15 zzo38, MPTCs? 09:12:24 I assume your question is more advanced than that 09:12:35 Yes my question is more advanced than that 09:14:06 -!- nooga has joined. 09:20:09 vis a vis my http://sprunge.us/GdOR and http://sprunge.us/UNSd i would say 09:23:21 brainfuck and boolfuck use bf tape and io streams 09:23:53 smallfuck uses bf tape 09:24:33 paintfuck uses bf matrix 09:26:20 -!- nooga has quit (Ping timeout: 240 seconds). 09:27:29 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 next insight here is that in such an io matrix, the pointer should have dimensions in addition to position 09:43:55 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 Is the left zero law for MonadPlus implied by the other Monad and Functor laws and by the type signatures? 09:55:16 zzo38: which laws? I can't think of one that would be related. 09:55:39 it needs mzero, which isn't defined anywhere else. 10:07:41 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 Did I do it wrong? 10:09:15 (Assuming that the class methods must be fully defined, of course) 10:11:33 zzo38: hm, but then is that because of other laws or simply because mzero :: m a ? 10:12:45 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 (I mean its value remain unaffected) 10:19:49 hmmm, I guess so? 10:19:54 this is too metamath for me. :P 10:20:35 what causes 2 + 2 = 4? is it the 4, the +, the =, the left 2, or the right 2? 10:22:05 I think it is the + that causes 2 + 2 to make 4 10:24:24 hmmm 10:24:42 I think the whole expression depends on its parts. 10:25:01 but yes, I think what you're saying makes sense as well. 10:25:12 Yes, I agree with that. Still, the main thing that causes addition to result in an answer is the addition. 10:25:33 But of course it won't work if you don't have something to add! 10:25:50 (1+1) + (1 + 1) = (1 + 1 + 1 + 1) 10:26:12 also if equality were defined differently you would not be able to say the same thing about the value of 4. 10:26:13 itidus21: That's different; it is caused by associative laws. 10:26:31 kallisti: Yes, that too. 10:31:14 anyway I'm not sure that they're connected anyway. 10:31:33 I'm pretty sure the zero law is just stemming from the simple fact that mplus and mzero form a monoid. 10:32:14 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 maybe if mplus had a default definition, with mzero being the minimal complete definition. 10:34:22 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 oh by left zero law I thought you meant mzero `mplus` x = mzero 10:35:26 No, that is called the left identity law. 10:36:08 Maybe you can understand my other comments and proof now that you know what I meant by left zero law. 10:36:18 yes that makes more sense. 10:36:55 oops. here I was, getting all philosophical. 10:40:20 or hmmm... 10:41:02 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 `? monad 10:50:59 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 Sgeo: wwhy? 10:51:34 It's either that or writing very repetitive Haskell code 10:51:40 why? 10:51:43 Although I've already been doing quite a bit of the latter :/ 10:51:51 Because I intend to make a binding to the AW SDK 10:52:04 oh. maybe, 10:52:21 repetitive in what way? 10:53:33 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 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 I will probably use a quasiquoter 10:55:34 So I can copy/paste from Aw.h right into the thing without repeated search/replace and whatnot 10:55:42 (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 Sgeo: are you sure there's not an abstraction? 11:15:21 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 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 not to mention the cost of actors, painters, animators, film sets, voice actors to apply all these technologies to 11:22:01 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 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 Hmm, I just saw an abstraction and actors and such, I'm not really paying attention much ^^' 11:24:58 oh, since i don't understand esolangs i just go off on my own tangents 11:25:21 I made a short abstract (maybe? x3 ) film before though, if you're interested: http://www.youtube.com/watch?v=yQJYr13Ixew 11:25:43 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 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 Or thread-safe 11:47:45 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 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 i'm impressed by the language trigger having just read about it 12:08:30 -!- Jafet has joined. 12:08:32 ^? 12:08:38 ^help 12:08:38 ^ ; ^def ; ^show [command]; lang=bf/ul, code=text/str:N; ^str 0-9 get/set/add [text]; ^style [style]; ^bool 12:08:56 `? 12:09:00 cat: wisdom/: Is a directory 12:09:04 `help 12:09:07 Runs arbitrary code in GNU/Linux. Type "`", or "`run " for full shell commands. "`fetch " downloads files. Files saved to $PWD are persistent, and $PWD/bin is in $PATH. $PWD is a mercurial repository, "`revert " can be used to revert to a revision. See http://codu.org/projects/hackbot/fshg/ 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 ^bf ,[.,]!hello 13:34:07 hello 13:35:46 -!- Sgeo has quit (Read error: Connection reset by peer). 13:37:28 -!- Sgeo has joined. 13:41:57 ^bf ,[.,]!wb sgeo 13:41:57 wb sgeo 13:42:23 ty 13:42:34 Only restarted comp because I was too lazy to clear up the clutter of programs 13:42:39 Wanted a fresh start 13:42:44 And now because of it I am noticing c2hs 13:45:03 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 anyway, in this case the idea was 13:45:32 "" = 0, "x" = 1 where x is a particular symbol, "xx" = 2 where x is a particular symbol, "*" = infinity 13:46:14 in hindsight, the idea of "" = 0 doesn't look so great 13:46:54 but this would be designed to give something like aa+aa=aaaa 13:48:21 or maybe to say 'a' = 1, 'b' = 2, 'c' = 3... "abbccc" 13:49:54 nah.. nevermind.. 13:51:44 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 ^in length 13:52:21 moving on... 13:53:55 You see unary numbers like that sometimes; e.g. in sed programs, since it's easy to add them. 13:55:27 And there's of course the combination of unary and boring brainfuck derivatives, http://www.esolangs.org/wiki/Unary 13:55:51 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 i implemented it in c++ with allegro many years before coming here 13:57:19 it was a good idea... but hard disks die 13:57:49 anyway.. the idea was.. the 2 players had hitpoints... and different sequences take off different amounts of hitpoints 13:58:25 so rrr, ppp, sss gave you a bonus 13:58:38 but then there was more complicated sequences 13:58:53 up to possibly 8 in length i forget exactly 13:59:29 and so the game becomes about trying to complete a long sequence, while preventing the other playing completing a long sequence 13:59:42 ^s/playing/player 14:02:28 since uh.. at every round of the game, a rock will beat a scissors 14:03:20 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 There.... is a box of Gardasil next to the butter in my fridge. 14:17:51 At least my sandwich will be immune to cervical cancer *and* genital warts, I suppose. 15:25:16 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 "It's insane." 15:44:16 "Floating-point arithmetic is considered an esoteric subject by many." -- first sentence. 15:44:40 It is, because it's nuts. 15:45:29 Or rather, it's designed for good enough accuracy over a wide range of precisions, not precise numerical computation. 15:45:38 s/precisions/magnitudes/ 15:46:18 "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 -- second sentence 15:47:25 I think I'll mostly be interested in the compiler and OS sections. 15:47:49 and not the "lol this is how overflow and rounding errors happen lololololo" section 15:49:33 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 Hello! 15:57:45 I like today's Gunnerkrigg court 15:59:23 Today's Comments on a Postcard sounds awfully familiar... 16:19:49 Hooray, I now have an (almost; no 5-1) complete set of up to 6-piece Nalimov endgame tablebases. 16:23:25 Now, a complete set of 6-piece Nalimov endgame tablebases; tomorrow, the world! 16:31:07 In the far future, perhaps a seven-piece set. 16:50:19 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 kallisti, here: http://ieeexplore.ieee.org/xpl/mostRecentIssue.jsp?punumber=4610933 16:52:50 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 yes I can access it via my university. 16:54:01 kallisti, then the problem is solved 16:54:08 not sure if I can do so on this computer though 16:54:11 I haven't checked. 16:54:28 kallisti, my university offers a proxy service for such things, so I can do it from anywhere 16:55:58 The /r/circlejerk CSS fooled me for a bit 16:57:02 you can downvote stuff there easy 16:58:29 Not what I was referring to 17:03:10 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 hi 17:08:58 elliott: You have 1 new message. '/msg lambdabot @messages' to read it. 17:09:26 wow, Graue deleted some spam 17:09:33 @tell oerjan you owe me one 17:09:33 Consider it noted. 17:10:09 @tell lambdabot derp 17:10:09 Nice try ;) 17:10:41 lahwran, look at who the commenters are. 17:11:08 -!- oklopol has quit (Read error: Connection reset by peer). 17:11:22 @tell lambdabot derp, okay? 17:11:22 Consider it noted. 17:11:40 -!- Ngevd has quit (Read error: Connection reset by peer). 17:13:15 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 hi my name is kallisti 17:48:34 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 Did it have multiple seasons? 17:57:35 -!- oerjan has joined. 17:58:44 hi oerjan, YOU MAY PAY ME IN BLOOD 17:59:39 -!- Klisz has joined. 18:01:19 *cough* 18:01:19 oerjan: You have 2 new messages. '/msg lambdabot @messages' to read them. 18:01:22 @messages 18:01:23 elliott said 9h 11m 50s ago: You should fix the Perl /// interpreter (per http://esolangs.org/wiki/Talk:Slashes) :P 18:01:23 elliott said 51m 49s ago: you owe me one 18:02:03 ah but you used the reverse magical word 18:02:06 "should" that is 18:02:32 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 And says he'll try and do something about it on the weekend. 18:02:43 IN CONCLUSION 18:02:48 PAY IN BLOOD, CORRECTED /// INTERPRETER 18:03:21 i don't think i've emailed graue recently at any address, so i don't see the point 18:03:57 oerjan: ais did, and you whined at least once about Graue being non-responsive :P 18:04:00 BLOOD!!! 18:04:22 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 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 Oh ffs, it took way too long for me to get the hint 18:05:46 (in this episode) 18:06:43 -!- Taneb has quit (Quit: Goodbye). 18:07:12 i am slightly worried that there are three admins active and still they missed User:KuzyFueesi 18:07:41 oerjan: ais uses rss which can reorder things 18:07:47 dunno about keymaker 18:07:50 graue only deleted one page, though 18:08:03 @tell ais523 [[User:KuzyFueesi]] 18:08:03 Consider it noted. 18:08:57 ...but does it have a 10 cutoff limit like the wordpress blog rss? 18:10:30 Graaa upvote me you people. 18:10:33 oerjan: I doubt it's that low. 18:14:57 -!- DCliche has joined. 18:16:07 !show slashes 18:16:09 perl (sending via DCC) 18:17:07 * elliott thinks about techniques for efficient /// implementation 18:17:27 !slashes /test/ho///hm/test 18:17:29 ho 18:17:31 you could store the whole program in a trie somehow 18:17:37 the only thing you need ordering for is ordering of execution 18:18:15 -!- Klisz has quit (Ping timeout: 244 seconds). 18:20:04 !slashes //hm/\?? 18:20:05 ​?? 18:21:03 !slashes //h\m/\?? 18:21:04 hm? 18:24:14 An article talking partly about J with a J code example from Programming in the 21st Century is #2 on proggit. 18:24:26 Maybe proggit has merit after all. 18:24:43 Of course, then I click the comments... 18:24:44 Don't read the comments. 18:25:37 Deewiant: But all the other links are boring!!!!!! 18:25:38 :'( 18:38:33 -!- Zuu has quit (Ping timeout: 252 seconds). 18:44:03 -!- Ngevd has joined. 18:44:06 Hello! 18:46:47 Hi 18:49:35 !delinterp slashes 18:49:36 ​Interpreter slashes deleted. 18:49:59 !addinterp slashesl perl http://oerjan.nvg.org/esoteric/slashes/ircslashes.pl 18:50:01 ​Interpreter slashesl installed. 18:50:03 oops 18:50:06 !delinterp slashesl 18:50:06 ​Interpreter slashesl deleted. 18:50:11 !addinterp slashes perl http://oerjan.nvg.org/esoteric/slashes/ircslashes.pl 18:50:13 ​Interpreter slashes installed. 18:50:23 !slashes //h\m/\?? 18:50:49 !slashes /test/ho/test 18:50:49 ho 18:52:07 oh wait 18:53:49 !show slashes 18:53:51 perl (sending via DCC) 18:54:51 * oerjan feels so anemic now 18:56:23 what does anemic even mean 18:56:52 lack of red blood cells 18:56:59 wat 18:57:03 well i mean 18:57:04 i knew that 18:57:12 i just assumed there must be some hidden meaning i was missing for that to make sense 18:57:32 i just paid a blood debt, is all 18:57:35 oerjan is actually anemic. He really needs to get to a hospital, stat 18:57:48 oerjan: oh dur 18:58:16 Ngevd: a very plausible interpretation. 19:02:36 ?pl \i o f a b -> i $ f (o a) (o b) 19:02:36 (. (flip =<< ((flip . ((.) .)) .) . flip (.))) . (.) . (.) . (.) 19:02:39 ?pl \a b -> i $ f (o a) (o b) 19:02:40 (i .) . (. o) . f . o 19:02:56 ?pl \a b c -> i $ f (o a) (o b) (o c) 19:02:56 ((i .) .) . flip flip o . ((.) .) . (. o) . f . o 19:03:00 ?pl \a b c d -> i $ f (o a) (o b) (o c) (o d) 19:03:00 (((i .) .) .) . flip flip o . ((flip . ((.) .)) .) . flip flip o . ((.) .) . (. o) . f . o 19:03:06 sigh 19:03:52 elliott: needs more on 19:04:52 oerjan: well the problem with on is that it's just for binary operators... 19:04:57 :t (?i .: ?f) `on` o 19:04:58 Couldn't match expected type `a -> b' against inferred type `Expr' 19:04:58 In the second argument of `on', namely `o' 19:04:58 In the expression: (?i .: ?f) `on` o 19:05:01 :t (?i .: ?f) `on` ?o 19:05:02 forall a c b a1. (?i::a -> c, ?f::b -> b -> a, ?o::a1 -> b) => a1 -> a1 -> c 19:05:12 it would be nice to regularise the scheme a bit so that you can more easily extend to further arguments. 19:05:19 a la zipWithN vs. ZipList 19:05:46 i believe we wrote onN on a previous occasion 19:10:32 oh did we 19:10:39 i mean i don't want a typeclass hack 19:10:41 just a more regular scheme 19:11:11 @ty runWriter 19:11:12 forall w a. Writer w a -> (a, w) 19:15:09 -!- DCliche has changed nick to Klisz. 19:24:37 BOOM! 19:24:42 :t let onMore c f o a = c (f (o a)) o; onEnd f _ = f in onMore (onMore onEnd) 19:24:43 forall t t1 t2. (t2 -> t2 -> t) -> (t1 -> t2) -> t1 -> t1 -> t 19:25:05 elliott: regular enough? :) 19:25:28 :t let onMore c f o a = c (f (o a)) o; onEnd f _ = f in onMore (onMore (onMore (onMore onEnd))) 19:25:29 forall t t1 t2. (t2 -> t2 -> t2 -> t2 -> t) -> (t1 -> t2) -> t1 -> t1 -> t1 -> t1 -> t 19:25:43 oerjan: heh, nice 19:26:07 :t let onMore c f o a = c (f (o a)) o; onEnd f _ = f in (onMore . onMore . onMore . onMore) onEnd 19:26:08 forall t t1 t2. (t1 -> t1 -> t1 -> t1 -> t2) -> (t -> t1) -> t -> t -> t -> t -> t2 19:26:23 oerjan: it would be nice to specify i and o as an argument, though, but only once 19:26:28 I guess that would be a pain though 19:26:36 i.e. factor them out into an argument without having to repeat them 19:26:38 I like it, though 19:26:45 elliott: um o _is_ factored out 19:27:12 oerjan: oh, so it is 19:27:16 I see, sorry :) 19:27:21 onEnd is o there, right? 19:27:31 it's const 19:27:44 oerjan: I'm asking what I'd replace to change o 19:27:53 onEnd is on0, really 19:28:07 and onMore onN = onSuccN 19:28:16 with on2 the usual one 19:28:21 I can't tell whether you understand my question :P 19:29:07 elliott: o is the second argument of onN, as usual 19:31:46 :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 forall t t1 t2 t3. (t3 -> t3 -> t3 -> t) -> (t -> t1) -> (t2 -> t3) -> t2 -> t2 -> t2 -> t1 19:31:58 oerjan: ok maybe i'm not expressing what I want 19:32:01 oh, I see 19:32:02 elliott: there you go 19:32:17 oerjan: neat, thanks -- it'd be nice if f came /after/ i and o though >__> 19:32:23 although hmm i guess that's pretty easy 19:32:28 yeah 19:32:53 :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 forall a a1. ((a1 -> a1) -> (a1 -> a1) -> (a1 -> a1) -> a -> a) -> Endo a1 -> Endo a1 -> Endo a1 -> Endo a 19:32:59 oerjan: :D 19:33:09 generalised newtype-ish lifting 19:33:17 heh 19:33:54 * elliott then wonders if you could bundle i and o into _stop_ 19:33:58 so that it'd look like 19:34:03 (nest.nest.nest) inEndo ... 19:34:08 with inEndo being defined appropriately 19:34:12 that would be the absolute ideal 19:36:40 Now you've got me thinking about zipWithN 19:36:43 you can do it if you put inEndo first 19:36:48 Ngevd: see ZipList 19:36:57 oerjan: oh, indeed 19:36:59 that's even better, too 19:37:12 :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 forall a a1. ((a1 -> a1) -> (a1 -> a1) -> (a1 -> a1) -> a -> a) -> Endo a1 -> Endo a1 -> Endo a1 -> Endo a 19:37:48 hm stop seems so redundant there, the only place it's used is where you already know what i is 19:38:01 :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 forall a t. t -> Endo a -> a -> a 19:38:08 he 19:38:09 h 19:38:09 elliott: just use const i, then 19:38:23 er 19:38:26 :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 Not in scope: `stop' 19:38:28 erm 19:38:29 :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 Couldn't match expected type `Endo a' 19:38:30 against inferred type `t -> t1' 19:38:30 Probable cause: `nest' is applied to too few arguments 19:38:33 oerjan: i think not 19:38:39 just const 19:38:46 well right 19:38:50 :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 forall a a1. ((a1 -> a1) -> a -> a) -> Endo a1 -> Endo a 19:38:59 @pl \c i o f a -> c i o (f (o a)) 19:38:59 flip flip (flip (.)) . (liftM2 ((.) . (.)) .) 19:39:03 @pl \i o f a -> c i o (f (o a)) 19:39:04 (`ap` flip (.)) . (((.) . (.)) .) . c 19:39:06 @pl \o f a -> c i o (f (o a)) 19:39:06 ap ((.) . (.) . c i) (flip (.)) 19:39:09 @pl \f a -> c i o (f (o a)) 19:39:09 (c i o .) . (. o) 19:39:11 heh 19:39:44 @let result = (.) 19:39:45 Defined. 19:39:47 @let argument = flip (.) 19:39:48 Defined. 19:39:59 :t \f a -> c i o (f (o a)) 19:40:00 Couldn't match expected type `t -> t1' against inferred type `Expr' 19:40:00 In the first argument of `f', namely `(o a)' 19:40:00 In the third argument of `c', namely `(f (o a))' 19:40:04 :t \c i o f a -> c i o (f (o a)) 19:40:05 forall t t1 t2 t3 t4. (t -> (t1 -> t2) -> t3 -> t4) -> t -> (t1 -> t2) -> (t2 -> t3) -> t1 -> t4 19:40:13 :t \c i o -> result (c i o) . argument o 19:40:13 forall t a b (f :: * -> *) a1. (Functor f) => (t -> f a1 -> a -> b) -> t -> f a1 -> (a1 -> a) -> f b 19:40:15 excellent 19:40:43 : let nest k i o = result (k i o) . argument o; inEndo f = f const Endo appEndo in inEndo nest 19:40:45 :t let nest k i o = result (k i o) . argument o; inEndo f = f const Endo appEndo in inEndo nest 19:40:46 forall a a1. ((a1 -> a1) -> a -> a) -> Endo a1 -> Endo a 19:40:51 oerjan: that's really nice, thank you! 19:41:39 (those argument and result combinators are from http://conal.net/blog/posts/semantic-editor-combinators) 19:42:48 yeah i remember 19:44:06 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 nothing that can't be extended to more arguments is elegant enough! :p 19:44:48 :t let nest k o = result (k o) . argument o; inEndo f = f (const Endo) appEndo in inEndo nest 19:44:49 forall a a1. ((a -> a) -> a1 -> a1) -> Endo a -> Endo a1 19:44:59 nicer still 19:45:28 :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 forall a a1. ((a -> a) -> (a -> a) -> a1 -> a1) -> Endo a -> Endo a -> Endo a1 19:45:35 oerjan: methinks that's as good as it gets :P 19:45:37 oh ugh 19:45:41 oerjan: what's with the monomorphism there? 19:46:05 hm? 19:46:11 :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 forall a a1. ((a -> a) -> (a -> a) -> a1 -> a1) -> Endo a -> Endo a -> Endo a1 19:46:12 why not 19:46:20 ((a -> a) -> (b -> b) -> (c -> c)) -> Endo a -> Endo b -> Endo c 19:46:49 @pl \k o -> (k o .) . (. o) 19:46:49 (`ap` flip (.)) . (((.) . (.)) .) 19:46:53 heh 19:48:54 :t appEndo 19:48:55 forall a. Endo a -> a -> a 19:49:10 it's just the newtype field 19:49:20 -!- ais523 has joined. 19:49:22 :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 oops 19:49:27 :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 forall (f :: * -> *) a a1 b. (Functor f) => (f a -> a1 -> b) -> f a -> (a -> a1) -> f b 19:49:37 Hello, ais523 19:49:44 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 argh lambdabot's (.) isn't helping 19:49:59 ais523: hi, graue replied 19:50:45 elliott: yes, of course, because they all have o applied 19:51:57 o is passed as an argument, thus monomorphic. i suppose you could sprinkle some rank2 19:52:49 -!- Zuu has joined. 19:53:36 oerjan: oh, ofc 19:53:42 :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 Couldn't find qualified module. 19:53:46 :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 forall (f :: * -> *) a a1 b. (Functor f) => (f a -> a1 -> b) -> f a -> (a -> a1) -> f b 19:53:57 :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 forall a b c c1. ((a -> b) -> c -> c1) -> (a -> b) -> (b -> c) -> a -> c1 19:54:23 elliott: what was the reply? 19:54:23 ais523: You have 1 new message. '/msg lambdabot @messages' to read it. 19:54:56 ais523: he'll see what he can do, but might not have time until the weekend or after 19:55:05 oh, looks like he deleted exactly one spam page 19:55:08 yeah :P 19:55:15 doing his bit! :) 19:55:36 so, I conclude that anyone who has sent email to Graue in, like, a year, has sent email to /dev/null 19:55:55 ais523: I did mention AbuseFilter in my email 19:55:58 you're welcome 19:56:08 i was considering asking him to update MW too :P 19:56:44 oerjan: hindley-milner sucks, restricting monomorphism like that :) 19:57:06 elliott: you have to update MW to install AbuseFilter 19:57:15 did you mention spam blacklist, and upgrading the CAPTCHA, too? 19:57:29 oerjan: unfortunately I'd need a typeclass or something to fix it 19:57:44 ais523: "It would be greatly appreciated if you could tighten the CAPTCHA, or 19:57:44 install an extension like AbuseFilter to allow the admins to blacklist 19:57:44 problem domains." 19:57:47 --me 19:57:52 (elliott) 19:59:05 AbuseFilter does much more than blacklisting domains 19:59:09 you can, say, blacklist regexps 19:59:21 or even, say, forbid a user's first edit being to their own user page 19:59:23 I'd love to do that 19:59:34 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 (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 maybe once Graue isn't looking :D 20:08:28 why do you consider /IRC/ to be the matrix of solidity? 20:08:33 `pastlog matrix of solidity 20:09:08 No output. 20:09:12 `quote matrix of solidity 20:09:16 299) enjoy being locked in your matrix of solidity 20:09:20 ais523: that's the origin of it, after all 20:09:34 elliott: indeed 20:09:38 we, on IRC, were closed-minded; treederwright enlightened us as to the matrix of solidity we are locked within 20:09:47 I can't believe that "matrix of solidity" never came up in the logs before now, though 20:09:53 so, I conclude that pastlog has broken again 20:09:57 most likely 20:09:58 `pastlog solidity 20:10:24 2011-11-10.txt:22:50:04: `quote matrix of solidity 20:10:38 @src replicateM 20:10:38 replicateM n x = sequence (replicate n x) 20:10:40 hmm 20:10:40 @src replicateM_ 20:10:40 replicateM_ n x = sequence_ (replicate n x) 20:10:44 @src sequence 20:10:44 sequence [] = return [] 20:10:44 sequence (x:xs) = do v <- x; vs <- sequence xs; return (v:vs) 20:10:44 -- OR: sequence = foldr (liftM2 (:)) (return []) 20:10:45 @src sequence_ 20:10:45 sequence_ ms = foldr (>>) (return ()) ms 20:18:19 -!- augur has joined. 20:19:11 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 oerjan: hmm 20:19:47 `welcome clog cmeme glogbot glogbackup 20:19:50 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 ais523: i _think_ it usually happens when HackEgo is just starting up after a long break 20:20:37 like something is timing out, maybe 20:20:52 `pastlog matrix of solidity 20:21:01 2011-04-01.txt:23:42:21: * iconmaster is enjoying being locked in his matrix of solidity. 20:21:29 `pastlog matrix of solidity 20:21:34 oerjan: hmm, perhaps 20:21:38 2011-05-18.txt:20:14:43: also, I didn't know that the matrix of solidity thing was on the main page 20:21:49 could just be a problem with trying to load all the logs into cache 20:21:54 HackEgo is really slow 20:22:00 so timing out after "waking up" sounds likely to me 20:22:18 I'm not sure it would give partial output, though, and I /rewrote/ that piece of code 20:22:24 `run echo -n hi; sleep 10000 20:22:26 `run echo bye; sleep 10000 20:22:57 hi 20:23:01 bye 20:23:15 elliott: for `welcome, which i wrote, it's probably to do with the use of @ and ? subprocesses? 20:23:33 oerjan: perhaps, yes 20:24:28 -!- Ngevd has joined. 20:24:33 Hello! 20:24:45 Remember my vocab tester thing I did a while back? 20:24:52 I've decided to give it more features 20:25:01 Because I am mad 20:25:07 a fnobbly cromulent vocab tester 20:25:21 `words latin 20:25:29 `words --help 20:25:29 Argument "latin" isn't numeric in int at /hackenv/bin/words line 141. \ 20:25:33 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 `words --italian 20:25:52 convalco 20:26:03 `words 10 --italian 20:26:07 fughe soltinsava disperai rimentissa imitargogne abbero perter sbendaleghe crimpleme scolora 20:26:36 lascianza sperate vogni chintrate 20:29:29 How does System.Environment.getArgs behave? 20:29:54 Ngevd: it gives a list argument strings 20:29:57 *of 20:30:19 excluding program name 20:30:34 in IO, of course 20:31:05 :t System.Environment.getArgs 20:31:06 IO [String] 20:31:08 So, if I ran "latin_vocab military", what would it give me? 20:31:11 oerjan: "of course" -- many people would see no problem with getArgs being pure :/ 20:31:13 [military]? 20:31:16 well apart from the existence of withArgs 20:31:19 Ngevd: ["military"] 20:31:28 Yes 20:31:45 elliott: there's a function to change it, though :P 20:31:55 > foldr (+) 0 [1..5] :: Sym Int 20:31:56 15 20:31:58 I am sad face :( 20:32:09 oerjan: well apart from the existence of withArgs 20:32:28 kallisti: "i sure do like how Sym reduces expressions automatically" --kallisti 20:32:37 elliott: i cannot possibly read and write response simultaneously, duh 20:32:42 oerjan: i do :) 20:32:57 elliott: obviously you should do exactly what I want in all situations. 20:33:01 er 20:33:04 s/you/it/ 20:33:23 > foldr (+) 0 [1..5] :: Sym (Sym Int) 20:33:24 15 20:34:39 > foldr (+) 0 [1..5] :: Sym ((->) Int) 20:34:40 `(->) GHC.Types.Int' is not applied to enough type arguments 20:34:40 The first arg... 20:36:01 :t runWriter 20:36:02 forall w a. Writer w a -> (a, w) 20:40:37 -!- GreaseMonkey has joined. 20:41:50 @src callCC 20:41:50 Source not found. I feel much better now. 20:41:52 grr 20:42:14 elliott: btw chu-carroll over at goodmath/badmath is doing a series on basic category theory 20:42:29 oh cool 20:42:29 he just got to cartesian closed categories 20:42:35 why didn't you tell me earlier :P 20:42:44 i'll check it out 20:42:58 because there was just a post reminding me 20:43:10 @src callCC 20:43:10 Source not found. I feel much better now. 20:43:10 @src callCC 20:43:10 Source not found. :( 20:43:10 @src callCC 20:43:10 Source not found. Just what do you think you're doing Dave? 20:43:13 :( 20:43:23 :t callCC 20:43:24 forall a (m :: * -> *) b. (MonadCont m) => ((a -> m b) -> m a) -> m a 20:43:32 it's a method 20:44:18 @src Cont callCC 20:44:18 callCC f = Cont $ \c -> runCont (f (\a -> Cont $ \_ -> c a)) c 20:44:20 thx 20:44:48 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 :t reader 20:44:52 forall r a. (r -> a) -> Reader r a 20:44:56 :t asks 20:44:57 forall r a (m :: * -> *). (MonadReader r m) => (r -> a) -> m a 20:45:17 :t writer 20:45:18 forall a w. (a, w) -> Writer w a 20:45:28 > callCC ($ [42,43]) >> callCC ($ [99]) 20:45:29 No instance for (GHC.Show.Show (m [t])) 20:45:29 arising from a use of `M43411467... 20:45:34 > runCont (callCC ($ [42,43]) >> callCC ($ [99])) id 20:45:35 [99] 20:47:01 :t cont 20:47:02 forall a r. ((a -> r) -> r) -> Cont r a 20:47:27 hm would that even make sense as a MonadCont method 20:47:36 :t ContT 20:47:37 forall a (m :: * -> *) r. ((a -> m r) -> m r) -> ContT r m a 20:48:42 if you have a -> m r, and (a -> r) -> r, can you construct an m r 20:49:19 probably not 20:49:27 oerjan: with what on m? 20:49:30 MonadFix? if so, probably yes 20:49:35 Monad? no 20:49:39 How do you put breakpoints in ghci 20:49:49 For debugging purposes 20:49:56 elliott: i was assuming it should be something generalizing cont 20:50:07 oerjan: oh so MonadCont m? 20:50:29 oh, I see 20:50:33 you're asking whether cont could go in MonadCont 20:50:34 elliott: not quite 20:50:37 yeah 20:50:55 oerjan: couldn't you just fix r = m r, and then run it? 20:50:57 all of reader, writer and state could go in the respective classes (and state will/does) 20:51:06 and wire up the continuation to escape the outer continuation 20:51:13 Cont is really special though 20:51:20 like, most monad transformers commute 20:51:25 most of them can lift callback operations in the base monad 20:51:31 ContT can't do anything like that 20:51:44 in a sense because it's the most general monad possible 20:51:57 so you don't get any convenient extra laws :P 20:52:21 ContT is the most general monad possible? 20:52:23 perhaps that's sort of why... you can lift reader, writer and state because they are essentially commuting extensions 20:52:30 shachaf: well you can build any monad with Cont 20:52:36 ContT = Cont anyway. 20:52:38 http://blog.sigfpe.com/2008/12/mother-of-all-monads.html and so on 20:52:47 Yes. 20:52:52 so ContT sort of gives you the raw monad structure and doesn't let you assume anything 20:52:52 But what about generalizations of Cont? 20:52:55 WHAT DO YOU SAY TO THOSE? 20:53:01 shachaf: :'( 20:53:09 perhaps that's sort of why... you can lift reader, writer and state because they are essentially commuting extensions 20:53:15 oerjan: this is why i like the composable effects model 20:53:36 it even supports Cont 20:53:45 huh 20:53:55 http://hackage.haskell.org/packages/archive/kan-extensions/2.1/doc/html/Data-Functor-KanExtension.html 20:53:56 http://math.andrej.com/2010/09/27/programming-with-effects-ii-introducing-eff/ 20:54:01 (http://hackage.haskell.org/package/effects is a haskell impl) 20:54:07 oerjan: hmm ListT has problems too 20:54:20 I guess anything sufficiently control-flowy makes monad transformers go to hell 20:55:24 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 elliott: Why not? 20:55:52 shachaf: It's so long! 20:55:58 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 shachaf: It's about whether you can put cont in MonadCont. 20:57:09 I guess anything sufficiently control-flowy makes monad transformers go to hell <-- what about ErrorT 20:57:27 shachaf: You should read that post on eff if you haven't; we finally have a decent alternatiev to monad transformers. 20:57:33 oerjan: good question 20:57:41 oerjan: people always put ErrorT just above IO or Identity, I forget why 20:57:52 *alternative 20:58:01 elliott: Ugh. Added to the list of tabs. 20:58:48 shachaf: You just can't handle the SNAZZ. 20:59:31 So much snazz. 21:15:07 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 elliott: Ponk 21:28:41 pink 21:28:51 yellow polka-dot 21:29:40 :t \str strList -> elem (map toLower str) $ convertToLower $ words strList 21:29:41 Not in scope: `convertToLower' 21:29:48 :t \str strList -> elem (map toLower str) $ id $ words strList 21:29:49 [Char] -> String -> Bool 21:31:15 :t any 21:31:16 forall a. (a -> Bool) -> [a] -> Bool 21:31:53 Hussel-bussel. Anyway. <-- hussuru bussuru 21:33:14 :t elem 21:33:15 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 the ords of csw 21:36:50 Ngevd: so how often do you eat three tonnes of jarlsberg? 21:37:55 -!- rapido has joined. 21:38:27 Gregor: Oh, right, you replied :P 21:38:34 oerjan, so /that's/ why that sounded familiar 21:38:37 Gregor: How does the log formatter know when someone leaves a channel; that requires unbounded lookback in the logs 21:40:33 for almost 2 years, i'm obsessed with uniquely represented data structures 21:41:26 rapido: hi 21:41:46 elliott: hey, it's been a while 21:41:53 indeed 21:42:02 obsessions are good 21:42:18 no? 21:42:48 no, obsessions are evil, you must dedicate your life to eradicate them all! 21:42:56 *ing 21:45:27 the only good obsession is @ 21:46:12 hmm, there was something I was thinking about earlier that I thought belonged in #esoteric 21:46:18 ^ul ((@ )S:^):^ 21:46:18 @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ...too much output! 21:46:18 i must admit - i want to pick your esoteric brains 21:46:21 but I guess we'll never know 21:46:28 s/@/@ and Stack Overflow/ 21:46:41 anyone familiar with uniquely represented data structures? 21:47:06 rapido: I take it you mean structures for which syntactic equality is semantic equality? 21:47:13 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 oerjan: as a veteran of the game. then i'll put a mean game of blackjack. 21:47:14 By "I take it", I mean "I am going to wildly guess". 21:47:33 oerjan: I think fungot might be conservative enough about the limits to prevent that :P 21:47:34 elliott: and just what your porkhollow's fat ass needs. 21:47:45 fungot: I love you too. 21:47:45 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 elliott: nah, its about unique representation (=layout in memory). But hey, who doesn't want to be unique? 21:48:40 rapido: Unique howso? "Nobody else has thought of it"? 21:49:55 example: http://www.cs.cmu.edu/~dgolovin/papers/btreap.pdf 21:50:09 ^bf ,>,[.<.>]! @ 21:50:09 @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ... 21:50:11 elliott: sure, as long as the name is no longer than 3 characters 21:50:22 Mhm, the ^ul lines are longer. 21:50:26 er, 2 21:50:52 Anyway, it doesn't go full 512-hog. 21:50:54 you don't want others to know that you have been deleting the sexist remark 21:51:20 rapido: "Uniquely 21:51:20 represented data structures represent each logical state with a unique machine state. 21:51:20 Such data structures are strongly history-independent; they reveal no information 21:51:20 about the historical sequence of operations that led to the current logical state. For 21:51:20 example, a uniquely represented file-system would support the deletion of a file in 21:51:20 a way that, in a strong information-theoretic sense, provably removes all evidence 21:51:22 that the file ever existed." 21:51:27 rapido: OK, that _is_ what I said, then. 21:51:39 If syntactic equality is semantic equality, every equivalent state has a single representation. 21:51:57 Intensional equality, if you'd prefer. 21:51:58 The ^ul might go quite close, though. 21:52:48 "Intensional equality" - that's a cool definition 21:53:31 ^ul ((0123456789)S:^):^ 21:53:31 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 elliott: it's hard to achieve strong history-independency 21:54:29 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 344 21:54:58 but pondering on it for two years i finally think i have a good result - but it feels hacky 21:55:05 I would think Haskell would be a good playground for creating such structures. 21:55:17 > 324/9 21:55:18 36.0 21:55:25 kallisti: Not if you care about the exact in-memory representation :P 21:55:50 rapido: The simplest way to achieve history-dependency would be to deconstruct and reconstruct the structure on every operation, of course. 21:55:51 that's implementation dependent anyway... 21:56:12 kallisti: Yes, in Haskell. 21:56:17 Circular reasoning, man,. 21:56:40 elliott: well that makes sense because circular reasoning is circular. 21:57:10 > (:[])>=>(:[])>=>(:[]) $ "hi" 21:57:11 ["hi"] 21:57:12 Actually that's begging the question, I think. In the formal sense. 21:57:30 beggining the question is circular reasoning because it begs the question though. obviously. 21:57:35 anyone familiar with cartesian trees (treaps?) 21:58:05 I am now. 21:58:25 I have *heard* the term treap! 21:58:52 they have the unique property that they have a unique representation 21:59:13 -!- Jafet has quit (Quit: Leaving.). 21:59:14 for a fixed set of (x,y) pairs 22:00:59 fixed in the sense that there is one unique cartesian tree for a set of (x,y) pairs 22:01:08 am i boring you? 22:01:31 totally. (no) 22:02:04 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 >_>? 22:02:22 -!- lax has joined. 22:02:24 :t (>+>) 22:02:25 Not in scope: `>+>' 22:02:27 `welcome lax 22:02:29 :t (>_>) 22:02:29 parse error on input `)' 22:02:34 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 any friend hereeeeeeee 22:02:55 im ne win thisssssssssss 22:02:58 inthis 22:03:00 yeah 22:03:02 i'm friend 22:03:05 sup 22:03:16 ohh thanksss 22:03:20 i was tryign this page 22:03:24 for hoursss 22:03:33 and finally i did it 22:03:34 * kallisti giggles gleefully. 22:03:37 thanks 22:03:39 congrats 22:03:54 so u are chatting here? 22:03:59 Yes 22:04:08 Supposedly about esoteric programming languages 22:04:18 elliottttttttttttt 22:04:22 dotn leave meeeeeeee 22:04:26 ais523: [[User:KuzyFueesi‎]] 22:04:29 lax: hi 22:04:37 ahhh i tough u gone 22:04:41 i never leave 22:04:43 i'm actually a robot 22:04:48 dont go 22:04:58 ive just have some minutes here 22:05:05 nice to meet u here 22:05:08 hello 22:05:15 im here 22:05:18 me too 22:05:24 I'm not 22:05:26 I'm here but not there. 22:05:29 whch is also here 22:05:30 hi. 22:05:43 Hang on, one important question, lax. Do you live in a place called Hexham? 22:05:57 no 22:06:03 why 22:06:08 Two of us here do 22:06:17 lax: helsinki then 22:06:30 i cant get what she says 22:06:38 lax: anywhere in Scandinavia perhaps? 22:06:46 is Ngevd female or am i 22:06:52 i'm not even sure myself any more :( 22:07:06 noooo 22:07:13 :'( 22:07:15 elliott: Everyone's always from either Hexinki or Helsham. 22:07:31 im from peru 22:07:35 elliott: what about ternary logic? you don't have to be female or male 22:07:38 south america 22:07:40 peru is right next to finland i think 22:07:44 lol 22:07:49 rapido: I didn't imply that :P 22:07:52 noooo 22:08:00 perussia 22:08:05 elliott: mooz married someone from Peru, so in that sense at least. 22:08:11 fizzie: Was it... lax? 22:08:24 my country 22:08:27 elliott: Not as far as I know, but I don't know much. 22:08:33 Who's mooz? 22:08:42 lax: are you a fan of Immortal Technique? :> 22:08:47 Ngevd: Just this one guy, you know? 22:08:51 elliot? 22:08:54 lax: hi 22:08:56 i'm still here 22:09:02 don't worry, i'll keep talking at least every 30 seconds so you know i'm here 22:09:05 who is mooz 22:09:20 lax :Just this one guy, you know? 22:09:34 im want to talk to eliott 22:09:36 not u 22:09:43 :( 22:09:45 I am sad 22:09:54 lax: good choice, Ngevd sucks 22:10:01 "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 lax: not as bad as kallisti tho 22:10:25 well i have to go eliott 22:10:29 nice to meet u here 22:10:34 thanks for u time 22:10:36 `words 50 22:10:39 sometime i wonder if elliott is male, female and bimale - typing really fast at separate keyboards 22:10:40 u seem to be nice 22:10:44 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 Ngevd: http://sbp.so/qsort (Also who on earth did that archive-page? Someone here?) 22:11:04 rapido: as has been repeatedly established, i'm an amorphous, non-corporeal blob that lives on the internet 22:11:09 God bless u aliott 22:11:13 good bye lax 22:11:15 come again sometime! 22:11:15 take care 22:11:20 god bless aliott america 22:11:26 i dotn know how to use that chatt 22:11:31 me neither 22:11:32 lol 22:11:35 i just type words and they come out on the screen 22:11:37 but i have email 22:11:43 oh good, what's your email 22:11:55 nellcita@hotmail.com 22:12:05 have fun!! 22:12:07 thats the mail i use to chatt or facebook 22:12:09 ok 22:12:13 same there 22:12:34 do not - i repeat - do not reveal your email! you will be spammed 22:12:37 fizzie, so that's mooz 22:13:02 ohhhh eliott 22:13:05 u wotn do that 22:13:08 rapido: you'll get spammed even if you don't :P 22:13:10 lax: don't worry 22:13:13 i'll protect you from the spambots 22:13:17 it is... my duty 22:13:19 -!- derdon has joined. 22:13:20 ohh thanks 22:13:24 loves from peru 22:13:29 and wellcome 22:13:44 @tell monqy hi 22:13:44 Consider it noted. 22:13:46 Ngevd: Indeed. He even was on-channel in 2003 or thereabouts. 22:13:56 fizzie, Before my time then. 22:14:03 -!- lax has left. 22:14:06 elliott: You're such a... what's that term... "playa"? 22:14:06 i have no idea what just happened 22:14:11 you protect me from spambots? where do i sign? 22:14:15 2003, I was... using computers to write as many roman numerals as I could 22:14:26 rapido: sorry, by invite only 22:14:58 fizzie: http://upload.wikimedia.org/wikipedia/commons/2/26/Kluft-photo-Black-Rock-Desert-Aug-2005-Img_5081.jpg <-- me 22:15:02 elliott: I was loling so hard 22:15:07 through that conversation 22:15:22 Ngevd: clearly a job for INTERCAL 22:17:58 fizzie: How does that syntax-highlighting work, anyway? 22:18:04 Oh, it's manual. 22:18:04 http://en.wikipedia.org/wiki/Mu_(lost_continent) 22:18:07 huh. cool 22:18:37 GenrePseudoscience 22:20:38 manual syntax highlighting: *do* it 22:20:54 or do *it* 22:21:02 or just do it 22:21:39 -!- Ngevd has quit (Quit: Taneb cancelled playing Dwarf Fortress: Needs sleep). 22:21:48 elliott: http://en.wikipedia.org/wiki/User:Ikluft is you? 22:21:55 do it 22:22:01 PiRSquared17: wut 22:22:04 PiRSquared17: no, why would it be? 22:22:13 http://upload.wikimedia.org/wikipedia/commons/2/26/Kluft-photo-Black-Rock-Desert-Aug-2005-Img_5081.jpg <-- me 22:22:18 ... 22:22:18 oh 22:22:21 elliott: You're such a... what's that term... "playa"? 22:22:23 it's a picture of a playa 22:22:28 lol 22:22:35 PiRSquared17: finnmark finnmark finnmark finnmark finnmark finnmark 22:22:41 FINNMARK 22:23:00 finnmark 22:23:05 Gregor: :( 22:23:44 ais523: wiki spam influx 22:24:51 oh dear, i think my lightbulb is about to break 22:25:14 -!- rapido has quit (Quit: rapido). 22:25:16 are there enough elliotts to change it? 22:26:10 I need @ 22:27:14 elliott: wiki's being slow loading 22:31:49 OK, and deleted 22:32:04 incidentally, people who aren't using a monospace font, how does your client kern uTu? 22:32:20 it looks pretty weird on mine, the second u overlaps the bottom of the T, bu the first u doesn't 22:34:04 same here, but I'm pretty sure that's correct 22:34:16 or at least, T after u is what's incorrect :) 22:34:54 elliott: hi I'm reading "On computable numbers with an application to the entscheidungsproblem" by Alan Turing. 22:34:54 arguably, that asymmetrical kerning is appropriate for camelCase 22:34:58 * kallisti getting his learn on. 22:37:30 kallisti: Why would you read about computable numbers? 22:37:37 Practically all numbers are uncomputable. 22:38:11 shachaf: so he can entscheid properly, duh 22:39:28 `addquote There.... is a box of Gardasil next to the butter in my fridge. At least my sandwich will be immune to cervical cancer *and* genital warts, I suppose. 22:39:31 795) There.... is a box of Gardasil next to the butter in my fridge. At least my sandwich will be immune to cervical cancer *and* genital warts, I suppose. 22:40:13 OK, that is a good quote 22:40:15 `quote 22:40:17 `quote 22:40:18 `quote 22:40:20 `quote 22:40:21 `quote 22:40:27 356) Grr. Why does it exist? Why can't I kill it? 22:40:29 569) elliott__: my fnord into normal life was a painful and difficult process. [...] 22:40:32 413) so about jacuzzis, do they usually have a way to make it it not heat but freeze the water? 22:40:54 413 is the best of those three 22:40:57 heh result 413 22:40:57 iconmaster: You have 1 new message. '/msg lambdabot @messages' to read it. 22:40:57 but the other two are decent 22:41:05 still waiting on two more 22:41:21 747) Gregor is actually a rare species of mangoat the fashion sense comes from the mango part 22:41:21 45) It looks like my hairs are too fat. Can you help me split them? 22:41:34 elliott: 45? 22:41:40 hey that's a classic! 22:41:54 gives such a nostalgic feeling 22:41:57 is it a /good/ classic? 22:41:58 indeed 22:42:04 747 is fairly lame 22:42:15 * oerjan swats elliott -----### 22:42:20 i knew that would happen 22:42:47 elliott the cassandra 22:42:48 I think I saw the mangoat quote live 22:42:53 shachaf: sorry, as a COMPUTER science major I'm only interesting in the COMPUTERable ones. 22:43:03 elliott: indeed, but it's one of oerjan's better puns 22:43:05 even though that's "practically none" of them. 22:43:06 I didn't see it coming 22:43:13 `delquote 747 22:43:17 ​*poof* Gregor is actually a rare species of mangoat the fashion sense comes from the mango part 22:43:18 it's just not as funny as the others sory 22:43:29 `quote 22:43:29 `quote 22:43:30 `quote 22:43:30 `quote 22:43:30 WAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 22:43:31 `quote 22:43:40 309) oerjan: are you in an aware state when the only hammer you have is for variable assignation and blocks 22:43:44 641) 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 so i just this second realised what "fungot" means 22:44:11 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 elliott: wait, for the first time? 22:44:34 yes, unless i knew and then forgot 22:44:50 37) kaelis: yes kaelis, but however will get the horses to wear knickers? 22:44:50 77) It's not incest if you're third cousins! 22:44:51 133) what's the data of? [...] Locations in a now deceased game called Mutation I have no problems with you being interested in online games but the necrophilia is disturbing 22:44:53 elliott: what does it mean? 22:45:14 olsner: funge bot 22:45:21 oh, right, I knew that 22:45:25 `delquote 37 22:45:31 ​*poof* kaelis: yes kaelis, but however will get the horses to wear knickers? 22:45:32 -!- zzo38 has joined. 22:45:32 hm apparently there are people named fungot 22:45:32 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 "Funge-98 Bot" is even the realname of eir Twitter account. 22:46:01 fizzie: And the name of the git repo interface thing, IIRC. I just never... made the connection. 22:46:18 elliott: oh, I'd known it was funge bot all along, and your sudden realisation made me doubt that 22:46:26 do you know the etymology behind thutubot's name, btw? 22:46:40 -!- oklopol has joined. 22:46:42 elliott: It's because e's such a FUN guy it crowds out then FUNGy part. 22:46:58 s/then/the/ 22:47:07 ais523: let me think... 22:47:10 thutu + bot? 22:47:13 yep 22:47:14 * olsner follows fungot on twitter 22:47:14 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 gasp!!! 22:47:27 ?messages 22:47:28 itidus21 said 13d 16h 2m 2s ago: welcome back 22:47:28 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 oerjan said 10d 13h 1m 54s ago: btw, fmap' shows that T is also a contravariant functor in its first argument. 22:47:35 ?messages 22:47:36 You don't have any new messages. 22:47:44 ?messages 22:47:44 You don't have any new messages. 22:47:45 I need to restart that Twitter script one day. 22:48:07 oerjan: haskell quiz of the day: can any data type be given both a valid Functor and a valid Contrafunctor instance? 22:48:18 zzo38: lambdabot is supposed to only show them once, but there's some weird resetting going on occasionally... 22:48:24 this is one of those quizzes where I don't know the answer, and want to find out. 22:48:38 its last tweet was twat in May, apparently 22:48:39 elliott: data T a = T hth 22:48:51 indeed fizzie needs to restart the script 22:49:06 or even data T a b = T a 22:49:10 I could try if it has bitrotted away right now. 22:50:02 oerjan: hmm... i think that might violate the laws when _|_ is involved 22:50:08 at least, data T a = T isn't a monad if you count bottoms 22:51:37 It's possible Twitter's authentication API changed and broke it, and that's why I haven't restarted. 22:52:15 fizzie: They're OAuth-only these days, I think. 22:52:18 elliott: who said anything about monad 22:52:27 fmap = id, simply 22:52:39 ok that doesn't quite type 22:52:49 fmap (T x) = T x 22:52:58 >_< 22:53:02 fmap _ (T x) = T x 22:53:22 oerjan: well monads are functors, I was just giving an analogy... 22:53:31 also, fmap = const unsafeCeoerce :P 22:53:33 *Coerce 22:53:42 yeah that also works 22:54:15 fsvo work 22:54:30 but to have a Functor, you just need that all appearances of the last parameter are in covariant, nonstrict positions afaict 22:54:40 and if there are none, it's trivial 22:55:04 and for Contrafunctor, probably the same but with contravariant 22:55:19 oerjan: ok one that actually mentions a /and/ b on the RHS :P 22:55:25 and no cheating by outsourcing to your existing T! 22:55:29 funny guy 22:55:33 well then i don't know 22:56:02 join the club! (the club is mine) 22:56:27 * tswett joins elliott's club. 22:57:21 Is there a stipend associated with this club? 22:57:31 i doubt there are any with simple ADTs, though 22:58:47 tswett: 1,000,000 pounds per day or however much you can afford 22:58:58 oerjan: i don't see how gadts would help 22:59:09 I get paid however much I can afford? 22:59:49 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 oh, fungot twat again! https://twitter.com/#!/fungot/status/154697756248776705 23:00:12 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 huh, that's the exact same thing it said last time 23:00:33 fungot 23:00:33 olsner: you really wish your side. 23:00:46 fizzie: Will it tweet with its fungot dataset too? :p 23:00:46 elliott: the one who got you killed him for it? 23:00:53 I... don't think there's any practical limit to the amount of money I can afford to be paid. 23:01:28 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 I see. 23:01:49 tswett: Oh, I was thinking of tithes. 23:01:56 Shame, too. I can afford to be paid any positive stipend. 23:01:59 like data T a b c = T (a -> c) (c -> b) but where you cannot actually get at the pieces 23:01:59 I... er... congratulations, you have unlimited money! 23:02:20 Excellent. 23:02:28 oerjan: which pieces? c or (a,b)? 23:02:36 elliott: the fields 23:02:43 c 23:02:52 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 elliott: Not yet, but maybe soon. 23:02:58 Hoy, it works. 23:03:00 $ ./twungot-poster.py fungot.json 23:03:00 [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 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 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 elliott: no, the c _should_ still be the type parameter 23:03:20 That's a good moment to sleep. -> 23:03:29 oerjan: you want it existential but exposed? 23:03:43 fizzie: oh, fungot twat again! https://twitter.com/#!/fungot/status/154697756248776705 23:03:44 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 elliott: i have no idea if it makes sense in any way 23:04:17 oerjan: well what's the eliminator? 23:04:36 How long as fungot been set to Homestuck? 23:04:37 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 `addquote 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 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 794) 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 fungot: DO YOU P4Y 4NY 4TT3NT1ON TO TH3 STUFF P3OPL3 S4Y TO YOU? 23:05:20 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 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 ?messages 23:16:33 You don't have any new messages. 23:17:34 -!- monqy has joined. 23:17:44 messages 23:19:12 kallisti: http://stackoverflow.com/questions/8735132/can-a-php-file-ever-be-read-externally 23:19:38 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 "The winner can have the k" 23:20:25 ing's ice cream. 23:21:32 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 (Tea leaves is also one of the choices, in case you like to drink tea a lot while playing chess.) 23:22:50 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 oerjan: the idea is that inEndo would apply an infinite /stream/ of appEndo 23:23:22 and each one would be used for one argument 23:23:28 so the types never get unified 23:23:37 ofc the problem there is how to get that infinite heterogeneous stream expressed... 23:25:37 ?messages 23:25:37 You don't have any new messages. 23:29:22 elliott: "Not opening the PHP file with XD 23:31:18 elliott: you know that haskell functions with infinite length parameter lists are useless, right? :P 23:31:45 oerjan: um yes... but consider if you could express an infinite stream on the type level 23:32:11 oerjan: the point is that (nest.nest.nest) needs /three/ unwrapprs 23:32:12 unwrappers 23:32:19 so what inEndo has to be able to do is to produce an arbitrary number of appEndos 23:32:34 nest is a bad name but I can't think of a better name 23:34:23 i think you are going to need a class for that 23:34:52 because you cannot have an infinite heterogeneous type 23:35:23 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 not proposing that if I just define an infinite stream type it'll work 23:37:55 yeah, i just remember you started this earlier with saying you didn't want to use classes 23:39:42 oerjan: well rather i didn't want to use a typeclass to define how to unwrap/wrap a type 23:39:45 that's all 23:39:51 i.e. I don't want to tie (Endo,appEndo) to the Endo type itself 23:39:54 an internal typeclass is fine 23:41:05 oerjan: oh cool, "inEndo id" = Endo 23:41:19 inEndo (flip const) = appEndo 23:41:56 -!- nooga has quit (Ping timeout: 240 seconds). 23:42:38 > let nest (o,os) = result (k os) . argument o then? 23:42:39 : parse error on input `then' 23:42:56 :t let nest (o,os) = result (k os) . argument o in nest 23:42:57 Couldn't match expected type `t -> a -> b' 23:42:57 against inferred type `Expr' 23:42:57 In the first argument of `result', namely `(k os)' 23:43:03 bah 23:43:19 inEndo :: ((forall a. t -> (a -> a) -> Endo a) -> (forall a. Endo a -> a -> a) -> r) -> r 23:43:21 darn this almost works :P 23:43:34 oerjan: well i don't see how you could define an inEndo for that... 23:43:44 oh hmm 23:43:45 :t let nest k (o,os) = result (k os) . argument o in nest 23:43:46 forall t a b (f :: * -> *) a1. (Functor f) => (t -> a -> b) -> (f a1, t) -> (a1 -> a) -> f b 23:43:48 you'd need a typeclass for inEndo itself 23:43:54 that kind of works I guess :/ 23:44:02 elliott: yes, that was what i thought 23:45:54 inEndo seems like the right place to have one if you must 23:46:51 > map return "hi" 23:46:52 No instance for (GHC.Show.Show (m GHC.Types.Char)) 23:46:52 arising from a use of... 23:47:04 > map return "hi" :: [String] 23:47:04 ["h","i"] 23:47:17 oerjan: yeah :/ 23:47:26 oerjan: hm wait 23:47:39 never mind 23:48:06 * Phantom_Hoover → sleep 23:48:09 -!- Phantom_Hoover has quit (Quit: Leaving). 23:49:36 ACTOIN 23:49:43 lol 23:50:12 actoin 23:50:14 CHUCK_NORRIS 23:50:34 > let pal alphabet = []:map (:[]) alphabet >- (\c -> map (\e -> e : c ++ [e]) alphabet) in pal "abc" --oopse 23:50:35 Not in scope: `>-' 23:50:36 unknown CTCP: CHUCK_NORRIS?! 23:50:47 > let pal alphabet = []:map (:[]) alphabet >>- (\c -> map (\e -> e : c ++ [e]) alphabet) in pal "abc" --oopse 23:50:49 ["","aaa","aba","bab","aca","cac","bbb","bcb","cbc","ccc"] 23:50:57 hm nope 23:52:07 > let pal alphabet = join . iterate (>>- (\c -> map (\e -> e : c ++ [e]) alphabet) in pal "abc") $ [] :map (:[]) alphabet 23:52:08 : parse error on input `in' 23:52:23 > let pal alphabet = join . iterate (>>- (\c -> map (\e -> e : c ++ [e]) alphabet) $ [] :map (:[]) alphabet in pal "abc" 23:52:24 : parse error on input `in' 23:52:47 > let pal alphabet = join . iterate (>>- (\c -> map (\e -> e : c ++ [e]) alphabet)) $ [] :map (:[]) alphabet in pal "abc" 23:52:48 ["","a","b","c","aa","aaa","bb","aba","cc","bab","aca","cac","bbb","bcb","c... 23:53:09 > let pal alphabet = join . iterate (>>= (\c -> map (\e -> e : c ++ [e]) alphabet)) $ [] :map (:[]) alphabet in pal "abc" 23:53:11 ["","a","b","c","aa","bb","cc","aaa","bab","cac","aba","bbb","cbc","aca","b... 23:53:17 yeah don't need >>- 23:53:29 for finite alphabets maybe :) 23:53:34 ah, true. 23:53:35 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 hmm, if I were zzo38 I'd have said that without the attribution 23:54:17 anyway that code looks kind of ugly to me. 23:56:24 > sequence . return $ [1,2,3] 23:56:25 [[1],[2],[3]] 2012-01-05: 00:04:16 > let pal alphabet = join . iterate (>>- (\c -> map (\e -> e : c ++ [e]) alphabet)) $ [] : map (:[]) alphabet in pal [0..] 00:04:17 [[],[0],[1],[2],[3],[4],[5],[6],[7],[8],[9],[10],[11],[12],[13],[14],[15],[... 00:05:01 heh 00:07:20 > let pal alphabet = (>>- id) . iterate (>>- (\c -> map (\e -> e : c ++ [e]) alphabet)) $ [] : map (:[]) alphabet in pal [0..] 00:07:21 [[],[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 oerjan: aha i think i might have figured out a way 00:08:12 hmmm I don't know how to rewrite the map so that it's logicy... 00:08:32 elliott: NO WAI 00:09:47 it uses a type family per inEndo thing though so it's not really any better 00:10:11 > map return [1,2,3] >>= (+1) 00:10:12 No instance for (GHC.Num.Num [a]) 00:10:12 arising from a use of `e_11231' at help how can I turn a map into a bind. 00:11:11 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 (<*>) = inEndo (nest.nest) (<*>) 00:11:51 > map return [1,2,3] >>= (>>= (+1)) 00:11:52 No instance for (GHC.Num.Num [b]) 00:11:52 arising from a use of `e_11231' at looool 00:12:21 oh... 00:12:26 duh 00:13:18 > map return [1,2,3] >>= map (+1) 00:13:19 [2,3,4] 00:14:32 > let pal alphabet = (>>- id) . iterate (>>- (\c -> map return alphabet >>- map (\e -> e : c ++ [e])) $ [] : map return alphabet in pal [0..] 00:14:33 : parse error on input `in' 00:14:43 > let pal alphabet = (>>- id) . iterate (>>- (\c -> map return alphabet >>- map (\e -> e : c ++ [e]))) $ [] : map return alphabet in pal [0..] 00:14:44 [[],[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 I have no idea if that completely covers every conjunction. 00:17:41 http://images.4chan.org/v/src/1325721816987.jpg 00:18:22 are those... marshmellows? :P 00:18:38 I'm going to guess it's some kind of cheese. 00:24:42 -!- Phantom_Hoover has joined. 00:26:38 hi Phantom_Hoover 00:26:53 MDude: Those had BETTER be marshmallows. 00:27:27 Doof, I posted in the wrong channel. 00:29:13 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 elliott: ...that is a patently wrong statement. 00:37:16 Really? 00:37:25 there are so many ways to be wrong it's truly staggering. 00:37:28 * kallisti is staggered. 00:37:41 Yes, but not wrong in your choice of channel. 00:38:28 eh 00:39:32 -!- Phantom_Hoover has quit (Quit: Leaving). 00:40:14 > ['a'..] 00:40:15 "abcdefghijklmnopqrstuvwxyz{|}~\DEL\128\129\130\131\132\133\134\135\136\137... 00:40:23 > ['A'..] 00:40:24 "ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\DEL\128\12... 00:41:45 I made a rather ... interesting input 00:41:50 on my bot's brainfuck interpreter 00:41:53 :t with 00:41:54 Not in scope: `with' 00:41:55 it's quiet fun 00:41:59 :t in 00:42:00 parse error on input `in' 00:42:17 .bf 00:42:21 > maxBound :: Char 00:42:22 '\1114111' 00:42:36 mind if I bring it in here for a minute? 00:42:55 bots in here? perish the thought! 00:43:02 -!- crow3 has joined. 00:43:04 if it's quiet I don't see why not. 00:43:08 .bf ,[.,] 00:43:09 lahwran: please use this feature in ##crow. 00:43:15 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 .bf ,[.,] 00:44:15 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 :D 00:44:22 -!- crow3 has left. 00:44:36 wat 00:44:47 it randomly samples from a corpus of text porn. 00:44:47 elliott: standard cat program, what's the problem? 00:44:54 oh good 00:44:58 and feeds that to the input of brainfuck 00:45:44 Yes, but not wrong in your choice of channel. <-- WOULD YOU LIKE TO RETRACT THIS STATEMENT NOW? 00:47:06 no? okay then. 00:47:52 4 00:48:17 oerjan: wat 00:48:32 elliott: oerjan grate joke 00:48:45 ha ha (ha) 00:50:12 kallisti: how dare you call my jokes grating -----### 00:50:33 very greating 00:51:34 > length ['a'..] 00:51:35 1114015 00:51:46 how... infinite 00:52:17 I'm wondering if I need that many >>-'s in my program... 00:52:46 > let pal alphabet = (>>- id) . iterate (>>= (\c -> map return alphabet >>= map (\e -> e : c ++ [e]))) $ [] : map return alphabet in pal ['a'..] 00:52:47 ["","aa","a","aaaa","b","bb","c","aaaaaa","d","cc","e","baab","f","dd","g",... 00:53:21 the outer one seems to be enough??? 00:55:16 :t (>>-) 00:55:17 forall (m :: * -> *) a b. (MonadLogic m) => m a -> (a -> m b) -> m b 00:55:33 @hoogle (MonadLogic m) => m (m a) -> m a 00:55:34 Warning: Unknown class MonadLogic 00:55:34 Control.Monad join :: Monad m => m (m a) -> m a 00:55:34 Test.QuickCheck.Property joinRose :: Rose (Rose a) -> Rose a 00:55:39 gah 00:55:53 >>- id 00:55:57 MonadLogic still require Monad as well 00:56:14 elliott: duh that's what i started from 00:56:15 I saw its description 00:57:25 @pl map return f >>= map g 00:57:25 map g =<< map return f 00:57:33 @pl fmap return f >>= fmap g 00:57:33 fmap g =<< fmap return f 00:57:37 bah 00:57:51 newtype Logic a = Logic a 00:58:06 instance (MonadLogic a) => Monad (Logic a) where ... 00:58:07 ??? 00:58:15 oh hmmm MonadLogic doesn't define return I think. 00:58:26 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 :t msplit 00:58:44 There is a Haskell package for that 00:58:45 forall (m :: * -> *) a. (MonadLogic m) => m a -> m (Maybe (a, m a)) 01:00:46 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 oerjan: I am doing groundbreaking research into PALINDROME SEQUENCES ON INFINITE ALPHABETS. 01:04:37 ah. 01:09:49 palindromes are core to my research hcraeser ym ot eroc era semordnillap 01:15:27 -!- Vorpal has joined. 01:36:34 sick be why 01:36:38 body bad feel 01:36:42 me like no 01:36:47 hi 01:37:30 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 Good day 02:01:41 good day 02:01:57 Good afternoon! 02:02:45 Good morning. 02:02:55 Good evening!! 02:04:41 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 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 Possibly! 02:07:20 I do not know. 02:12:56 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 IxWriter and IxState is indexed monad, and IxReader is indexed comonad. 02:13:49 -!- MSleep has changed nick to MDude. 02:15:21 But c has to be a category for working indexed monad of IxWriter, and indexed comonad of IxReader. 02:30:05 Huh, that AttoASM thing seems nice. 02:32:21 Always good to have another minimalistic virtual/real machine. 02:32:27 I feel like I've had a few drinks. Which is pretty weird considering that I haven't. 02:35:13 pikhq: maybe you have and forgot?? 02:35:19 MDude: yeah it looks cool 02:35:45 elliott: I sure hope not. 02:35:54 Alcohol and paracetamol blend poorly. 02:37:07 -!- derdon has quit (Remote host closed the connection). 02:39:17 pikhq: that's my favourite drink 02:39:21 alcohol + liquid paracetamol! 02:39:27 I feel sorry for your liver. 02:40:07 Do Kleisli morphisms for a indexed monad have to belong to a indexed category? 02:40:22 Or to anything else similar to a category at all? 02:40:45 pikhq: That's what the doctor said. 02:40:56 zzo38: i wish i could answer your interesting questions but i cannot :( 02:53:21 `lastlog fmap\^ 02:53:25 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 `pastlog fmap\^ 02:54:18 `log fmap\^.*3 02:54:42 No output. 02:54:56 No output. 02:58:35 :t fmap fmap fmap 02:58:36 forall (f :: * -> *) a b (f1 :: * -> *). (Functor f, Functor f1) => (a -> b) -> f (f1 a) -> f (f1 b) 02:58:37 :t fmap fmap fmap fmap 02:58:38 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 :t fmap fmap fmap fmap fmap 02:58:40 forall a (f :: * -> *) a1 b. (Functor f) => (a1 -> b) -> (a -> a1) -> f a -> f b 02:58:44 :t fmap fmap fmap fmap fmap fmap 02:58:45 forall a (f :: * -> *) a1 b (f1 :: * -> *). (Functor f, Functor f1) => (a -> a1 -> b) -> f a -> f (f1 a1 -> f1 b) 02:58:47 :t fmap fmap fmap fmap fmap fmap fmap 02:58:47 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 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 I have the Impossible Physics book. 04:15:59 -!- MDude has joined. 04:16:02 -!- MDude has changed nick to MSleep. 04:30:57 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 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 coppro, may I ask? 05:10:54 You may ask nothing. 05:10:57 (What?) 05:11:50 Sgeo: no 05:15:59 coppro stands up for American values once again. 05:17:57 Real American values, no less. 05:35:54 -!- PiRSquared17 has quit (Quit: bye). 05:43:58 http://i.imgur.com/Spnac.jpg 05:48:55 I'd click it 05:51:09 -!- iamcal has joined. 06:01:36 lol 06:32:55 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 elliott: just cause it to be causal. 06:55:27 then time becomes a loop then time becomes a loop then time becomes a loop 06:55:53 http://www.youtube.com/watch?v=QER_yqTcmjM 06:59:17 unsbosbo 07:03:03 kallisti: this thing is always 1 second away from breaking out into a remix 07:21:36 i just had another silly idea 07:22:09 in this case i think it would be best written with ORK 07:22:17 a Tailor object 07:22:42 and what this Tailor does is create clothes for a humanoid 3d model 07:23:07 like an artificial intelligence model of a fashion designer 07:23:50 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 nevermind. carry on :-D 07:35:10 -!- fizziew has quit (Remote host closed the connection). 07:54:39 kallisti: yo should i sleep 07:57:16 bounce loop! 07:59:45 elliott: Sleep is good for you. 08:00:04 is there a bounce loop in programming? 08:01:30 I mean in any language, including esoteric 08:04:19 Depends what you mean by that. 08:04:58 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 If you mean "computes by using bounced email messages somehow", that's a bit less probable maybe. 08:06:08 If you mean something related to pogo sticks, then that's just weird. 08:06:19 fizzie++ 08:07:49 yaaay for weeeeird :D 08:08:25 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 But I mean it as natural construct, no emulation 08:09:11 It's quite a natural construct in Unefunge. 08:09:28 Far more natural than something that'd just loop unidirectionally. 08:09:41 Frooxius: the instruction pointer proceeds in only one direction as far as i am aware 08:09:45 so it has to be emulated surely 08:10:06 itidus21: well the point is, that in some languages it doesn't proceed in one direction 08:10:08 i don't know this for certain 08:10:19 fizzie: oh thanks 08:10:34 i mean, the instruction fetch cycle on most cpus is probably unidirectional 08:10:39 I'll have a look at Unefunge 08:10:46 It's just Befunge on one line. :p 08:11:09 > 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 : parse error on input `in' 08:11:20 lambdabot: Can't you tell Befunge from Haskell? 08:11:33 itidus21: we're on esoteric languages forums. There's no such thing as "most CPUs" :P *giggles* 08:12:00 You'd need something complicated like >#; anycodehere #;_ to make a non-bouncy loop. 08:12:29 fizzie: I think valid Haskell wouldn't have given you an error message. 08:12:37 Whereas Befunge did. 08:12:46 So that would indicate that lambdabot can tell Befunge from Haskell. 08:12:51 Okay, yes, if you want to be all *technical* about it. 08:12:54 Haskell/Befunge polyglot? 08:13:30 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 > "I default to Haskell" -- 025*"egnufeB ot tluafed I">:#,_@ 08:15:07 "I default to Haskell" 08:15:11 You seem to be correct. 08:15:20 (What a surprise!) 08:16:08 Oh no, I need to be photographed. -> 08:17:10 (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 Hey shachaf. 08:21:54 sameKey :: Key a -> Key b -> Maybe (Equal a b) 08:21:54 sameKey (Key k) (Key k') 08:21:54 | k == k' = Just $ unsafeCoerce Refl 08:21:54 | otherwise = Nothing 08:26:43 I shouldn't eat and watch QI at the same time 08:27:10 What is a Refl? 08:27:30 Something that can be coerced into an Equal a b I guess 08:27:48 Hey elliott. 08:27:52 Helliott 08:28:00 Because that's what being in an IRC channel with you is like. 08:28:32 shachaf: Yes. 08:28:37 Sgeo: data Equal a b where Refl :: Equal a a 08:28:46 I mean, unsafeCoerce Refl? 08:29:56 shachaf: Does it reassure you if I told you the Key constructor isn't exported? 08:30:36 And that given the other part of the API, 08:30:39 I wonder whether asking for more context will change my attitude toward life for the positive or the negative. 08:30:42 newKey :: IO (Key a) 08:30:49 and no constructors, you can implement: 08:30:52 data Locker 08:30:56 lock :: Key a -> a -> Locker 08:31:01 unlock :: Key a -> Locker -> Maybe a 08:32:26 shachaf: The actual context is Vault. 08:32:51 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 (Including Vault itself.) 08:33:52 Hmm. 08:35:58 http://stackoverflow.com/questions/8736774/mapping-with-pairs, http://stackoverflow.com/questions/8739451/getting-minimum-values-of-mappings 08:36:05 I think a new Haskell class must have just started somewhere. 08:38:16 shachaf: sameKey is quite morally sound, anyway. 08:38:30 It's just saying that if you have two identical objects, then they must have the same type. 08:38:45 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 elliott: You often have convincing rationalizations that things that you do are morally sound. 08:39:17 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 It's just that you *need* those rationalisations so often... 08:39:31 shachaf: It's great! 08:39:46 At least nobody can complain about the exposed Vault interface itself. 08:39:51 Also it isn't my library in the first place. 08:40:02 Even if I did convince him to use unsafeCoerce instead of IORefs and unsafePerformIO. 08:41:06 unsafePerform :: (T :: Set -> Set) -> T a -> a 08:41:33 shachaf++ 08:41:50 Especially good with, e.g. T = Not. 08:42:01 Not would be a good monad. 08:43:06 "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 "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 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 Ooh, is that the fmap^6 = fmap^10 thing? 08:44:37 The bane of my existence. 08:44:57 shachaf: It's fmap^4(k+1) = fmap^4. 08:45:09 Where ^ is repeated application, not composition. 08:45:30 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 elliott: Hmm. 08:45:52 I don't have a simple explanation for it 08:45:59 But I've wondered about it several times before. 08:46:06 If you find a simple explanation for it, please tell me. 08:46:15 I think it might have been oerjan who explanated it. 08:46:28 Also, you know how you can usually stick a bunch of fmaps in front of things to get rid of parentheses? 08:46:45 For some sufficiently vague definition of that, sure. 08:47:13 It doesn't always work, I think, no matter where you spread the fmaps around. 08:47:20 Is there a combinator you can do that with in general? 08:47:32 shachaf: iota :p 08:47:36 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 shachaf: It's just asking whether there's a single-combinator base-thing in Hindley-Milner with typeclasses, no? 08:48:06 Except with the ability to interleave other expressions too. But it's basically just a combinator question. 08:48:21 There's that Okasaki thing with the two combinators that don't need parens. 08:48:30 I think that's in untyped LC though. 08:48:37 I knew you would mention Iota or something. 08:48:49 That answer doesn't satisfy me for whatever reason. Though I guess it should. 08:49:49 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 Pick your types wisely and you should be able to express everything. 08:50:06 The types as in typeclass instances. 08:50:20 * shachaf hates type classes. 08:50:23 The worst feature of Haskell. 08:51:27 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 "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 shachaf: Also the only feature. 08:56:17 "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 Yes this is very good. 09:06:47 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 elliott, kallisti who else update? 09:09:30 Who else update indeed. 09:11:57 shachaf: Behold the quality of SO's suggested edit queue: http://ompldr.org/vYzJpZA 09:12:16 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 elliott: Is that one of those "has anything ever do look more like" sentences? 09:13:36 I'm not managing to read the whole thing. 09:13:37 And cash is acceptable as payment 09:14:15 elliott: Also, you're SO-famous enough to be able to approve things? 09:14:29 shachaf: Suggested edits, yes. That comes at 5,000 rep. 09:14:37 Actual moderation tool things come at 10k, which I should hit in less than a month. 09:15:02 Also, I'm not sure, but "dfgsgdfgdfgersdfdfgg" is definitely a worthy addition to the question. 09:15:07 As is the bold italic. 09:15:15 shachaf: Also two people have to approve anything, so it's not like I'm omnipotent. 09:15:29 Also I can just unilaterally edit posts anyway, so it basically gives me no power at all. 09:15:34 Ereyesterday I had 1 karma; yesterday I had 2; today I have 4. 09:15:53 I should hit 1048576 in 10 days, clearly. 09:16:13 That would be quite impressive. 09:16:22 Although it's only about 3 times the top user's rep. 09:16:32 Also, by 10 I mean 20. By which I mean 17. 09:16:36 Assuming I can count, which is a dangerous assumption. 09:16:57 elliott: I'm uncomfortable with the idea of a world where you have any power at all. 09:17:26 It is a world we are all burdened with. 09:17:31 Maybe StackOverflow is just a secret plot to keep people like elliott away from politics. 09:17:58 Why the fuck is Klaymen's Theme in my head. I can't deal with this, I'm sleep-deprived. 09:18:03 shachaf: I don't think I needed SO to accomplish that. 09:18:04 Klaymen's Theme! 09:18:07 elliott++ 09:18:14 Ooh, meaningless internet points! 09:18:17 Did you know I like those a lot? 09:18:24 I did! 09:18:45 Do you have Neverhood-nostalgia too? 09:19:27 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 It was many years ago, though. 09:19:40 Didn't it come out in 1996? 09:19:44 I didn't play it then either. 09:19:52 I was youngish at the time, though. 09:19:57 Certainly a single-digit age. 09:20:05 Wikipedia says yes. 09:20:11 elliott: Did you know you could solve the mouse puzzle just by following the mouse's nose? 09:20:52 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 It's OK, the music is the best part anyway. 09:21:14 Other than the parts that aren't the music. 09:21:21 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 Okay. 09:22:03 @google potatoes tomatoes gravy and peas 09:22:04 http://www.youtube.com/watch?v=W6R5x1VP2b4 09:22:04 Title: The Neverhood - Potatoes Tomatoes Gravy and Peas - YouTube 09:22:19 And also including captions for both shows and commercials, so that they can be printed out. 09:22:27 @google southern front porch whistler 09:22:28 http://www.youtube.com/watch?v=TZgx997HjqE 09:22:28 Title: Southern Front Porch Whistler - YouTube 09:23:08 Hey, the Neverhood article links to the Grim Fandango article. That is also a game! 09:23:12 What a coincidence! 09:23:28 * shachaf hasn't played that one. 09:23:46 Wow, that link is completely rubbish. 09:23:48 Get rid of it. 09:24:00 You should though, it's a really good game. 09:24:04 Apart from the controls. 09:24:10 I played Monkey Island 4. 09:24:22 Yes, it's the same engine. 09:24:26 Except the game isn't terrible. 09:24:33 MI4 isn't *terrible*! 09:24:43 OK, "bad". 09:24:52 Is it? 09:25:05 Now it is time to fight with heavy computers that can still be throw out of a window!!! 09:25:06 It's not like MI1... Or MI2... Or MI3... 09:25:09 But still. 09:25:21 shachaf: Well, it's probably not all that bad a game, but the association with the franchise makes it more disappointing. 09:25:35 Which is true of quite a few things. 09:25:35 (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 What's a good game? 09:25:44 In the networking equipment closet, no-one can hear you scream. 09:25:50 shachaf: Pong! 09:25:54 (Pong isn't actually a good game.) 09:25:54 Psychonauts is good in a way roughly similar to how the Neverhood is good. 09:26:00 I haven't played Psychonauts. 09:26:03 Oh? 09:26:04 When it came out, my computer was too bad for it. 09:26:08 You should play Psychonauts. 09:26:08 Then I never got around to it. 09:26:17 elliott: When it came out, I wasn't aware of its existence. 09:26:35 Didn't stop me from playing it later. 09:26:39 I'll bother to play Psychonauts if you bother to play Grim Fandango. Now we can procrastinate without blaming ourselves! 09:26:40 elliott: Come on, play Psychonauts. 09:26:45 elliott: Fair enough! 09:27:01 I think I have a CD of Grim Fandango somewhere. 09:27:11 Oh, my father has it. And he's 10 time zones away from here. 09:27:15 Now it is time to blame the MPAA on the energy crisis!!! 09:27:51 Now it is time to blame the MPAA for causing energy crisis!!! 09:28:01 shachaf: You could INFRINGE UPON ITS COPYRIGHT. 09:28:20 I think the ultimate anti-piracy measure will be games getting bigger faster than internet connections get faster. 09:28:56 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 I suppose that's in contrast to "analog download". 09:29:20 shachaf: It's the best way to download real numbers. 09:29:37 All I want to do is download some fingers, man. 09:29:48 elliott: Clearly the ultimate anti-piracy measure is to include specialized hardware with your game. 09:29:50 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 If not for the controls, at least. 09:30:14 (And you can play the intro video of the demo of Escape from Monkey Island. That's... not quite as far.) 09:30:38 I would just use a VM. 09:30:45 It's not the most resource-intensive game. 09:30:58 VM running what? 09:31:08 Win``doze''. 09:31:13 Win``nap''. Win``light sleep''. 09:31:22 ``Lose''``light sleep''. 09:31:24 Where am I going to get a Windows CD? 09:31:33 ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: `Lose''``light: not found 09:31:35 With an analog download, of course. 09:31:42 Oh, you crinimal. 09:31:48 *cinnamon 09:32:21 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 elliott: Did you ever play the Discworld games? 09:33:01 OMG, ScummVM can do Toonstruck now??? 09:33:01 Speaking of things that ScummVM supports. 09:33:03 I take my remark back. 09:33:15 shachaf: I think I played one of them for like five minutes once. 09:33:16 So, no. 09:33:45 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 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 And by item I think I mean dragon. 09:35:59 I might have heard something about a missing dragon, it sounds familiar. 09:36:35 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 http://forums.scummvm.org/viewtopic.php?p=67208&sid=44ec24bd244e3e1d3971fe90d51bd4cc 09:41:26 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 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 It also mean, no unique identification data can be accessed by the computer software. 09:49:49 shachaf: Did you know that Stack Overflow has the single best piece of user interface ever? 09:50:10 elliott: I didn't know that. 09:50:13 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 I still don't. 09:50:29 zomg 09:50:30 The result is hitting the button every 14 seconds about 500 times in a row. 09:50:38 Poor elliott has to learn the art of patience. :-( 09:50:41 It's morale-building. 09:50:52 elliott, is that a UI thing or does the server check? 09:51:00 Sgeo: The server checks. 09:51:04 elliott: The really great part is that it says 15 seconds, but it's actually 16. 09:51:11 I can honestly think of no conceivable reason to do it other than to annoy people. 09:51:28 shachaf: I really hope that's true. 09:52:49 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 I like all those words zzo38 is saying. 09:56:39 shachaf: Including the punctuations and sentences? 10:01:38 zzo38: But mainly the words. 10:02:54 Yes. 10:03:01 OK. 10:03:24 But it is not a complete meaning unless you make the words into sentences too 10:18:10 [[ 10:18:11 catseye started watching ehird/funge-archive 2 days ago 10:18:11 funge-archive's description: 10:18:12 An archive of various Funge-related material, focusing on (Be)funge-98. 10:18:12 ]] 10:18:15 Oh no, I might have to actually update that. 10:20:12 Oh ho. There is an EYEBALL on you now. 10:20:51 Your GitHub profile is still one of my most-viewed webpages thanks to completion. 10:21:10 Hey, he's watching you too. 10:21:11 Feel the eyes. 10:21:21 NO. 10:21:21 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 hi Phantom_Hoover welcome to hoov univers 10:55:34 -!- Phantom_Hoover has left. 10:55:50 -!- Phantom_Hoover has joined. 10:56:01 hi Phantom_Hoover welcome to hoov univers 10:56:10 For some reason all the window borders in Chrome have turned red. 10:56:21 Hmm, it didn't work that time. 10:56:47 shachaf: This time it turned all the window borders in Chrome read. 10:56:48 red. 10:56:53 hi Phantom_Hoover welcome to hoov univers 10:57:04 Soon Phantom_Hoover will discover that in the hoov univers, his entire family is made out of hoover. 10:57:09 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 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 elliott: Is that a dialect of Ook? 10:58:22 THE REEDY PIPES OF THE AWFUL FULLNESS 10:58:22 shachaf: hi Phantom_Hoover welcome to hoov univers. 10:58:23 Phantom_Hoover is now a BF derivative. 10:58:29 Oh god. 10:58:32 He's going to brickbrain himself 10:58:34 but the brick 10:58:37 will be 10:58:38 a hoover 10:58:39 hi Phantom_Hoover welcome to hoov univers 10:58:46 No, elliott is a creator of a BF derivative. 10:58:52 No. 10:58:54 You brought this on yourself! 10:58:58 YOU BROUGHT THIS ON YOURSELF!!!! 10:59:03 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 I think I'm to blame here, actually. 10:59:28 * Phantom_Hoover throws a brick southwards. 10:59:36 I should know better than to say anything in IRC that's ever been said before. 10:59:37 Ha! 10:59:41 In the hoov universe, topology doesn't work like that. 10:59:44 * Phantom_Hoover throws another brick southwards. 10:59:45 Also geometry, but topology sounds fanceir. 10:59:47 fancier. 10:59:49 IRC people have a high sensitivity to things being said twice. 10:59:52 You're actually throwing bricks at yourself. 10:59:54 As they say in IRC: 10:59:59 "Zero, one, or infinity" 11:00:03 In the hoov univers, all paths point Phantom_Hooverwards. 11:00:09 shachaf: You forgot two. 11:00:15 elliott is now attempting infinity (and beyond) 11:00:27 elliott, sure, but some of them also intersect you. 11:00:30 elliott: You forgot two. 11:00:33 Phantom_Hoover: No, it's like a black hole. 11:00:41 But only for bricks. 11:01:05 I don't think you know how geometry works. 11:01:10 IF ONLY YOU READ MAC LANE 11:01:19 Phantom_Hoover: Excuse me, this is the hoov univers. 11:01:27 Geometry works in whatever way is least personally convenient for you. 11:01:49 hoov universe is #esoteric? 11:02:12 Only with the e. 11:02:17 The hoov univers is the matrix of solidity itself. 11:02:22 It's generated by a hoover. 11:02:23 #soteric 11:02:25 A phantom hoover. 11:12:09 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 I agree with zzo38. 11:14:58 elliott: Do you? 11:15:23 I agree with everything zzo38 says. Even the ridiculous things. 11:15:34 Also the... well, there's no other things left. 11:18:03 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 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 FINALLY I get that question in while he's here. 12:41:08 -!- nooga has joined. 12:41:38 elliott: My formatter does not work over a partial log, it needs history. 12:41:43 Well 12:41:48 For the purposes of quits it doesn't. 12:42:04 Gregor: Oh, you regenerate complete history? 12:42:08 Yes. 12:42:20 Gregor: Niice... 12:42:36 The raw logs are canonical, everything else is a nicety. 12:42:50 Gregor: Yes, but you should still NAMES periodically to handle desyncs >_> 12:42:59 (Periodically = when you switch files, most likely) 12:43:12 you don't need to treat quits specially if the logs are already separated by channel 12:43:34 oerjan: The logs are only separated by channel if you have a per-channel bot ... 12:44:10 elliott: That's probably reasonable, but doesn't accomplish anything I care much about to be honest. 12:44:21 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 what 12:44:39 in fact it could be done by glogbot directly 12:45:20 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 *-s 12:45:42 oerjan: One big combined file. It just dumps IRC. 12:45:44 -!- monqy has quit (Quit: hello). 12:45:48 aha. 12:46:20 By your channels combined, I am Captain glogbot. 12:46:25 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 ok so you do need to seek back to the previous NAMES then, i gues 12:46:42 s 12:46:52 But I don't seek, I just carry the names in the channel. 12:47:06 It would be silly to seek, since the names list is also modified by PART, NICK, KICK, etc. 12:47:40 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 Right, yes. 12:48:26 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 I only regenerate files if things fuck up. 12:49:05 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 If things fuck up because my generator was bad, then I want to regenerate. 12:49:35 Let me explain the process more completely. 12:49:46 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 If you even notice. 12:49:49 glogbot outputs a log. Its entire session is one log. All PAST sessions are previous logs. 12:50:08 I never need to read past sessions because a fresh session will always have NICK. 12:50:25 And I should never need to restart current sessions unless things crash, but if things crash then I'm fucked anyway. 12:50:47 s/have NICK/have NICKS/ 12:50:52 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 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 isn't that just writing it out? 13:11:15 fmap fmap fmap = fmap . fmap 13:11:33 fmap fmap fmap fmap = (fmap . fmap) fmap = fmap (fmap fmap) 13:11:55 fmap fmap fmap fmap fmap = fmap (fmap fmap) fmap = fmap fmap . fmap 13:12:27 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 fmap fmap fmap fmap fmap fmap fmap = (fmap . fmap fmap) fmap = fmap (fmap fmap fmap) = fmap (fmap . fmap) 13:13:25 fmap fmap fmap fmap fmap fmap fmap fmap = fmap (fmap . fmap) fmap = fmap . fmap . fmap 13:14:18 fmap fmap fmap fmap fmap fmap fmap fmap fmap = (fmap . fmap . fmap) fmap = fmap (fmap (fmap fmap)) 13:15:02 fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap = fmap (fmap (fmap fmap)) fmap = fmap (fmap fmap) . fmap 13:15:25 ...shouldn't there have been ar repetition by now. 13:17:31 -!- Phantom_Hoover has quit (Ping timeout: 244 seconds). 13:19:02 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 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 fmap^12 = fmap^8 13:21:01 ...actually that's not the usual meaning of f^n as functions, but anyhow. 13:21:42 -!- Phantom_Hoover has joined. 13:21:58 :t fmap fmap fmap fmap fmap 13:21:58 forall a (f :: * -> *) a1 b. (Functor f) => (a1 -> b) -> (a -> a1) -> f a -> f b 13:22:03 :t fmap fmap fmap fmap fmap fmap 13:22:04 forall a (f :: * -> *) a1 b (f1 :: * -> *). (Functor f, Functor f1) => (a -> a1 -> b) -> f a -> f (f1 a1 -> f1 b) 13:22:07 :t fmap fmap fmap fmap fmap fmap fmap 13:22:08 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 :t fmap fmap fmap fmap fmap fmap fmap fmap 13:22:11 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 :t fmap fmap fmap fmap fmap fmap fmap fmap fmap 13:22:18 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 :t fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap 13:22:25 forall a b (f :: * -> *) a1 (f1 :: * -> *). (Functor f1, Functor f) => (a1 -> a -> b) -> f1 a1 -> f1 (f a -> f b) 13:22:28 :t fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap 13:22:29 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 ok so 6 has the same type as 10, is the first repetition 13:24:09 Lymia's pretending to be oerjan? 13:24:52 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 (fmap . fmap fmap) x = fmap (fmap fmap x) 13:26:43 which is still a function, so 13:27:22 = fmap (fmap . x) 13:28:18 while (fmap (fmap fmap) . fmap) x = fmap (fmap fmap) (fmap x) = fmap fmap . fmap x 13:28:37 both still functions 13:29:10 fmap (fmap . x) y vs. 13:29:51 (fmap fmap . fmap x) y = fmap fmap (fmap x y) 13:30:15 oh the functor law of course, they are equal. 13:30:49 isn't that just writing it out? 13:30:53 that does not _explain_ it, mathematician :P 13:31:14 well i cannot recall an explanation then 13:33:48 08:46:28: Also, you know how you can usually stick a bunch of fmaps in front of things to get rid of parentheses? 13:33:52 08:46:45: For some sufficiently vague definition of that, sure. 13:33:54 08:47:13: It doesn't always work, I think, no matter where you spread the fmaps around. 13:34:27 istr it always does. 13:35:00 oh wait hm 13:35:27 if you want there to be no parentheses around the fmaps either, it gets trickier 13:39:50 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 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 http://www.thebestpageintheuniverse.net/c.cgi?u=math 13:59:14 I like maths that little bit less now. 13:59:22 -!- nooga has quit (Ping timeout: 240 seconds). 14:01:15 obviously that's because you're an idiot, duh 14:03:21 -!- Ngevd has joined. 14:03:31 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 Hello 14:04:51 elliott, it would be quite difficult to make me like Maddox that little bit less. 14:05:05 http://www.bbc.co.uk/news/technology-16424659 14:05:18 Phantom_Hoover: Ah; also referred to as "Tau Zero". 14:05:22 Without the spaceship. 14:05:27 Hey, it has a zero in it. 14:05:40 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 He's good at reminding the world that some people are just awful? 14:05:59 Public service. 14:06:19 Ngevd: Ha ha, you get your news from bbc.co.uk, like an OLD person. 14:07:16 Goddamned Swedes. 14:08:09 -!- nooga has joined. 14:09:53 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 On the flipside I'm now an advocate for genocide. 14:10:21 I would sue you, but the plan is to kill you anyway. 14:10:42 elliott: i got tricked to click an amazon link :( 14:10:54 i thought it was another page on the website 14:11:20 oerjan: The main problem here is that you wanted to go to another page on the website. 14:11:22 fortunately i can thwart his scheme buy continuing my policy of not buying anything online. 14:11:45 *by 14:14:09 Phantom_Hoover: Hey, I can make you like him a little less: 14:14:11 [[How old are you? / Where do you go to school? / Where do you live? / What is your major? 14:14:11 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 I think, in context, mathematics is now double ruined. 14:14:35 *vomit* 14:14:40 how 14:14:44 how can he be doing maths 14:14:45 Phantom_Hoover: Utah, man. 14:14:50 and yet know next to nothing about it 14:14:51 He's only doing one math. 14:14:52 It's, like, Utah. 14:14:58 Subtraction, maybe 14:15:09 Ngevd: :D 14:21:43 elliott, for more Maddox, check the comments in /r/math. 14:27:45 mathematics has many military and banking applications 14:28:45 death and taxes, it's all math 14:28:48 but i admit that humans are quite capable of killing each other without logic 14:31:06 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 they have been surprisingly inefficient in my case 14:32:59 i guess that the point is that math has positive purposes which are beyond the agenda of any economic entity 14:33:24 but that it has to endure being used for evil 14:34:37 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 that is to say, i have concluded that the goal of humans is not to develop peace 14:35:54 perhaps that is the goal of some though 14:39:02 like an isolated village can cope with daily internal conflict.. 14:39:21 it doesn't require an absence of conflict 14:40:16 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 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 14:40:57 fizzie: a funny quote about dennis the menace "that boy could turn a marshmallow into a dangerous weapon" 14:41:46 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 this baby blender is entirely morally neutral 14:42:55 itidus21, UK or US Dennis? 14:43:08 US cartoon i think.. the goofy blonde kid 14:43:15 US. 14:43:51 oerjan: well.. what i think about this is 14:44:13 that people have a standard view of what objects are used for what... 14:44:35 and.. (now gaining insight) this enables people to detect abnormal behavior more readily 14:45:00 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 i didn't know it was the UK/US thing 14:45:42 but i have encountered a picture of the black haired dennis and wondered why he looked different 14:45:55 with the red and black striped shirt (not cheating here) 14:45:59 i think maybe this channel discussed it before 14:48:04 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 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 Hello oklopol 14:49:14 the other code of course being the program actually reading the data 14:49:28 elliott, for more Maddox, check the comments in /r/math. 14:49:31 Phantom_Hoover: Hmmmmmmmmmmm: no. 14:51:08 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 personally i think i dislike this flkwfwejfkle itidus21 has been talking about that i know nothing about 14:51:46 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 elliott: is there going to be a need for my passive aggressivity in this discussion? 14:53:14 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 nothing else is meaningful about me 14:53:44 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 elliott: ooh, i know all about "hopeless"! 14:54:22 maybe its learning experience 14:56:39 its like, my family can't say anything which will reduce down to logic 14:56:53 its very painful 14:57:58 -!- nooga has quit (Ping timeout: 240 seconds). 14:58:27 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 "like $90 whiskey bottles" 15:02:46 "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 so, i have learned that such things is for better or worse inherent in random pockets of humanity.. 15:06:39 looking in news websites i encounter occasional stories about people dying in trivial arguments 15:07:21 I think I know what you mean. 15:07:41 so the lesson i try to take from that is to not try to prove some principle to someone.. 15:07:58 BUT 15:08:44 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 and he was proud of me for it the next day 15:09:40 lolwut 15:09:43 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 go to school 15:10:05 well.. i distort things when i type and think about them 15:10:19 its important to understand that tidus is the least normal person in his house 15:10:24 =)) 15:10:35 HI COPPRO HOW'S THE WEATHER TODAY 15:10:37 IN CANADA 15:10:38 AND 15:10:42 OTHER PLACES, LET'S TALK EXTENSIVELY ABOUT THE WEATHER 15:10:48 IT 15:10:50 IS GOOD 15:10:51 IT... 15:10:52 ELLIOTT 15:10:54 OH GOD!!! THAT'S SO COOL 15:10:56 HERE IT'S UH 15:10:58 KIND OF MODERATE!!! 15:11:01 A BIT 15:11:04 COLD THOUGH 15:11:05 BUT IT COULD ALWAYS CHANGE, THAT'S THE THING ABOUT THE WEATHER 15:11:06 ALWAYS CHANGING 15:11:11 YES HERE TOO 15:11:14 I THINK IT IS: "WINTER" 15:11:18 IT'S FREEZING HERE 15:11:19 THOUGH, I MAY BE WRONG 15:11:24 I LIKE SHORTS 15:11:29 THEY'RE COMFORTABLE AND EASY TO WEAR 15:11:39 VERILY!!!! HOW IS LIFE IN THE COMMONWEALTH 15:11:42 WAIT I'M IN THE COMMONWEALTH TOO 15:11:43 UHHH 15:11:47 ALTHOUGH THE SKY IS STRANGELY CLEAR 15:11:47 HOW'S LIFE IN THE COMMONWEALTH OUTSIDE THE UK 15:11:53 BUT I TOOK AN ARROW TO THE KNEE 15:11:56 WOW 15:11:58 WE'RE NO LONGER FRIENDS 15:12:02 GOODBYE 15:12:04 HI PHANTOM_HOOVER HOW'S THE WEATHER IN SCOTLAND TODAY 15:12:05 I WILL HAVE A SHOWER NOW 15:12:12 SEE ABOVE 15:12:20 IS THE WEATHER IN HEXHAM STILL SCOTLAND 15:12:20 THAT'S AN AMAZING WEATHER 15:12:28 I GIVE IT A+ STARS OUT OF 100% 15:12:37 YES HEXHAM IS CURRENTLY SCOTLAND (THE COUNTRY) 15:12:44 AS SUCH ALL ITS ATTRIBUTES ARE SCOTLAND 15:12:54 I'M NOT SURE HOW YOU GUESSED IT WAS MEANT TO BE A SECRET 15:15:53 DEEWIANT FOUND OUT 15:17:46 THIS IS WHY FINNS SHOULDN'T BE ALLOWED OMNISCIENCE 15:17:53 OR OXYGEN 15:19:24 BLAME APPLE 15:21:01 OK 15:21:02 FOR WHAT THO 15:21:19 FOR GIVING AWAY THE TERRIBLE SECRET OF HEXHAM 15:23:23 (Actually blame snowstorm99.) 15:25:16 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 maxima 15:26:06 climax 15:26:17 hehe 15:26:24 Maxmax. 15:26:25 >:-) 15:26:28 Minmax. 15:26:43 matrix 15:26:43 Hamhex. 15:28:08 and i will list the other 2 now >:-) hexham and maddox 15:28:10 -!- oklopol has quit (Ping timeout: 240 seconds). 15:29:38 it's also noteable that maddox and math begin with ma~ 15:32:13 fsvo notable 15:32:26 Axeman. 15:32:53 notable for being haunting 15:33:00 that is the true secret of hexham 15:33:07 that it shares 3 letters with maddox 15:33:31 Deewiant: Ohh, *that* is what the refrance Phantom_Hoover was. 15:33:44 Deewiant: This worries me because it means a third person lives in Hexham. 15:34:01 no ... don't tell me maddox lives in hexham 15:34:08 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 I was surprised somebody didn't pick up on that when I first linked it :-P 15:34:40 lol @ link 15:34:52 Deewiant: I thought it vaguely plausible you'd set up Hexham weather on your phone just for shits and giggles. 15:35:00 http://www.wolframalpha.com/input/?i=How+many+people+live+in+Hexham%3F 15:35:28 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 You know, for solidarity. 15:35:52 How many Helsinkians are there in here, actually? 15:36:00 Phantom_Hoover: At least three. 15:36:02 I thought oko at least lived elsewhere in Finland. 15:36:10 Well, fizzie, ineiros, Deewiant, atehwa. 15:36:11 I live in Espoo, to be all technical about it. 15:36:22 And so does ineiros; don't know about Deewiant, atehwa. 15:36:23 elliott, so the esolanger density is significantly lower than that in Hexham? 15:36:30 fizzie: That doesn't really "count", it's all Helsinki to me. 15:36:40 It doesn't really "count" for many people here, too. 15:36:40 Phantom_Hoover: Well... Helsinki is rather bigger than Hexham. 15:36:52 oko's from Turku unless I misremember. 15:36:54 About 60 times bigger. 15:36:59 Yes, trukku. 15:37:01 Trurktrtuwu. 15:37:24 51.7. 15:37:27 http://www.wolframalpha.com/input/?i=%28helsinki+population%29%2F%28hexham+population%29 15:37:42 I'm in Helsinki. 15:37:45 W|A is really the best thing. 15:37:52 Deewiant: You capitalist. 15:38:01 That's me. 15:38:34 I'm still not convinced Deewiant is a person. 15:38:35 (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 i wonder if they intend to connect interpreters to wolframalpha 15:39:30 I can't believe you guys actually called a place Espoo. 15:39:50 Stupid W|A only knows about median home sale prices in U.S. 15:39:56 It's no longer the best thing. 15:40:00 In fact, it's now the worst thing. 15:40:02 i don't really wonder that 15:40:08 "The Helsinki University of Technology, in Otaniemi, Espoo" 15:40:11 Sic transit gloria mundi. 15:40:20 fizzie: Have you considered gently educating your officials as to how to spell Espoo (i.e. not "Helsinki")? 15:40:25 elliott: It was in Helsinki originally. 15:40:32 We didn't come up with Espoo, the Swedes did. 15:40:56 (It's Esbo in Swedish.) 15:41:04 (And Helsinki's Helsingfors.) 15:41:43 (Two national languages and all that.) 15:41:44 Deewiant: It's always the Swedes. 15:41:49 Espoo seems to be the Kingston upon Thames of Finland 15:41:54 fizzie: Helsingfors is a pretty good name, I gotta say. 15:42:42 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 And Kauniainen is completely surrounded by Espoo anyway. 15:42:53 "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 I bet Deewiant secretly lives in Kauninaineianeinawenwenawkejawenkawjnfnsfljsiojuauauaua. 15:43:11 Rich Swedish-speaking folks live there. 15:43:17 (Did I break the vowel harmony?) 15:43:26 ("No, just every other rule of the language.") 15:44:08 elliott, do have any idea when Cock Wood becomes Half Mile Wood 15:44:08 I don't see any yöä there, so I think you're good. 15:44:24 "yökätä" = "to puke" (informally). 15:44:59 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 fizzie: To gag, rather. 15:45:29 Deewiant: Gag me with a spoon. 15:45:32 fizzie: What's you guys'ses word for "yawn"? 15:45:33 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 And not even informally, methinks. 15:46:05 "Not even informally" -- Deewiant "methinks" Deewiant 15:46:08 elliott: "haukotella" (verb), "haukotus" (noun). 15:46:40 Hokay, work -> shops -> home now. -> 15:46:51 Deewiant: haukotella 15:46:58 Deewiant: hauuuuuuuuuukotella 15:47:03 There are also Swallowship Woods and Wagtail Wood 15:47:10 elliott: You want the noun for that 15:47:11 I'm attempting to disprove my completely ludicrous hypothesis that it only works for English. 15:47:15 Deewiant: haukotus 15:47:17 Deewiant: hauuuuuukotus 15:47:26 Wow, that actually made me yawn. 15:47:36 The power of Finnish. 15:47:36 And Wooley Wood 15:53:56 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 hi 15:57:32 Vorpal, hello 15:58:26 java is annoying to code in (doing this for university purposes) 15:59:08 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 Vorpal: agreed 16:29:56 @src iterate 16:29:56 iterate f x = x : iterate f (f x) 16:30:53 Yay 16:32:04 > map fst (iterate (uncurry (ap (,) . (+)))) 16:32:05 Couldn't match expected type `[(a, b)]' 16:32:05 against inferred type `(b1,... 16:32:27 > map fst (iterate (uncurry (ap (,) . (+)) (1,1))) 16:32:28 Couldn't match expected type `a -> a' 16:32:28 against inferred type `(b, b)' 16:33:28 -!- nooga has joined. 16:33:57 > map fst (iterate (uncurry (ap (,) . (+))) (1,1))) 16:33:58 : parse error on input `)' 16:34:07 > map fst (iterate (uncurry (ap (,) . (+))) (1,1)) 16:34:09 [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 Get there eventually 16:35:13 * elliott is now 251.761905 times better than Taneb. 16:35:31 To celebrate, I'm going to sleep in a minute. 16:36:05 I'm the lowest ranked person on the only coolness rankings I have ever come across 16:36:31 You may live happy in the knowledge that Sgeo would rank lower. 16:36:51 :( 16:37:15 Phantom_Hoover: You forgot that person I'm not going to ping. 16:37:15 It's just one of the facts of life, Sgeo. 16:37:28 A bitty omission. 16:37:39 Vrpal? 16:37:54 Lmia? 16:38:03 Vorpal: Madoka-Kaname: Congratulations, Phantom_Hoover hates you! 16:38:04 Ah. 16:38:26 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 goop dnight my friendsnj 16:56:06 Goodnight 17:00:42 -!- elliott has quit (Ping timeout: 276 seconds). 17:11:27 What time zone is he pretending to be in? 17:13:33 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 Ngevd: Elliott time, I'd think. 17:56:39 > length . filter ((/=1) . length . group) . S.toList . S.fromList . replicateM 5 $ "AKQJT98765432" 17:56:43 371280 17:57:13 > length . filter ((/=1) . length . group) . S.toList . S.fromList . map sort . replicateM 5 $ "AKQJT98765432" 17:57:15 6175 17:59:03 > length . S.toList . S.fromList . map sort . filter ((/=1) . length . group) . replicateM 5 $ "AKQJT98765432" 17:59:06 6175 17:59:09 hmmm, no. 17:59:23 > length . S.toList . S.fromList . map sort . {-filter ((/=1) . length . group) .-} replicateM 5 $ "AKQJT98765432" 17:59:26 6188 17:59:50 why is this not yielding correct numbers... 18:03:09 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 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 some of them contain (mutually incompatible) a.out files. 18:05:37 > permutations "ab" 18:05:38 ["ab","ba"] 18:10:17 -!- Klisz has joined. 18:11:00 > msum . map Last $ [Just 1, Just 2, Nothing] 18:11:01 No instance for (Control.Monad.MonadPlus Data.Monoid.Last) 18:11:01 arising from ... 18:11:14 > mconcat . map Last $ [Just 1, Just 2, Nothing] 18:11:16 Last {getLast = Just 2} 18:11:23 > mconcat . map Last $ [Just 1, Just 2, Nothing, Just 3] 18:11:24 Last {getLast = Just 3} 18:11:26 * [PiRSq|Finnmark] . 18:11:35 > mconcat . map First $ [Nothing, Just 1, Just 2, Nothing, Just 3] 18:11:36 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 hmmm a simple form of subclassing would be to have typeclass synonyms. 18:15:12 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 is elliott here (under some other nick)? 18:33:08 kallisti, ^ 18:33:22 yes 18:33:24 I am elliott 18:34:08 no 18:37:03 my $i = $blah{lc $nick} += my $n = int(rand(5)); 18:37:06 there's something so.... 18:37:11 good about this line of code. 18:38:07 chaining assignments and += and lexical scope declarations. 18:38:15 this is the way imperative programming is meant to be. :D 18:39:42 my $is = (my $i = $blah{lc $nick} += my $n = int(rand(5))) != 1? 's' : ''; 18:39:46 oh god what am I doing 18:41:36 my $is = (my $i = $blah{lc (my $nick = $a->{body} || $a->{who})} += my $n = int(rand(5))) != 1? 's' : ''; 18:41:43 no..... I can't continue with these nested assignments. 18:44:05 -!- Ngevd has joined. 18:48:09 I've got a phantomly Haskell error that I cannot work out 18:48:24 paste pl0x 18:48:31 http://hpaste.org/56121 18:49:00 The error comes up when running with the arg "general" 18:49:30 what's the error. 18:49:56 *** Exception: Prelude.(!!): index too large 18:50:36 :t fromAscList 18:50:37 Not in scope: `fromAscList' 18:50:44 :t M.fromAscList 18:50:44 forall k a. (Eq k) => [(k, a)] -> M.Map k a 18:50:49 :t M.AscList 18:50:50 Couldn't find qualified module. 18:50:53 :t M.fromList 18:50:54 forall k a. (Ord k) => [(k, a)] -> M.Map k a 18:51:41 I find gen_map kind of confusing, as it doesn't have a complete pattern. 18:51:49 it just checks [] and ["general"] 18:52:04 I'm gonna add everything else 18:52:08 Later 18:52:34 Really, there's going to be similar things to general but military, legal, and domestic 18:52:51 And political 18:53:11 oh...kay 18:54:35 well uh... I'm guessing you have a field that isn't 4 elements large? 18:54:47 They all have five. 18:54:53 It's a rectangular CSV 18:55:23 add a print . filter ((<5).length) grid in main or something 18:55:27 er 18:55:35 print . filter ((<5).length) $ gris 18:55:38 *grid 18:56:33 Aha 18:56:46 is it grabbing a few empty elements or something? 18:56:54 There's one that's [[""]] 18:57:00 yeah I thought that might be the case. 18:57:03 or something similar 18:57:09 Well, [""] 18:57:17 right 18:57:35 An init should fix this 18:59:27 -!- _Slereah has joined. 19:01:33 Ngevd: also since you're ask_question is an IO function anyway... you can just use randomIO 19:01:49 *your 19:02:03 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 i think this is a good thing to happen to me 19:02:20 ??? 19:03:09 an odd number is defined as an integer n for which there exists an integer k such that n = 2k+1 19:03:49 perhaps I misunderstand what you mean though 19:03:54 i mean there is no odd number a' which satisfies a' = a x 2 19:04:13 well, yes 19:04:18 that's the definition of an even number 19:04:21 and not even is odd 19:04:51 oh you're talking about CA 19:05:00 gardens of eden. 19:05:02 I think? 19:05:04 no.. im trying to combine numbers and CA 19:05:35 so yes.. 19:05:42 lets say a 1x1 CA with an unbounded natural numbers 19:06:07 my terminology and notations really sucks :P 19:06:32 nah I got what you're saying. 19:06:35 a*2 is a terrible CA rule 19:06:41 why? 19:06:47 -!- _Slereah has changed nick to Slereah. 19:07:08 the collatz rule is far more interesting 19:07:17 it has methuselahs and everything 19:08:22 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 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 ...you're basically describing a recursive equation. 19:09:14 it's all shakey ground for me.. the idea makes sense but terminology and notation is not my strong thing :P 19:09:33 you cannot say its a CA in the traditional sense 19:09:46 since traditional CAs have locality 19:09:53 aka a speed of light 19:10:00 i like the phrase garden of eden 19:10:00 aka bounded spheres of influence 19:10:05 a 1x1 CA might as well be "a variable" 19:10:28 wait 19:10:28 sorry 19:10:36 or well... a FSA 19:10:46 traditional CAs have finite state sets 19:10:50 that is my objection 19:10:56 oh... yes. 19:11:06 not a FSA but an ISA (infinite state automaton :P ) 19:11:10 -!- DCliche has joined. 19:11:19 kallisti, LBA? 19:11:23 at first i thought, ahh a' = a + 1 would not have any gardens of eden in the sense i am describing 19:11:46 i love misusing terminology 19:11:55 Ngevd: pretty sure a LBA has more than one "cell" 19:12:10 Deadfish is a linear bounded automaton 19:12:20 i am almost certainly misusing terminology 19:12:30 its what i do 19:12:55 No it isn't 19:13:47 what I'm describing is a finite state automata but with an infinite set of states 19:14:15 a LBA consists of a tape. 19:14:29 I would say "infinite state automaton" is too general and misleading 19:14:49 And I have now mentally redefined LBA's 19:14:52 -!- Klisz has quit (Ping timeout: 255 seconds). 19:15:34 :t M.find 19:15:35 Couldn't find qualified module. 19:15:39 :t Map.find 19:15:39 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 Couldn't find qualified module. 19:16:07 A minsky machine? 19:16:39 not sure that that is. 19:16:46 s/that/what/ 19:18:10 oh, hmm... minsky machines are turing machines. 19:18:34 Minsky machines with more than one register are equivalent to turing machines. 19:18:40 There is quite a big difference 19:19:34 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 Waiter, there's a counter in my machine. 19:39:10 Ssh, or everyone will want one! 19:41:06 rage against the counter machine 19:41:08 (bad) 19:44:01 counter against the rage machine 19:44:40 > map unwords . permutations . words $ "rage against the machine" 19:44:41 ["rage against the machine","against rage the machine","the against rage ma... 19:45:24 > permutations "RATM" 19:45:25 ["RATM","ARTM","TARM","ATRM","TRAM","RTAM","MTAR","TMAR","TAMR","MATR","AMT... 19:45:30 TRAM. 19:45:47 the against rage machine 19:45:56 > permutations "RATCM" 19:45:57 ["RATCM","ARTCM","TARCM","ATRCM","TRACM","RTACM","CTARM","TCARM","TACRM","C... 19:46:37 Against the machine rage counter. 19:46:55 fungot: What's the current value of the machine rage counter? 19:46:55 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 the machine counter against rage 19:49:08 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 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 evning 20:46:05 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 "scotland", duh 20:46:27 it's like people weren't paying attention 20:49:26 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 Wow, that actually made me yawn. <-- gjeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeesp 20:55:04 i guess it doesn't work if he's already sleeping. 20:56:17 :t build 20:56:18 Not in scope: `build' 20:56:21 @hoogle build 20:56:21 GHC.Exts build :: (forall b. (a -> b -> b) -> b -> b) -> [a] 20:56:21 Data.Graph.Inductive.Internal.Heap build :: Ord a => [(a, b)] -> Heap a b 20:56:22 Graphics.Rendering.OpenGL.GLU.Mipmapping build1DMipmaps :: TextureTarget -> PixelInternalFormat -> GLsizei -> PixelData a -> IO () 20:57:02 -!- oklopol has joined. 21:00:11 :t let build :: (forall b. (a -> b -> b) -> b -> b) -> [a]; build b = b (:) [] in build 21:00:12 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 :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 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 17:59:23: > length . S.toList . S.fromList . map sort . {-filter ((/=1) . length . group) .-} replicateM 5 $ "AKQJT98765432" 21:13:54 17:59:26: 6188 21:13:57 17:59:50: why is this not yielding correct numbers... 21:14:05 that would rather depend on what you are trying to calculate. 21:53:44 oerjan: number of distinct combinations in a 5-card hand. 21:57:29 How are Smalltalk's Bags structured? 21:57:44 kallisti: ic, i cannot see any error either, then 21:57:52 Or are they similar to Set and ordered by identity or something? 22:00:33 kallisti: as long as you are meant to ignore suits, that is 22:01:19 ah yes that's why it's different 22:01:34 heh XD 22:03:11 > product [52-4 .. 52] `div` product [1..5] -- is this the right answer? 22:03:12 2598960 22:04:26 or are you meant to ignore some suit differences but not others. 22:04:56 (e.g. ignore except when a flush is involved) 22:06:56 hmm, so apparently Romney beat Santorum by 8 votes 22:07:12 yeah i read that in the (norwegian) paper 22:07:17 and the US doesn't use the UK's recount mechanism 22:08:07 (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 (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 ais523: i recall it's a caucus, which uses even more unpredictable voting methods, it may even be by showing hands... 22:08:42 haha 22:08:59 apparently it was done with check marks or by writing names in by hand 22:09:48 (iowa uses caucus, that is; the next one (new hampshire) uses more conventional voting) 22:11:55 ooh, leap second announced in June 22:13:14 -!- derdon has joined. 22:17:25 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 oerjan: no there's no special case for flushes 22:21:40 -!- oklopol has quit (Ping timeout: 260 seconds). 22:22:02 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 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 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 and just now the connection dropped again. 22:27:59 i guess i'll have to actually install it soon :D 22:29:03 (i'm not actually the direct customer, my landlady is, but she knows approx. 0.01 about computers.) 22:30:15 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 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 @hoogle [a] -> [[a]] 22:33:07 Data.List inits :: [a] -> [[a]] 22:33:08 Data.List permutations :: [a] -> [[a]] 22:33:08 Data.List subsequences :: [a] -> [[a]] 22:33:54 oerjan: hmmmm? the filter is used to get rid of the 5-of-a-kind cases which are impossible 22:34:05 kallisti: that's what i implied 22:34:15 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 wat 22:34:46 but _your_ calculation assumes the suits are the same, and you said they were wrong 22:34:52 yes. 22:34:59 well 22:35:00 it's wrong 22:35:11 if you care about suits 22:35:12 but not otherwise. 22:35:18 I think 22:35:19 * oerjan facepalm 22:36:17 >_> 22:36:48 I believe your product quotient is the correct answer is distinct combinations are what you're looking for. 22:37:00 aka 52C5 22:37:02 -!- azaq23 has quit (Quit: Leaving.). 22:37:05 er 22:37:06 not C 22:37:09 the other one 22:37:13 er wait 22:37:13 yes 22:37:13 C 22:37:14 :P 22:37:31 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 the problem is: 22:38:20 http://en.wikipedia.org/wiki/Poker_probability 22:38:26 the distinct number 22:38:32 is 7,462 22:38:38 and I'm getting 6000-something 22:38:49 I assume "distinct" means "ignoring suit" 22:40:51 > length . S.toList . S.fromList . map sort . {-filter ((/=1) . length . group) .-} replicateM 5 $ "AKQJT98765432" 22:40:54 6188 22:41:01 > length . S.toList . S.fromList . map sort . filter ((/=1) . length . group) . replicateM 5 $ "AKQJT98765432" 22:41:05 6175 22:41:24 > length . filter ((/=1) . length . group) . replicateM 5 $ "AKQJT98765432" 22:41:26 371280 22:42:44 kallisti: the flush case does not ignore suit 22:42:57 ah 22:43:54 hmmm... are you sure 22:44:08 it would seem that if that were the case then the "distinct" and "frequency" columns would be the same for flush. 22:44:22 or wait does it 22:44:31 > 1277*4 22:44:32 5108 22:44:41 ok you're right 22:45:04 so I... I really don't know what's wrong. 22:45:15 nor is it incredibly important either. but, it would be nice to know. 22:45:56 > 13*12*11/2 22:45:56 858.0 22:46:26 -!- pikhq_ has joined. 22:46:27 -!- pikhq has quit (Ping timeout: 248 seconds). 22:46:31 > 4*4*13*12*11/2 22:46:32 13728.0 22:46:37 hm no 22:46:50 > 4*13*12*11/2 22:46:51 3432.0 22:46:56 > replicateM 5 "ABC" 22:46:57 ["AAAAA","AAAAB","AAAAC","AAABA","AAABB","AAABC","AAACA","AAACB","AAACC","A... 22:46:58 -!- MSleep has joined. 22:47:06 > sum [1,9,156,156,1277,10,858,858,2860,1277] 22:47:07 7462 22:47:44 > sequence ["abc", "abc", "abc", "abc", "abc"] -- Sgeo 22:47:45 ["aaaaa","aaaab","aaaac","aaaba","aaabb","aaabc","aaaca","aaacb","aaacc","a... 22:47:50 oh hm wait 22:48:18 > 7462-1277 22:48:18 6185 22:48:32 ic 22:49:02 it's because the flushes count approximately double 22:49:40 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 oh yes. 22:50:23 -!- MDude has quit (Ping timeout: 252 seconds). 22:51:24 -!- MDude has joined. 22:51:28 so suit is still important when calculating distinct possibilities 22:51:40 -!- MSleep has quit (Ping timeout: 252 seconds). 22:53:22 > 7462-(1277+10+1) 22:53:23 6174 22:53:27 er 22:53:35 > 7462-(1277+9+1) 22:53:36 6175 22:54:08 subtracting all the flush variations gives your number 22:54:43 so my calculation is basically counting the distinct combinations of a sequence of card ranks from a deck. 22:54:56 er... 22:54:58 worded better 22:55:10 but not the distinct number of poker hands, ignoring suit. 22:55:53 mhm 22:56:40 heh, I like you've got a 50/50 chance of just getting a really shitty hand 22:56:52 50% of just a high card. 22:57:02 assuming that the deck is full even. 22:57:34 and then the probabilities of everything else drop hugely 22:58:28 this is why I'm bad at poker 22:58:30 not lucky enough. 22:59:41 maybe I'd be better at lowball poker. 22:59:50 i hear luck has almost nothing to do with it. 22:59:55 so have I. 23:00:20 I mean, making money with poker requires skill 23:00:22 getting good hands 23:00:24 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 I would think lowball rules severely fucks up the game/ 23:04:14 so that betting is essentially much riskier. 23:09:19 huh wait... 23:09:21 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 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 that's lame. straights and flushes should count against your hand's lowness 23:10:02 you should calculate the priority of your hand as normal, and then invert the ordering. 23:11:15 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 so then the best hand would be 7-5-4-3-2 23:12:36 -!- DCliche has joined. 23:12:47 that would otherwise be the worst possible hand in the game. 23:16:15 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 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 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 haha 01:21:00 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 >:/ 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 "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 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 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 @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 Consider it noted. 10:04:12 `? wisdom 10:04:23 wisdom? ¯\(°_o)/¯ 10:04:54 `ls bin 10:04:58 ​? \ @ \ 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 `define wisdom is always factually accurate, except for this entry 10:05:50 No output. 10:05:56 `? wisdom 10:06:00 wisdom? ¯\(°_o)/¯ 10:06:03 hmm 10:06:11 ah, it's learn 10:06:18 `learn wisdom is always factually accurate, except for this entry 10:06:23 I knew that. 10:06:26 `? wisdom 10:06:30 wisdom is always factually accurate, except for this entry 10:10:20 `define wisdom 10:10:23 ​\ 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 Very good. 10:17:21 -!- zzo38 has joined. 10:17:23 awww yeah my bot is officially better than lambdabot 10:17:32 because it checks identification on bot admins. 10:18:58 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 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 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 Reborn elliott. Rebelliott. 10:49:36 Rebelliorn 10:50:15 ellebott 10:50:15 monqy: You have 1 new message. '/msg lambdabot @messages' to read it. 10:50:27 kallisti: hi 10:50:49 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 Vorpal: great 10:55:04 I don't remember either 10:55:24 elliott, that is pretty easy to explain: you weren't in the channel at the time 10:56:28 whew, IOCCC submission in 10:56:42 I should really test it on more compilers, but I know I won't 10:56:46 so gcc and clang will have to do 10:56:47 ais523, oh you are competing in IOCCC? Sounds fun :) 10:56:56 yes, I think I said as much earlier 10:57:02 IOCCC is going on? 10:57:07 shachaf: yep, only 6 days left 10:57:10 ais523, I don't read /everything/ in this channel. 10:57:11 and a few hours 10:57:18 Is augustss competing? 10:57:18 so you'd better hurry if you want to get an entry in 10:57:29 Gregor has submitted a portable JIT 10:57:31 ais523, do you think you might be able to win? 10:57:43 and what sort of submission did you make? 10:57:51 ais523: "JIT"? More like "at least 6 days in advance" 10:57:52 short program 10:58:09 and I wouldn't enter it if I weren't trying to win 10:58:13 but I guess I'll get serious competition 10:58:16 well okay 10:58:27 ais523, so what does your program do? 10:58:27 hopefully what I'm doing is unique enough to get through 10:58:34 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 that's the part that people have to try to figure out, isn't it? 10:59:04 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 but it was more concerned with the way it does things, rather than what it does 10:59:27 It means, the king cannot escape... but you can appoint a new king, or protected by blocking or capturing the attacker. 10:59:29 though a portable JIT is quite impressive. 10:59:30 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 you can stack-smash portably? 10:59:51 that is news to me 10:59:52 It also means bare king loses since you will be forced to move it and therefore to change it. 10:59:54 sure 10:59:57 just like you can JIT portably 11:00:02 ofc, it's just smashing values, not code 11:00:08 ais523, /pretty/ sure it is undefined behaviour to stack smash 11:00:23 it does a whole load of undefined behaviour deliberately 11:00:30 then it isn't portable 11:00:32 A large majority of ioccc winners have involved undefined behaviour 11:00:32 because I started, and then I just kept on going 11:00:34 There is no castling, en-passan, promotion. 11:00:40 Vorpal: it's portable if it runs on most machines, isn't it? 11:00:47 it's not strictly conforming, but that's something entirely different 11:00:59 ais523, I would say portable to mean strictly conforming in the context of IOCCC yeah 11:01:07 I wouldn't 11:01:09 hm 11:01:11 based on what they've accepted in the past 11:01:12 Vorpal: anything more portable than mullender is given serious consideration 11:01:15 well okay 11:01:21 Jafet, mullender? 11:01:29 Or perhaps that later flight simulator using motif 11:01:35 ah right 11:01:38 yeah 11:01:45 well true, I forgot about that 11:01:48 You don't know mullender? 11:01:51 it wasn't exactly portable 11:01:54 (the flight sim) 11:02:03 Jafet, if I do I don't remember the name of it 11:02:06 tell me what it is 11:02:19 (I'm terrible at remembering names) 11:02:21 http://www.ioccc.org/1984/mullender.c 11:02:45 right 11:02:56 Jafet, which machine? 11:03:15 mullender? vax/pdp polyglot. 11:03:18 heh 11:03:40 Jafet, how did they respond to that one? reject it? 11:03:56 Every file on their site is a winner. 11:04:09 winner for rules abuse or whatnot? 11:04:09 oh okay, thought they published all 11:04:11 hm 11:04:53 Jafet, hm I wonder if gcc would accept that sort of stuff... 11:05:01 Sure 11:05:08 really? hm 11:05:24 Someone ported it to geordi/linux/i686 11:05:29 Jafet, I would expect it to end up in .data rather than .text 11:05:41 which means it would be marked NX and thus not be executable 11:05:52 at least on x86-64 11:06:17 It might not work on amd64 then 11:06:54 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 it depends on where gcc places it I guess 11:07:15 Only if the system decides to use NX 11:07:28 well linux does. Don't think you can turn it off 11:07:32 I believe Windows, for example, allows turning it off 11:07:48 well you can force it off for a given program 11:07:55 some compatibility personality thingy 11:08:09 iirc 11:08:11 ais523, I would say portable to mean strictly conforming in the context of IOCCC yeah 11:08:16 Vorpal: Thus outlawing about 50% of IOCCC winners 11:08:22 elliott, I realised I was wrong a few lines below :P 11:08:29 More like 90% 11:08:33 Jafet, how did they respond to that one? reject it? 11:08:33 Every file on their site is a winner. 11:08:37 Vorpal: Changing the rules. 11:08:42 elliott, right 11:08:49 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 it's ironic because C11 is out now 11:08:59 ha 11:09:06 gcc compiles C11 now? 11:09:20 I don't think so 11:09:30 C11 is really new, it was released right near the end of 2011 11:09:40 and it's right near the start of 2012 right now 11:09:56 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 Well, they tend to use gcc as the standard 11:10:10 Vorpal: a few of the new things happen to be gcc extensions already 11:10:14 as usual 11:10:16 And I believe gnu99 is the current default 11:10:23 things tend to get standardised if every existing compiler does them already 11:10:25 ais523, right, I haven't really checked in detail what is new. 11:10:39 17:11:27: What time zone is he pretending to be in? 11:10:39 17:49:47: Ngevd: Elliott time, I'd think. 11:10:39 Bingo. 11:10:43 ais523: gcc 4.6 does -std=c1x 11:10:44 IIRC. 11:10:51 heh 11:11:02 elliott: option introduced before they knew what the standard would be called? 11:11:04 well I can't check, I'm on an old system atm 11:11:15 18:03:09: 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 18:04:53: 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 18:05:34: some of them contain (mutually incompatible) a.out files. 11:11:20 lifthrasiir: At least your mess is confined to ~/tmp. 11:11:24 (Well, okay, it might not be.) 11:11:32 ais523: release released before they knew that, I think 11:11:34 ais523, well, gcc 4.6 is quite recent, and they probably figured it would be between 2011 and 2019 11:11:38 it's probably not very complete yet 11:11:42 so I guess they felt safe about the name 11:11:53 (iirc gcc 4.6 was released 2011) 11:11:54 I wouldn't call it -std=c11 even if the gods told me it would be released under that name. 11:12:03 Because you're still implementing a draft standard, not C11 itself. 11:12:04 (I almost wrote "this year" before I remembered it is 2012) 11:12:45 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 I try to avoid that though 11:13:01 Vorpal: This is why you use the elliott-standard organisation system. 11:13:13 elliott, subdirs other than ~/tmp and ~/Desktop are in perfect order though :P 11:13:15 Admittedly, the main mess-avoider there is that shells start in ~/tmp :p 11:13:38 elliott, hah 11:13:57 hmm, I use actual /tmp for temporaries 11:14:04 it's amusing to look in /var/tmp sometimes 11:14:09 ais523, my ~/tmp is more like /var/tmp 11:14:11 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 one of them, was left there for over a year 11:14:23 heh 11:14:28 and I finally did what I wanted to do with it a few days ago 11:14:45 -rw-r--r-- 1 ais523 ais523 32956 2010-10-31 14:24 Königsberg_bridges.png 11:14:53 hm I have test.c test2.c ... test7.c in ~ 11:14:58 I need to check what they are for 11:15:17 Oh nooo, not more Ngevd code debugging in the logs. 11:15:21 char (*(*f)(int,int))[7]; 11:15:22 wut? 11:15:26 It would be acceptable if he actually integrated the suggestions that didn't directly fix his bug from last time. 11:15:27 is that even valid? 11:15:37 let me try to decode it 11:15:43 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 ais523, how do you define an array of function pointers in C without using a typedef? 11:15:59 I think that is what I tried to do and failed 11:16:08 char (*f[7])(int,int); 11:16:09 methinks 11:16:15 heh 11:16:16 declaration follows use 11:16:18 possibly 11:16:19 (*f[7])(42,42) 11:16:22 pointer to function that takes two integer arguments and returns a pointer to an array of 7 chars 11:16:24 is Vorpal's line 11:16:30 ais523: right, so not valid 11:16:34 indeed 11:16:41 declaration follows use is actually a really simple rule to apply 11:16:45 so the [7] goes after the function name 11:16:46 right 11:17:00 char (*(f[7]))(int,int); is what I make it 11:17:07 lets try that 11:17:09 -!- nooga has joined. 11:17:15 which is probably equivalent to elliott's, because of operator precedence 11:17:35 well that compiles 11:18:24 cdecl.org translates elliott's suggestion to "declare f as array 7 of pointer to function (int, int) returning char" 11:18:32 and mine to the same thing 11:18:45 hm 11:21:11 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 thanks 11:23:12 monqy: wouldn't it be great if you had like data Expr = Lit Integer | ... and then could say 11:23:14 eval :: Expr -> Integer 11:23:17 eval . Lit = id 11:23:22 as one of the clauses 11:23:35 that would be great, i refuse to believe being able to use compositions on the LHS wouldn't be graet 11:23:38 great 11:23:44 grate 11:25:28 something like that is a thing i really want a lot 11:26:41 data Expr = Lit Integer | Add Expr Expr 11:26:43 eval . Lit = id 11:26:48 (eval .) . Add = liftA2 (+) eval eval 11:26:52 the most beautifulest 11:26:52 -!- Phantom_Hoover has joined. 11:27:01 is Phantom_Hoover 17 now 11:27:07 yikes / yikes 11:27:08 Yes. 11:27:08 Phantom_Hoover: You have 1 new message. '/msg lambdabot @messages' to read it. 11:27:28 Phantom_Hoover: ok nice knowing you /ignored forever 11:27:38 fizzie said 1h 52m 11s ago: Factoids need not be factually accurate; 11:28:02 The definition is that they're not factual at all, IIRC? 11:28:20 Phantom_Hoover: I think that definition appeared about ~30 seconds before it started meaning "small fact" instead. 11:28:33 Prescriptivists talk about the Great 30 Seconds of Peace and Meaning. 11:29:06 what a Great 30 Seconds they were 11:29:18 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 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 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 hmm, it's easy with A = (), B = Void 12:57:29 but choosing Void as one of them is cheating :) 12:58:25 foo = unsafeCoerce 12:58:30 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 i don't know what A ~ B really allows you to do, especially if it's false. 13:01:13 hmmm you know what I want. 13:01:22 a Perl 5 JIT compiler. 13:04:20 the question is.... 13:04:24 uh, how do you parse Perl? 13:04:44 You can't. 13:04:48 You can execute Perl. 13:04:55 well, obviously. 13:05:03 I write perl code because it's aesthetically beautiful 13:05:05 not because it /runs/. 13:05:10 You can execute Perl. 13:05:13 You can't parse Perl. 13:05:20 Unless you're a Turing Machine. 13:05:28 If you are Turing Machine, the process looks exactly like executing Perl. 13:05:28 *are a 13:05:32 ..... 13:05:33 what. 13:05:43 oh 13:05:44 yes. 13:05:52 kallisti, he means that parsing perl without executing it can't be done 13:05:54 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 right. 13:05:59 well, not with a UTM 13:06:08 still imagine... 13:06:10 So: Tough. 13:06:10 perl 5 JIT 13:06:29 why on earth 13:06:42 because I like perl 5 but don't like that it's slow. 13:07:23 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 If my experience with kallisti's code is any indicator, Perl isn't slow. kallisti's algorithms are slow. 13:07:52 ah 13:08:08 well perl is slow as well 13:08:27 elliott: what experience? what algorithms? :P 13:09:02 kallisti: words, that factoring thing. 13:09:23 words is pretty reasonably fast. how would you make it faster? 13:09:56 It was the generation script. I don't remember what was stupid, but something was stupid. 13:09:59 `words --portuguese 50 13:10:07 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 you disliked the regex 13:10:13 which was... kind of essential. 13:10:30 but yes I shouldn't have written that in perl. 13:10:59 you mainly didn't like that it was perl. 13:11:31 kallisti, is the generation script slow? 13:12:01 yes, but I don't think it's because of the algorithm. 13:12:03 anyway regular expressions is not essential to anything, it is just convenient 13:12:16 kallisti: I am dead sure it is. 13:12:17 kallisti, what is the complexity of the algorithm? 13:12:24 The problem is not your language, the problem is almost never your language. 13:12:36 in Perl regex is essential. it's also faster than handrolling the equivalent code that doesn't exist in perl libraries. 13:12:45 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 kallisti, sure, but that is perl 13:12:56 the problem is a) file IO b) perl 13:12:57 who said it had to be perl? 13:13:05 Vorpal: it doesn't 13:13:14 but 13:13:19 yes? 13:13:19 if you look I above I say 13:13:23 "in Perl regex is essential" 13:13:26 and then go on to explain why that is 13:13:31 thus the relevance... 13:13:34 I see 13:13:56 kallisti, anyway, what is the complexity of your algorithm? 13:13:57 anyway I don't know what the complexity is because I'm bad at that. 13:14:04 I see 13:14:36 I'm suuure it isn't the algorithm. 13:14:54 elliott, well, why don't you calculate the complexity of the algorithm? 13:15:10 also: why not just profile it and see where it spends time. 13:15:20 (if such tools are available for perl) 13:15:41 ...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 Vorpal: ...Because it's not my code? 13:16:14 fair enough 13:16:34 kallisti, well, which bit was slow? 13:16:34 kallisti: http://prog21.dadgum.com/52.html 13:16:49 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 The problem is not the language. 13:17:07 (by which I mean implementation.) 13:17:30 elliott: before you preemptively say snide things, consider maybe waiting for a reason to say them. 13:17:58 Nah. 13:18:07 hah 13:18:34 Maybe if it was just snide, rather than snide and factual. 13:19:16 Anyway, Perl's internals are pretty well-optimised, to my knowledge. 13:19:17 http://sprunge.us/fFYM analyze the "algorithm" 13:19:28 kallisti, I would but I can't read perl 13:19:29 if you so desire 13:19:54 oh, then I doubt you can read my perl. :P 13:20:04 kallisti, why not just profile it? 13:20:16 because that doesn't say anything about the complexity. 13:20:24 the profile will tell you that it "takes a while" 13:20:33 kallisti has no idea how profiling works. 13:20:38 indeed 13:20:40 Also, he thinks that algorithm = big-O complexity. 13:20:48 ? 13:20:56 no 13:20:59 that algorithm is not 13:21:01 big-O complexity 13:21:04 I say "your algorithm is the problem", you say "profiling my algorithm wouldn't tell me its ocmplexity". 13:21:05 it is a seperate entity. 13:21:11 *complexity 13:21:29 Anyway, the repeated substrs look suspicious. 13:21:48 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 elliott, wait, is substr "is string in other string"? 13:22:07 That would be much better, since you could keep a pointer. 13:22:10 Vorpal: No, it's slicing. 13:22:14 ah 13:22:53 perl really looks ugly 13:23:34 I think it is due to the abundance of $ in front of words. 13:23:45 (mostly) 13:24:30 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 as in, is it copy on write (or immutable even) 13:24:47 I'm pretty sure it would need to copy. 13:24:51 I don't know. 13:24:59 because perl strings are not completely immutable. 13:25:04 but... who knows. 13:25:15 http://www.perlmonks.org/?node_id=4688 OK, substr should be the fastest way. 13:25:19 kallisti, how large are your data sets and how much time do they take? 13:26:06 gigabytes. hours. 13:26:22 kallisti, 1 gb? 10 gb? 100 gb? 13:26:37 Anyway, complaining about your language implementation before either (a) analysing the algorithm or (b) profiling should be punishable by firing squad. 13:26:45 Unless it's PHP. 13:26:57 can i just run into a perl room and show the code and say fix this for some anonymous individual? 13:27:05 No. 13:27:08 ok 13:27:20 I can't think of what an inefficient trie implementation would like in Perl 13:27:25 considering that there are 2 data structures. 13:27:32 and references. 13:27:43 kallisti, do you have a really really really slow disk? 13:27:53 I don't really know actually. 13:27:56 (I very much doubt it would be IO-bound) 13:28:11 based on resource meters it would appear to be CPU bound as the disk usage meter never hit max 13:28:15 @hoogle many 13:28:16 Text.ParserCombinators.ReadP many :: ReadP a -> ReadP [a] 13:28:16 Control.Applicative many :: Alternative f => f a -> f [a] 13:28:16 Text.ParserCombinators.ReadP many1 :: ReadP a -> ReadP [a] 13:28:18 @hoogle choice 13:28:18 Text.ParserCombinators.ReadP choice :: [ReadP a] -> ReadP a 13:28:19 Text.ParserCombinators.ReadPrec choice :: [ReadPrec a] -> ReadPrec a 13:28:19 Text.Parsec.Combinator choice :: Stream s m t => [ParsecT s u m a] -> ParsecT s u m a 13:28:38 my hard drive 480 Mbps 13:28:45 according to its description online 13:28:47 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 so hm, very doubtful you have a worse disk than that 13:29:52 kallisti, well that number doesn't mean much if it isn't from a source independent of the manufacture. 13:29:59 manufacturer* 13:30:01 indeed 13:30:05 -!- derdon has quit (Remote host closed the connection). 13:30:17 @hoogle [(Int,a)] -> [a] 13:30:17 Prelude snd :: (a, b) -> b 13:30:17 Data.Tuple snd :: (a, b) -> b 13:30:17 System.Random randomRs :: (Random a, RandomGen g) => (a, a) -> g -> [a] 13:30:20 oerjan: halp 13:30:37 kallisti, anyway I recommend you profile the code, it might help 13:30:44 elliott: What're you after? 13:30:50 kallisti, and also see elliott's suggestions above 13:31:12 Vorpal: it's not even an issue I'm concerned with now, since I already have all the data. 13:31:17 hm 13:31:24 oerjan: halp 13:31:28 What are you looking for? 13:31:39 elliott: unsafeCoerce . return . head . reverse . map snd 13:31:45 this entire discussion was brought about by elliott complaining about my algorithms. 13:32:04 :t unsafeCoerce 13:32:05 Not in scope: `unsafeCoerce' 13:32:06 elliott, one advantage with C code is that it is usually easy to figure out why it is slow. 13:32:43 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 :t sortBy 13:32:57 Hmm, what happens if you unsafeCoerce to Void? 13:32:58 forall a. (a -> a -> Ordering) -> [a] -> [a] 13:33:06 (of course C has a lot of disadvantages as well) 13:33:32 :t Void 13:33:32 Not in scope: data constructor `Void' 13:33:37 elliott: are you looking for something like map snd . sortBy (comparing fst) 13:33:38 eh, 13:33:40 :i Void 13:33:40 I suppose you'd just get some garbage which called itself a Void. 13:33:43 or what 13:33:48 hm guess it doesn't have that 13:34:01 Vorpal: here's the file sizes since you were curious. http://sprunge.us/aOEW 13:34:02 Vorpal, it's not implemented in the standard library IIRC, but you can define it. 13:34:09 Phantom_Hoover, ah right 13:34:22 newtype Void = Void Void 13:34:49 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 s/=/?/ 13:36:21 Vorpal: so, 49 GBs I believe 13:36:38 kallisti, and in total it took a few hours? 13:36:52 oerjan: halp <-- what is that supposed to do? 13:36:55 I generally let it run while sleeping. :P 13:37:04 ahhh.. so this is the random word generating project :D 13:37:08 but yes a few hours. maybe 3-4 13:37:26 itidus21: that's part of it, yes. 13:37:32 you some crazy motherfuckers 13:37:36 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 unless you have >49 GB RAM and load it all into RAM before 13:39:01 which I doubt 13:39:15 no 13:39:16 elliott: i cannot help you when you're not even asking a question 13:39:25 Vorpal: I don't load the individual files into RAM either. 13:39:32 right 13:39:44 kallisti, I know someone who has 32 GB RAM in her desktop though, not so far to 40 GB from there. 13:39:53 err, 49* 13:40:03 :t (uncurry replicate =<<) 13:40:04 forall b. [(Int, b)] -> [b] 13:40:14 elliott: ^ that one fits your type, at least 13:40:19 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 kallisti, huh? 13:40:32 ....except reverse the order that I said those. 13:40:38 while reads line by line. 13:40:47 Vorpal: perl stuff 13:40:50 kallisti, really? That is stupid, it doesn't make sense that it has that effect 13:40:52 fuck perl 13:40:52 oerjan: sorry back 13:40:57 oerjan: i wanted what monqy said yeah :P 13:41:01 Vorpal: that's because you don't know why it is. 13:41:12 newtype Void = Void Void 13:41:14 *data Void 13:41:40 kallisti, oh? 13:41:45 kallisti, why is it then 13:41:47 elliott, one advantage with C code is that it is usually easy to figure out why it is slow. 13:41:47 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 Vorpal: Not true. 13:41:53 True, but that's a Haskell 2010 thing, so the old one is still relevant. 13:41:58 elliott, oh? 13:42:05 Also, this is Vorpal, so making anything implicit is asking for trouble. 13:42:15 Vorpal: Cache locality, blah blah blah, all the things that matter to people who really need optimisation. 13:42:19 Vorpal: http://perldoc.perl.org/perldata.html#Context 13:42:22 C abstracts memory too much, basically. 13:42:26 oh hey, it even uses <> as the example. 13:42:32 wasn't expecting that. 13:42:34 Phantom_Hoover: You realise as soon as you write "import Data.List" you're invalid Haskell 98? 13:42:37 It doesn't even have hierarchical modules. 13:42:49 Also, the parsing rule in 98 that 2010 changed was the one that every implementation had done from the start. 13:43:07 Haskell 2010 is one of the most minor, status-quo language revisions ever. 13:43:12 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 Is there anything /wrong/ with the newtype definition? 13:43:24 Phantom_Hoover: Well, no. But it's ugly. 13:44:13 kallisti, doesn't say anything about for/while there? 13:44:34 Vorpal: oh well... for takes its argument as a list, while as a scalar. 13:44:39 ah 13:44:58 if and while are "boolean context" which is just a special case of scalar context. 13:45:09 kallisti, I'm having problems seeing how <$f> can type as BOTH of those though 13:45:12 the argument to for is going to be list context, obviously. 13:45:19 >_> type? 13:45:25 oh wait 13:45:34 does perl even have a type system? 13:45:34 -!- ais523 has quit (Read error: Connection reset by peer). 13:45:39 not perl 5, no. 13:45:41 well 13:45:42 right 13:45:44 kind of. 13:45:47 dynamic typing? 13:45:56 and lots of implicit casts? 13:46:05 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 a kind of system 13:47:08 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 "casting" isn't really the word. 13:48:09 ouch 13:48:10 you basically have this dynamically scoped variable that every stack frame can access that tells it what its calling context wants. 13:48:20 and then do something different based on this. 13:48:29 ouch, that is just a mess 13:48:44 -shrug- it's pretty well-documented, at least in the standard libraries. 13:48:50 and most CPAN libraries as far as I've seen. 13:48:56 yes but it is an ugly mechanism 13:49:16 and stupid too 13:49:38 it's certainly convenient, if you understand how it works. 13:50:00 maybe 13:50:13 kallisti, anyway would for(my $line = <$f>) even work? 13:50:17 as in, would it run? 13:50:19 yes 13:50:21 hm 13:50:33 kallisti, is <$f> considered a generator expression or something then? 13:51:14 hmmm 13:51:27 I think it's just an operator. 13:51:45 in other words I don't think evaluating <$f> as a list is going to do anything lazily. 13:51:57 but as a scalar it's like a getline function. 13:52:25 this language is crazy 13:52:33 !perl for("test") { print } 13:52:36 test 13:52:50 so yeah your above code will grab the first line and store it in $line, and the iterate exactly once 13:52:56 s/the/then/ 13:53:15 ah 13:53:22 well that makes more sense 13:53:36 kallisti, I though you said it would read the whole file? 13:53:39 because a scalar value in list context is a 1-element list. 13:53:46 it will, if you evaluate it in list context 13:53:49 my $line = <$f> 13:53:51 is not list context 13:53:54 I see 13:53:58 my @line = <$f> 13:54:01 would be, however. 13:54:28 -!- monqy has quit (Quit: hello). 13:55:29 I promise it all makes surprising amounts of sense. 13:55:33 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 unless I misunderstood how $ and @ work 13:56:29 $ and @ are like... variable types. 13:56:42 hm? 13:56:50 but there are more than 2 kinds of values, obviously. 13:56:56 you mean you can do $foo = ... and then later read @foo? 13:57:01 oh, no. 13:57:04 are they different namespaces? 13:57:09 @foo and $foo are different variables 13:57:10 Maybe you meant: do faq ft todo yow 13:57:14 ah 13:57:58 the context arises from the assignment operator, which bases its context on what kind of variable you're assigning to. 13:58:16 @list = ... is list context, $list[0] = ... is scalar 13:58:16 No module "= ... is list context, $list[0] = ... is scalar" loaded 13:58:56 kallisti, and scalar can be anything? integer, floating point, struct, and so on? What about strings? 13:58:57 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 Vorpal: yes strings are scalar. 13:59:10 kallisti, and structs? 13:59:17 well, references. 13:59:27 which can reference hash tables and lists. that's the equivalent of "structs" in Perl. 13:59:38 ouch 14:00:10 kallisti, so can you store lists in lists? 14:00:27 well, you can store references to lists in lists. 14:00:30 lists can only contain scalars. 14:00:30 hm 14:00:37 otherwise all sanity would be lost... 14:00:47 you mean you can do $foo = ... and then later read @foo? 14:00:48 @foo and $foo are different variables 14:00:53 You can do @foo = ... and read $foo, though. 14:01:00 elliott, what does that do? 14:01:09 I thought he said they were different namespaces? 14:01:10 It's maximum index or something. I forget. 14:01:14 so $foo and @foo could coexist? 14:01:15 oh you're thinking of $#foo 14:01:21 Hmm. 14:01:26 kallisti, can $foo and @foo coexist? 14:01:26 I thought $foo was scalar @foo if @foo existed. 14:01:33 don't believe so. 14:01:46 kallisti, so they aren't really different variables then as you claimed 14:02:00 !perl use v5.10; my $x = 2; my @x = (1,2); say @x; say $x; 14:02:00 12 \ 2 14:02:02 no they are. 14:02:17 kallisti, so they can coexist then? 14:02:20 yep. 14:02:20 right 14:03:15 kallisti, so $x is not actually a scalar variable named x, but a variable named $x? 14:03:33 it's a variable named $x that holds a scalar value 14:03:37 hm 14:03:44 the sigil does enforce a constraint on its value. 14:03:46 ais523 should really step in here, since IIRC kallisti has been wrong about Perl variables at least once. 14:03:56 elliott: I am not wrong here. 14:04:04 (so reassuring) 14:04:15 anyway I just showed that I'm not wrong. 14:04:18 via Perl code. 14:04:32 * elliott was not arguing. 14:04:34 de facto standard, here. come on. 14:04:58 oh you're saying I might mess up maybe or something. 14:05:00 MORE PREEMPTION 14:05:42 Vorpal: the variable *foo contains a symbol table entry with all of the different kinds of foos. that's always fun. 14:05:48 it's not commonly used in perl 5 though, now that there's references. 14:06:15 ouch 14:06:55 *foo was basically how you did referency back before references existed. 14:08:34 !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 ​\ SCALAR(0x7f562d13cb98) 14:08:43 oh hmmm 14:09:08 kallisti, that wouldn't work like a pointer anyway? 14:09:57 *foo is like a table of references 14:09:57 "Russian composer, singer and recently a record producer. Also an actor in one movie. 14:09:58 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 references work like pointers. 14:10:02 I thought it was a joke but it seems to... not be. 14:10:11 elliott: cool 14:10:24 http://en.wikipedia.org/wiki/Dmitry_Malikov 14:10:25 https://github.com/dmalikov 14:10:35 Vorpal: references is one of the nice things about perl compared to ruby and perl, I'd say. 14:10:38 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 "USELESS PATHETIC WRONG" 14:10:57 "USELESS PATHETIC WRONG" is a really good project description. 14:10:57 Yes. 14:10:58 kallisti, well, I don't like python and I never used ruby 14:11:00 so *shrug* 14:11:18 kallisti: Yeah, Perl is nicer than Ruby and Perl. 14:11:23 kallisti, perl looks worse than python though. At least python code doesn't look inherently ugly 14:11:31 elliott: is that... oh that wasn't sarcasm was it. 14:11:35 elliott, perl is nicer than perl? 14:11:42 elliott, typo or intentional? 14:11:49 oh 14:11:50 lol 14:12:01 * kallisti should proofread more 14:12:03 s/perl/python/ 14:12:16 "references is one of the nice things about python compared to ruby and perl, I'd say" 14:12:20 kallisti, oh right you did that typo too, I read it as python though 14:12:21 Way to go, you broke it some more 14:12:21 yes 14:12:44 * elliott desperately tries to find evidence that this guy is actually that guy. 14:12:51 elliott: ask him 14:12:54 best evidence 14:13:08 kallisti: That would be so awkward. 14:13:21 "hi are you really the guy" "yes" "cool!" 14:13:22 * 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 I mean there could be another person with the same name 14:13:46 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 Vorpal: http://stackoverflow.com/users/570689/ 14:14:16 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 elliott, well, that is possible, who knows 14:15:16 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 well he is russian 14:15:39 kallisti, so you don't like Lisp? 14:15:40 "WTF?! This is such a joke, I hope:) Dvitry Malikov - a programmer." 14:15:40 Vorpal: this is probably because I've been programming way too much perl. 14:15:50 Vorpal: I like lisp, but I do find it hard to read. 14:15:52 (Translating of "WTF?! Это такой прикол, я надеюсь :) Двитрий Маликов - программист.", a Tweet followed by a link to the profile.) 14:15:55 *Translation 14:16:03 OK, I'm satisfied, it's not him :P 14:16:08 Probably some other guy with the same name. 14:16:10 Making a joke. 14:16:18 But it really should be him. 14:16:29 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 i want to hear dmitry now 14:16:47 to youtube 14:16:56 kallisti, personally I prefer a language with some amount of syntax that is between lisp and perl 14:17:07 so, Haskell? :> 14:17:13 well yes that is a nice one 14:17:32 kallisti, syntax amount between lisp and perl covers quite a few languages though 14:17:39 yes quite a "few" 14:17:50 kallisti, probably even "most" 14:18:01 yes they're pretty much on opposite ends there. 14:18:06 indeed 14:18:31 Perl 6 trumphs Perl 5 in syntax though. 14:18:36 possibly 14:18:38 in terms of "amount" 14:18:42 whatever that means. 14:18:44 right 14:18:57 I guess grammar rules. 14:18:59 -!- MSleep has changed nick to MDude. 14:19:02 kallisti, well, it isn't a well defined concept, I can't give you a number 14:19:11 but arguably you understood what I meant 14:19:15 yes. 14:19:27 perl 6 actually has useful syntax though 14:19:33 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 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 there's a system to it and it's also pretty messy. 14:21:14 Vorpal: It's much more consistent. 14:21:18 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 http://www.youtube.com/watch?v=tiylH4HIb2A this is dmitry singing 14:21:42 elliott, well that is good 14:22:03 the Perl 6 spec gives me a headache... 14:22:05 the crowd resembles grass swaying in the wind 14:22:13 kallisti, oh? 14:22:13 which is kind of unusual 14:22:38 itidus21, yes usually crowds resemble crowds 14:24:06 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 "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 uh.... this is new? 14:24:32 I guess maybe Perl 5 borrowed it from Perl 6 or something. 14:24:34 not unlikely. 14:24:40 It did. 14:24:54 A large number of Perl 5 features are. 14:26:00 when was perl 5 released, as in 5.0 14:26:45 ais523, there? 14:27:11 elliott: can you explain why $@ iterates over a filehandle 14:27:14 guess not 14:27:15 as in $@f 14:27:26 er @!f 14:27:30 ... 14:27:33 @$f 14:27:34 Done. 14:27:38 yes. done. 14:27:41 what did it do? 14:27:46 no idea. 14:28:00 @help $f 14:28:00 help . Ask for help for . Try 'list' for all commands 14:28:20 @$a 14:28:20 Maybe you meant: . ? @ bf do faq ft id map pl rc v wn 14:28:25 @$f 14:28:25 Done. 14:28:27 huh 14:28:40 oh it tries to match around typos right? 14:28:47 @helpp 14:28:47 help . Ask for help for . Try 'list' for all commands 14:28:50 yeah 14:28:57 so it could be anything 14:29:31 kallisti, it could be anything, you could have launched a nuclear missile 14:29:40 cool 14:31:05 ...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 @bf 14:32:35 Done. 14:32:38 thought so. 14:32:50 @13ijwd 14:32:50 Unknown command, try @list 14:32:52 oerjan, phew, the Earth is afe 14:32:53 @ijwd 14:32:53 safe* 14:32:57 @sld 14:32:57 Maybe you meant: bid id pl slap src 14:33:02 ah nice. 14:33:04 Vorpal: no 14:33:07 I wasn't 14:33:08 * kallisti should implement this in his bot. 14:33:17 does your questions still stand? 14:33:21 ais523, well now you are: I have a java question. 14:33:21 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 and yes 14:34:22 oerjan: @$a is, in C notation, *(array*)scalar_a 14:35:01 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 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: can you explain why $@ iterates over a filehandle 14:35:28 in what 14:35:31 (assuming I calculated where it is) 14:35:38 Vorpal: I'd guess there's some sort of relevant input stream variant 14:35:40 elliott: perl 6 14:35:42 try checking the API 14:35:45 ais523, a socket atm 14:35:48 also it's @$ actually 14:36:01 Vorpal: there's probably a wrapper that you can wrap around arbitrary input streams 14:36:04 kallisti: well @foo must be a list and a filehandle is presumably a scalar 14:36:07 with operations like readInt and readFloat 14:36:12 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 ais523, I'm just not sure how to do what is basically *((float*)&foo) in java 14:36:29 Vorpal: ais523 has answered your question 14:36:31 right 14:36:35 elliott: @$fh looks to me like a dereference. but I'm guessing it's not. 14:36:45 elliott, I'm lagging a bit here 14:37:07 elliott, he answered it just two seconds before I wrote that last line 14:37:21 I do have 8 seconds lag though accoding to my irc client 14:37:28 having a bit of problem with my connection today 14:40:43 -!- Jafet has joined. 14:43:02 Vorpal: DataInputStream may be what you're looking for; although it uses its own serialisation rules, not necessarily native byte order 14:43:17 hm 14:43:30 ais523, and for outputting I assume there is DataOutputStream? 14:43:38 I guess so, although I haven't checked 14:43:47 ais523, thanks :) 14:44:00 Vorpal: 14:44:00 longBitsToDouble 14:44:00 public static double longBitsToDouble(long bits) 14:44:01 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 If the argument is 0x7ff0000000000000L, the result is positive infinity. 14:44:02 If the argument is 0xfff0000000000000L, the result is negative infinity. 14:44:04 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 there's also ObjectInputStream that also serialises and deserialises primitives, but it uses the same rules 14:44:24 elliott, need float not double 14:44:25 but sure 14:44:38 elliott: I was just about to mention that; DataStream says that it uses the same rules as longBitsToFloat/bitsToDouble 14:44:47 for representation 14:45:03 Vorpal: http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/Float.html#intBitsToFloat(int) 14:45:06 lol, 1.4.2 14:45:10 ais523: Oh. 14:45:14 Vorpal: Then it's IEEE. 14:45:18 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 of course a float or a double is IEEE 14:45:38 elliott: apparently, the representation it uses for characters is "modified UTF-8", which sounds a little scary 14:45:40 Even mcmap has manual IEEE encoding/decoding code. 14:45:49 elliott, why? 14:45:53 Write once, run anywhere my ass. 14:45:58 it could just... cast 14:46:02 Vorpal: Um, for non-IEEE platforms? 14:46:05 right 14:46:08 It uses the casting method on IEEE platforms. 14:46:14 You have to explicitly opt for the portable method. 14:46:17 I don't think anybody has. 14:46:24 someone wrote code for a non-IEEE platform? 14:46:29 Yes, fizzie. 14:46:31 I told him to. 14:46:32 why 14:46:34 It's in config.h. 14:46:39 (The setting, that is.) 14:46:43 Vorpal: Because non-IEEE platforms! 14:46:45 elliott, it isn't as if I can think of any non-IEEE platform at all 14:46:56 mcmap is portable, dude. Portable. 14:46:59 I mean x86 has long double sure, but double and float are IEEE 14:47:04 I'm dead sure there is a platform which can do SDL and glib that doesn't have IEEE floats. 14:47:11 elliott, which one? 14:47:38 -!- Jafet has joined. 14:48:23 Vorpal: Well, it might not be implemented. 14:48:30 But I can CONCEIVE of such a platform. 14:48:52 its called itidus's platform of DOOM 14:49:07 elliott, right 14:50:22 elliott, all modern architectures I know of either have IEEE hardware floats or no hardware floats. 14:50:34 and software floats tend to be IEEE ones 14:50:38 -!- Jafet has quit (Read error: Connection reset by peer). 14:50:43 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 itidus21, :D 14:51:08 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 elliott, does it support SDL and glib? 14:51:22 Vorpal: See, you might want to mcmap on a UNIVAC. 14:51:26 Vorpal: Well, I'm sure it _could_. 14:51:33 We're not tied to any particular SDL or glib implementation, just the API. 14:51:41 elliott, I'm sure it would be terribly slow 14:51:55 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 IBM. 14:52:02 Gotta support IBM. 14:52:03 -!- Jafet has joined. 14:52:10 elliott, "in addition to" 14:52:10 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 Vorpal: OK, http://en.wikipedia.org/wiki/Cray_SV1 14:52:16 Vorpal: 1998. 14:52:18 sure 14:52:25 I'm sure it can run mcmap. 14:52:27 Networking, maybe not. 14:52:34 Also it probably can't run Unix. 14:52:41 So you might need to port SDL and glib. 14:53:04 "The SV1 was backwards compatible with J90 and Y-MP software, and ran the same UNIX-derived UNICOS operating system" 14:53:13 elliott, unix-derived 14:53:14 so hm 14:53:30 Vorpal: They probably have a really shitty libc; also we need C99. 14:53:37 But MAYBE. 14:53:39 what do you use C99 for? 14:53:48 What do you use C89 for? 14:54:02 elliott, I meant, why do you need C99 rather than just C89 14:54:16 Why do you need C89 rather than just K&R? 14:54:33 for S&G 14:54:48 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 What? 14:55:31 ^shits and giggles 14:55:45 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 in the case of mcmap that is 14:56:09 itidus21, and yes this is rather funny 14:56:59 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@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 mkdir build 14:57:15 CC posix.c 14:57:15 In file included from posix.c:14:0: 14:57:15 types.h:67:1: error: expected identifier or ‘(’ before ‘/’ token 14:57:17 [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 make: *** [build/posix.o] Error 1 14:57:23 ais523: indeed 14:57:31 elliott, fuck gcc errors :D 14:57:38 Vorpal: // FIXME: Should we transform alpha too? 14:57:39 is the line. 14:57:42 aaah 14:57:51 elliott, so line comments then 14:57:53 There's also a ton of declarations in for loops. 14:57:54 that's a reasonably good error message 14:58:01 And reasonable shit like that, rather than bunching them all at the start of a function. 14:58:04 tells you exactly what character was out of place 14:58:11 I think we also use { .foo = ... }. 14:58:14 Yes, we do. 14:58:16 Quite a lot, even. 14:58:21 ((struct foo){ ... }) mainly. 14:58:22 elliott, indeed 14:58:41 elliott, sensible reasons :) 14:59:08 Oh, we did use nested functions, but don't any more. 14:59:22 Those aren't standard at all. 14:59:29 indeed 14:59:32 they are just gcc 15:05:26 -!- oerjan has quit (Quit: Later). 15:05:33 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 Vorpal: oh, haha, be careful not to hit an infamous bug/design error in Java's stdlib 15:06:02 ais523, oh? 15:06:06 let me check what I did in jettyplay 15:07:22 ais523, I just need to blit a bitmap to a jframe basically :) 15:07:23 Vorpal: Why are you using Java, why are you drawing a bitmap with Java 15:07:30 elliott, because of university 15:07:36 elliott, I would not use java if I could avoid it 15:07:58 Can't you use vector stuff rather than blitting a bitmap or w/e 15:08:07 oh, and the answer is, I avoided the image stuff like the plague 15:08:21 Vorpal: basically, the standard way to do that sort of thing involves BufferedImage 15:08:33 but repeatedly redrawing images with that gives a memory leak 15:08:38 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 you guys remember AOP? 15:08:44 (very much simpler than worms though) 15:08:45 I sure don't.. 15:08:56 Vorpal: You're writing an AI that operates directly on a screen-scraping? 15:08:56 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 Vorpal: Or what? 15:09:23 elliott, no? I'm writing the client for this multiplayer game. 15:09:38 Vorpal: Why is your output image your in-game representation 15:09:42 Presumably there's a rendering step 15:09:46 From data structures -> image 15:10:02 It'd be easier to use whatever drawing API Swing has directly. 15:10:31 elliott, you realise how worms work right? the non-3D versions 15:10:38 elliott, which is that your terrain /is/ an image 15:10:46 destructible too 15:10:57 Yes, I know how Worms works, thank you very much; I daresay I've played it more than you have. 15:11:03 elliott, probably 15:11:21 I wouldn't represent it as an image I mutate to destruct parts of it, but whatever. 15:11:39 elliott, and thus I need to draw the terrain, plus some players, plus some health bars and so on 15:11:49 so yes there is a bit of rendering 15:12:06 Vorpal: anyway: http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4014323 15:12:19 comments say that the bug was only partially fixed even though Sun claimed to deliver a fix 15:12:22 ais523, hm so what to do instead? 15:12:24 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 elliott: hmm, I probably would represent Worms terrain as a bitmap 15:12:41 although I'm not sure if it would directly be an image 15:12:47 probably just a collidable/noncollidable mask 15:13:16 ais523, indeed, that is basically 1-bit alpha though 15:13:29 no, it's a mask 15:13:34 kallisti: You should rarely use Sequence. You should never use Array. 15:13:43 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 so... Map? 15:13:53 kallisti: The choice should be between Vector or a Map-alike. 15:14:10 I would use a storable vector, but a HashMap would work too. 15:14:11 ais523, indeed, which is kind of the same effect alpha has, just that alpha is stored interleaved with the image 15:14:27 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 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 I suspect there are other efficient algos 15:14:32 ais523, anyway what should I do to avoid said bug? 15:14:37 I considered Map but I was under the impression the Sequence had similar complexity characteristics to Map. 15:14:44 Vorpal: there's some advice in the thread, but I haven't personally tried it 15:14:46 for linear sequences of things. 15:15:04 ais523: Why are you telling me this? 15:15:12 Deewiant: Do it anyway, kallisti will inevitably produce something terrible. I mean, uh. 15:15:23 (Performance in which sense?) 15:15:28 oh, and the answer is, I avoided the image stuff like the plague <-- doing what instead? 15:15:29 I'd rather go improve stockfish or something 15:15:30 well no I don't intend to write an AI just yet 15:15:32 elliott: I thought it was vaguely relevant 15:15:36 I'm just going to write the server program first. 15:15:44 Vorpal: rendering the entire thing with graphical primitives and text-drawing primitives 15:15:46 Deewiant: Who the fuck works on other people's code? 15:15:47 for a chess variant. 15:15:49 ais523, ah... 15:15:53 because that works quite well for a terminal 15:16:02 ais523, I guess there are SDL bindings for java... 15:16:02 probably not so well for other programs 15:16:08 http://www.google.co.uk/search?sourceid=chrome&ie=UTF-8&q=sdl+java 15:16:19 elliott: Vector has a lot of modules... which ones besides Data.Vector are worth looking at. 15:16:31 kallisti: http://hackage.haskell.org/package/vector 15:16:37 An efficient implementation of Int-indexed arrays (both mutable and immutable), with a powerful loop optimisation framework . 15:16:37 It is structured as follows: 15:16:37 Data.Vector 15:16:37 Boxed vectors of arbitrary types. 15:16:37 Data.Vector.Unboxed 15:16:38 Unboxed vectors with an adaptive representation based on data type families. 15:16:40 Data.Vector.Storable 15:16:42 Unboxed vectors of Storable types. 15:16:44 Data.Vector.Primitive 15:16:46 Unboxed vectors of primitive types as defined by the primitive package. Data.Vector.Unboxed is more flexible at no performance cost. 15:16:49 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 Data.Vector.Generic 15:16:49 elliott: ....... 15:16:51 Generic interface to the vector types. 15:16:53 Each module has a Safe version with is marked as Trustworthy (see http://hackage.haskell.org/trac/ghc/wiki/SafeHaskell). 15:16:54 ais523, so, there is nothing mentioned there since 2004, I guess that might mean the bug is fixed? 15:16:56 This snarky copy-paste brought to you by the power of reading. 15:17:00 ais523, I'm using JDK 7 so 15:17:04 Vorpal: it isn't 15:17:10 Deewiant: Just a tad hubristic 15:17:16 huh, strange the bug has no activity then 15:17:17 elliott: I was just on that page. weird, huh? 15:17:20 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 ah 15:17:27 kallisti: You evidently didn't read it, because it told you exactly what the relevant modules were for. 15:17:28 even though it was only a partial fix 15:17:30 I see 15:17:33 And I previously even gave you a recommendation of which kind to use. 15:17:33 apparently, it was even worse a while ago 15:17:35 ais523, that is a jerk move 15:17:45 Vorpal: no, that's an automated bug database maintenance move 15:17:48 ah 15:17:50 elliott: it doesn't say anything about the Fusion stuff. 15:18:05 ais523, oh well, I guess I might just use SDL or such 15:18:18 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 elliott: I'm just too competitive, I'd be annoyed/lose interest if it ends up being too poor 15:18:22 (It does.) 15:18:50 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 elliott: you are more trusting than I.. :P 15:19:42 Vector looks good though. 15:19:51 I think this is what I want. 15:20:08 elliott: Exactly, which is why I figured I'd rather drop it 15:20:20 ais523, doesn't jframe have some surface I could draw directly to hm? 15:20:26 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 somehow stuff must be able to draw to it, I mean the existing components 15:20:39 unfortunately it doesn't appear to have an Ix-like thing 15:20:41 Vorpal: you don't draw directly to jframe ever, you draw to a panel you put inside the frame 15:20:49 so I can't use tuples to index a 2D Vector :( ah well 15:20:58 At least without spending a /lot/ of time on it, and I don't think I have enough interest :-P 15:20:59 ais523, okay so does the panel have a surface I can draw a bitmap to directly? 15:21:01 and you can easily get a Graphics for a JPanel, for the purpose of drawing on 15:21:13 right 15:21:18 then I could just blit to it I presume 15:21:20 Vorpal: the problem's that you have to go through Graphics' methods; or in practice, Graphics2D's methods 15:21:29 ais523, can't draw a bitmap? 15:21:32 (the Graphics you get is declared as a Graphics, but is always actually a Graphics2D; I consider this an API mistake) 15:21:33 hm 15:21:49 ais523, as opposed to Graphics1D? 15:21:59 unfortunately it doesn't appear to have an Ix-like thing 15:22:10 kallisti: Just define your own indexing/update functions, takes about 3 seconds. 15:22:16 Vorpal: nah, Graphics2D is just a particular specialisation of Graphics 15:22:17 Ix is way overcomplicated. 15:22:19 elliott: that's the idea. 15:22:23 That's one reason Vector is nicer :P 15:22:28 kallisti: Alternatively, use repa 15:22:32 kallisti: Which is based on vector 15:22:43 ais523, hm there is drawImage, or does that one have the issue mentioned? 15:22:47 I'd tout the automatic parallelism, but that's sort of irrelevant when you have 64 cells. 15:22:52 indeed. 15:22:57 Vorpal: there is drawImage, and it does have the issue mentioned 15:23:00 elliott: UNLESS I END UP WITH AI 15:23:01 ah 15:23:06 Also it can only store predefined types, more or less. 15:23:10 You can write instances but it's a pain. 15:23:14 ais523, well that creates some issues 15:23:21 damn 15:23:24 Well, hmm 15:23:27 Yeah, it is 15:23:35 you can get around it by only using the one BufferedImage, and mutating it 15:24:02 and BufferedImage has a method that gets you a WritableRaster, which is probably what you want 15:24:11 ais523, ah okay 15:24:17 simple enough then 15:24:51 a bit annoying, but simple enough 15:25:19 @m 15:25:19 Maybe you meant: map messages messages? more msg . ? @ v 15:25:36 @ms 15:25:36 Not enough privileges 15:25:43 @mssa 15:25:43 Not enough privileges 15:25:44 @mssag 15:25:45 Not enough privileges 15:26:00 @massage 15:26:00 You don't have any new messages. 15:26:02 @massages 15:26:02 You don't have any new messages. 15:26:53 Vorpal: basically, the problem is that drawImage is lazy, and there is no strict version 15:27:04 and a lazy drawImage is necessarily going to leak memory in the general case 15:27:19 actually, I vaguely fear it leaks memory even if you keep redrawing the same image, just less so 15:27:40 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 video was really invented for games 15:29:27 ais523, so what is the proper solution to this? 15:29:40 ais523, not using swing? 15:29:40 itidus21: i 15:29:57 Vorpal: you can get around it by only using the one BufferedImage, and mutating it and BufferedImage has a method that gets you a WritableRaster, which is probably what you want 15:30:08 elliott, " actually, I vaguely fear it leaks memory even if you keep redrawing the same image, just less so" 15:30:17 elliott, it was in reply to that line 15:30:23 i know that ralph baer doesn't like the term video games 15:30:44 Vorpal: both Swing and AWT have the same problem, as they both use Graphics/Graphics2D 15:30:50 right 15:30:58 it's possible there's some less popular rendering toolkit that doesn't 15:31:18 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 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 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 Vorpal: SWT might have something. 15:32:19 That's at least popular. 15:32:33 elliott, the downside: I don't know the API of that. At all. 15:32:50 Qt Jambi? :p 15:32:57 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 I would be surprised if your university would be happy with having to install an SDL binding thing. 15:33:09 elliott, I have no clue what you mean 15:33:21 Vorpal: That's because you're unable to use Google. 15:33:22 elliott, I used SDL for another course (from C then) 15:33:29 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 Vorpal: Java has a 3D library, but I'm not sure if it has anything to do with OpenGL or not 15:33:48 elliott, in that case it was just a case of dropping SDL.dll into the build dir 15:33:50 Vorpal: You can't just bundle JNI stuff in a .jar, can you? 15:34:01 and it is this definition that i think is truely invented for games 15:34:04 elliott: and even if you could, someone marking the work would be insane to run it 15:34:05 elliott, can't you? What does minecraft do then? 15:34:13 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 lwjgl 15:34:22 "lwjgl"? 15:34:25 Or http://en.wikipedia.org/wiki/Java_OpenGL, I suppose. That's a JSR. 15:34:26 elliott, which uses JNI, right? 15:34:31 ais523: lwjgl 15:34:33 Vorpal: Well, eys. 15:34:33 yes. 15:34:34 lets wiki java gl 15:34:37 Vorpal: Minecraft downloads natives. 15:34:43 Have you ever paid attention to the updater? 15:34:51 elliott, indeed, I could just bundle SDL.dll surely? 15:34:55 or whatever 15:34:55 It's also the reason you need -Djava.natives=... or w/e. 15:34:59 right 15:35:02 You can't start Java normally and use it. 15:35:13 so a .bat file as well then 15:35:54 elliott, anyway, I guess I'll just do the mutate-bufferedimage thingy and hope for the best 15:35:58 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 but nobody there really knows enough about it to talk coherently about it 15:36:12 heh, I just use Google to search SO 15:36:42 ais523: i have tried to ponder the real question of worms terrain 15:37:12 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 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 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 ais523, because obviously it is going to draw once the screen refreshes and so on 15:38:24 -!- Jafet has joined. 15:38:50 which would force an evaluation if it was the haskell sense of lazy 15:39:06 elliott: well, it's more like "backgrounded" 15:39:11 when you call drawImage, it returns immediately 15:39:15 ah 15:39:23 then the image starts loading in a different thread, and calls an ImageObserver as more parts of it load 15:39:25 sounds like java from here :p 15:39:38 and the screen updates as that happens 15:39:41 ais523, so how does this cause a memory leak, wouldn't the resources be freeded once the image is actually drawn? 15:39:45 itidus21: Isn't Baer the guy who wrongly claims to have invented the video game? 15:39:48 Vorpal: they aren't, that's the problem 15:40:08 ais523, so it keeps a reference around? 15:40:10 huh 15:40:12 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 elliott: well.. was spacewar before baer? 15:40:29 ais523, couldn't you just look into the openjdk source? 15:40:30 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 to figure it out 15:40:33 i guess it probably ways 15:40:35 then it needs to start backgrounding both 15:40:38 itidus21: Tennis for Two was. 15:40:45 Vorpal: hmm, I typically have problems finding specific bits of Java library source 15:40:50 And yes, Spacewar! was. 15:40:55 As were several others: http://en.wikipedia.org/wiki/First_video_game#History 15:41:01 I've tried before now, it's kind-of luck-based whether Ican find it anywhere 15:41:07 ais523, it obviously needs to draw in the same order as they are submitted 15:41:09 so hm 15:41:13 Vorpal: no, this is Java 15:41:17 hmmm, cool. lazy evaluation of Levenshtein distance is much faster than the regular eager approach. 15:41:25 itidus21: Even Baer's claimed date of the original idea postdates the Cathode Ray Tube Amusement Device thing. 15:41:27 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 ais523, you can't draw transparency out of order, it would result in incorrect blending! 15:41:59 kallisti: You still need to do the dynamic programming yourself: http://www.haskell.org/haskellwiki/Edit_distance 15:42:03 Vorpal: you can, because you're keeping references to all the images around 15:42:06 that is the reason z-buffering doesn't work on transparent polygons in 3D graphics 15:42:09 ais523, hm okay 15:42:10 so you recalculate each pixel when any of the images in the stack loads 15:42:13 Although I suspect you could abstract it out a bit. 15:42:15 do you see where the memory leak comes from now? 15:42:20 yeah 15:42:26 ais523, it is utterly stupid though 15:42:35 well, I'm not disagreeing with you on that 15:42:35 elliott: wow.. that page is really full of trivia 15:42:40 ais523: Couldn't you just block until it's drawn? 15:42:49 they should be congratulated on that 15:42:54 itidus21: Err, not compared to most Wikipedia articles. 15:42:59 elliott: my guess is no, because that'd involve blocking the Swing UI thread, and there's only one of those 15:43:08 and the image loading code probably tries to call into it 15:43:13 ok it's not trivial 15:43:14 ais523: heh 15:43:18 in order to redraw the bit of the image that just loaded 15:43:38 but.. in any normal human's life, the history of video games is useless information :D 15:43:45 elliott: anyway, I'm not convinced that it drops the reference to the image even when it's fully loaded 15:43:50 for reasons I don't fully understand 15:44:09 one might as well say that history is useless 15:44:09 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 rather than focusing on not leaking stacks of metadata 15:44:19 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 heh 15:44:24 which is much smaller and thus less obvious when profiling 15:44:25 for some specific definition of useless 15:44:29 what is useless 15:44:34 blah 15:44:45 ais523, basically a linked list per fragment which is then sorted at the end 15:44:48 ais523: incidentally, I was surprised to learn that there are C->VHDL tools 15:44:52 itidus21: a Perl program that doesn't import anything. 15:44:56 that sounds harder than ICA->VHDL to me :-) 15:44:58 elliott: I wasn't 15:45:01 *:) whoops forgot i was consistentising 15:45:02 ais523, it would mean you don't have to split intersecting polygons and so on 15:45:02 they're on very limited subsets of C 15:45:05 kind of neat 15:45:07 ais523: oh 15:45:09 lame 15:45:10 -!- Jafet has quit (Read error: Connection reset by peer). 15:45:37 elliott: also, the few tools that try to implement larger subsets typically get it wrong 15:45:42 there's a paragraph about this in one of my papers 15:45:55 kallisti: Ah, http://blog.tmorris.net/finding-the-levenshtein-distance-in-scala/. 15:46:05 kallisti: Easily implementable with http://hackage.haskell.org/packages/archive/data-memocombinators/0.4.3/doc/html/Data-MemoCombinators.html. 15:46:05 isn't scala eager? 15:46:24 (e.g. unsafeArrayRange) 15:46:32 ais523: it has optional laziness, as used there 15:46:35 elliott: waaaa what is this magic. 15:46:39 elliott: ah, OK 15:46:41 I was just presenting a nicer implementation than my previously-linked one. 15:46:44 kallisti: What is what magic? 15:46:49 elliott: memo combinators 15:46:59 kallisti: It's trivial. 15:47:02 -!- Jafet has joined. 15:47:04 bool :: Memo Bool 15:47:04 bool f = cond (f True) (f False) 15:47:04 where 15:47:04 cond t f True = t 15:47:04 cond t f False = f 15:47:04 list :: Memo a -> Memo [a] 15:47:06 list m f = table (f []) (m (\x -> list m (f . (x:)))) 15:47:08 where 15:47:10 table nil cons [] = nil 15:47:12 table nil cons (x:xs) = cons x xs 15:47:14 It just uses a trie of bits for integral types. 15:47:26 Relies on the benign mutating nature of sharing that you don't understand because you think seq has side-effects. 15:51:55 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 elliott: yeah I don't understand... 15:52:13 -!- Jafet has quit (Ping timeout: 276 seconds). 15:53:07 kallisti: Indeed. 15:53:38 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 elliott: I also don't understand what it has to do with seq 15:53:55 suffice to say i got sidetracked and never really returned to it 15:54:04 that's weird-looking terrain 15:54:15 same concept as websplat, only using Word documents as the source? 15:54:25 ha 15:54:26 openoffice 15:54:44 kallisti: Because it's the same benign mutation. 15:54:48 i may be on windows but i am using openoffice 15:54:53 -!- Jafet has joined. 15:54:54 itidus21, it isn't really expensive. The reason is that computers are very fast. 15:55:18 elliott: strict evaluation? 15:55:42 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 itidus21, and you end up using the memory anyway 15:56:06 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 ais523: well, that's a way to explain seq, but doesn't define its semantics at all 15:56:41 elliott: right, indeed 15:56:43 ais523: the semantics of seq are incredibly trivial 15:56:50 i think it may have been in here that someone inspired me that bitmapped terrain isn't a panacea 15:56:50 I'm explaning the difference between seq and Memo in terms of magicalness 15:56:51 ais523: seq ⊥ b = ⊥; seq a b = b 15:56:53 or some irc channel 15:56:55 not defining either itself 15:56:58 well, err, no 15:57:04 that's not how Memo works at all 15:57:08 it's unrelated to the pattern-matching 15:57:17 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 I'm not surprised 15:57:29 kallisti: websplat is fun on havenworks 15:57:37 ais523, is there an onRedraw function or such for JPanels? Or am I approaching that from the wrong direction. 15:57:38 that site that doesn't exist anymore? 15:57:40 or is it up now? 15:58:03 itidus21: 253 kilobytes is a tiny amount of memory for an HD screen-sized area. 15:58:11 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 The waiting comment makes no sense, and it's not computationally expensive to work on bitmaps at all. 15:58:32 The two basic operations stuff also doesn't really make sense; the two basic operations are poke and peek, really. 15:58:37 Also, that's not a rant. 15:58:44 :D 15:58:51 Vorpal: I would bet money that Swing is event-based. 15:58:54 Vorpal: in swing, everything happens in response to something 15:58:59 Kerching. 15:58:59 ah 15:59:00 Gimme money. 15:59:06 so that is the approach to take then 15:59:16 -!- Jafet has quit (Ping timeout: 252 seconds). 15:59:17 far more annoying 15:59:23 standard way of drawing something is to override paintComponent 15:59:29 and of course "events" in Java are actually "subclasses" :P 15:59:42 so that whenever Swing tries to redraw it, it ends up calling your custom redraw code 15:59:44 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 ais523, I guess I need to use two threads then to deal with the network... 15:59:46 oh well 15:59:50 kallisti: that's, umm, not even wrong, but it is rather misleading 16:00:00 Vorpal: well, the general rule is that events have to be handled really quickly 16:00:07 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 if you want to do something slow in response to one, you start a new thread 16:00:10 Deewiant: You can't compete against LOVE. 16:00:16 ais523, right, this is much simpler with the main loop approach really 16:00:30 itidus21: Quite a trailblazer. 16:00:36 not really, I actually consider the main loop approach really bad 16:00:37 ais523: how is it misleading? typically the pattern is that you override some kind of interface (occasionally with only one method). 16:00:46 The main loop approach is ridiculous. 16:00:46 often as an anonymous class. 16:00:58 when I'm working with a main-loop-based API, I typically implement an event loop in it 16:01:02 hm 16:01:13 and even then, SDL works by repeatedly calling usleep(1000) in a loop 16:01:13 elliott: I'd compete only against stockfish anyway, I'm not going to pay for better engines 16:01:15 (Callbacks are more ridiculous, though.) 16:01:16 bbl 16:01:18 which is ridiculous 16:01:40 ais523, really? heh 16:01:52 ais523: Err. 16:01:58 Vorpal: not only that, it alternates usleep and gettimeofday 16:01:59 when i discussed my findings, someone then explained to me: 16:01:59 ais523: No? 16:02:03 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 ais523, um... 16:02:09 ais523: mcmap runs with 0% CPU usage most of the time. 16:02:16 elliott: exactly 16:02:21 elliott, usleep would have no CPU usage 16:02:25 Well, OK. 16:02:29 turns out that waking every millisecond is close enough to 0% to be a rounding error 16:02:34 but it really spams the hell out of strace 16:02:39 hah 16:02:44 Nobody run mcmap on a laptop. 16:02:47 and then i discovered alvy ray smith who was insistant that pixels are not rectangles 16:02:55 elliott, I did, but mc is far worse :P 16:02:57 They're not. 16:03:16 -!- PiRSquared17_ has joined. 16:03:18 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 ais523, anyway it is sensible for what SDL is trying to be 16:03:25 i didnt get all the way though 16:03:29 pixels are more like... dots right? 16:03:30 ais523, you are going to do the same sort of stuff for opengl too 16:03:34 kallisti: No. 16:03:35 Vorpal: err, are you serious? 16:03:40 you can see alvy's influence on me in my recent post 16:03:46 it should just wait for the next timed event, or be interrupted by untimed events 16:03:47 kallisti: They're points. 16:03:50 what do you think interrupts are /for/? 16:03:50 ais523, maybe we misunderstood each other 16:03:53 elliott: that's what I meant 16:03:58 "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 if the user asks for a timer, fine, make a timer 16:04:04 elliott: "dot" is the unfancy way of saying "point" 16:04:14 kallisti: "Dot" usually means "little square/circle". 16:04:18 that was how i defined video a few screens up 16:04:19 and then sleep until the next time the timer would run out 16:04:22 elliott: oh, well no, not that. 16:04:44 ais523, well, if you are using opengl you are going to need to keep redrawing, preferably at least at vsync-speed 16:04:53 ais523, doing the same for SDL seems sensible to me 16:05:00 Vorpal: so trigger on vsyncs 16:05:05 rather than polling every millisecond 16:05:21 I'd be very surprised if there weren't an interrupt connected to vsyncs or vblanks 16:05:30 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 and get 30 FPS instead 16:05:44 elliott: but it would be accurate to say that pixels are points that correspond to rectangles, yes? 16:05:50 kallisti: No. 16:06:01 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 I hate you, Google. 16:06:06 my definition of video works for people in a stadium holding up colored panels to form an image 16:07:15 kallisti, pixels are just points? 16:07:33 well, usually with colours 16:07:49 they are kind of useless if there isn't at least one bit of information per pixel 16:07:54 anyway bbl really now 16:08:30 i think the real question is.. what shape are color qualia 16:08:48 do they even have shape? 16:09:32 is the shape uhhh .. potentially variable between concious beings 16:10:14 elliott: ah 16:10:31 itidus21: what 16:10:43 >:-) 16:11:02 ok sorry i will rephrase 16:11:18 what is the nature of the qualia in which the visual field consists 16:11:33 and is it variable between creatures with visual fields 16:11:35 s/concious/conscious/ s/qualia/koala/ 16:12:05 are they points 16:12:11 are they uniform? 16:12:23 oh 16:12:30 -!- Jafet has joined. 16:12:34 are they side by side? 16:12:56 pretty deep, i know.. 16:13:06 noone would question that it's a deep topic 16:13:58 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 *the data from those cells 16:14:31 the data can come from the tongue also 16:14:40 which is pretty confusing 16:14:43 ....I can't see with my tongue 16:14:45 what are you talking about. 16:14:59 also synesthesiates sometimes see sound 16:15:20 the military invented a device which uses the tongue to feed visual info into the brain 16:15:24 also drugs can do fun things to your vision. 16:16:39 id say the system is designed for eye data 16:16:47 but it can recieve data from other sources 16:16:54 yes 16:17:00 much like a word processor can view an executable file 16:17:05 sure 16:17:46 this topic gives me mind numbing headaches 16:18:05 you should learn Haskell instead. 16:18:44 and feeds into subconcious anxieties such as not having free will, or being a machine, or not really existing 16:18:47 all that kind of thing 16:19:07 which i think, is a bit of a lie 16:19:39 anxiety seems to usually be triggered by actual percieved dangers i think 16:19:53 or the rippling effects of past percieved danegrs 16:20:46 having sufficiently damaged you all... i think i should take a chat break 16:22:44 ais523, I'm unable to find the java function that wraps select() 16:23:00 (on multiple sockets) 16:23:01 Vorpal: threads 16:23:16 elliott, what do you do if you have thousands of sockets? 16:23:17 Vorpal: select is far too low-level for this sort of thing 16:23:21 Vorpal: you have thousands of threads 16:23:21 Vorpal: threads 16:23:28 this is stupid 16:23:28 actually, if you have thousands of sockets, select won't actually work 16:23:33 it can't count to a thousand 16:23:33 ais523, sure, epoll 16:23:36 whatever 16:23:50 actually, i believe i was rubbing shoulders with some cults in a chatroom.. and led me to preoccupation with useless things 16:23:53 Vorpal: do you know any languages that aren't imperative? 16:24:03 ais523, yes, erlang, some haskell 16:24:10 noone would question that it's a deep topic 16:24:12 Is this an invitation? 16:24:15 ais523, so java's threads are lightweight enough? 16:24:16 Vorpal: well, what's the equivalent of select in erlang? 16:24:17 hm 16:24:24 ais523, very very lightweight threads 16:24:28 anyway, /nothing/ in Java is lightweight 16:24:31 ais523, but java /is/ imperative. 16:24:33 ais523, so java's threads are lightweight enough? 16:24:36 Java's threads are OS threads. 16:24:38 so it doesn't really matter what you use, it's going to be equally heavy either way 16:24:39 ouch 16:25:04 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 it won't actually /help/ 16:25:12 but it'll make things feel more Javay 16:25:21 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 Vorpal: the vast majority of performance problems with Java, the usual solution is "get more memory" 16:25:55 elliott: its a sign i am going nutso 16:26:05 or on OS X, "tell the JVM it's allowed to use more memory" 16:26:16 ais523, you need that on linux too 16:26:19 ais523, for minecraft at least 16:26:23 Vorpal: is this relevant maybe? http://docs.oracle.com/javase/1.4.2/docs/api/java/nio/channels/Selector.html 16:26:26 ais523, anyway there are computational overheads in thread switching. 16:26:30 hm 16:26:39 kallisti, let me look 16:26:51 hm 16:26:51 as far as I can tell this is how Java does select() 16:27:06 seems a bit complicated but sure, I'll take a look at it 16:27:35 java.nio.* is often a good bet for "more complicated" IO needs. 16:27:42 heh 16:28:13 Vorpal: just click through the subclasses and interfaces and you'll figure it out. :P 16:28:54 Vorpal: http://www.exampledepot.com/egs/java.nio/NbClient.html 16:29:53 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 don't most userspace thread systems work like that? 16:30:33 kallisti, server sockets in this case, but I see there is a link to that as well 16:30:40 kallisti, well you could use only one OS thread 16:31:05 right but do people actually do that? 16:31:29 kallisti, erlang used to do that, way back before multiple CPUs were common. 16:31:41 ah 16:31:42 As a historical interest, Sun JVM pre-1.2 had "green threads" that I think might've been single-core-only. 16:31:56 1.2 went to native OS threads. 16:32:07 green threads are far better IMO. 16:32:29 we need other colours of thread 16:32:33 thousands of OS threads is not a good idea. Tens of thousands of erlang threads is a non-issue. 16:32:36 like indigo threads, for making jeans 16:32:40 heh 16:33:57 -!- ais523 has quit (Remote host closed the connection). 16:34:10 Red threads which are, like, so heavyweight it's not even funny. Takes a minute to even spawn one. 16:34:27 fizzie, I would guess cygwin uses them 16:36:05 also oh god, the selector API looks painful. Less painful than threads though. 16:36:25 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 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 kallisti: the best problems are the ones where the solution isn't immediately obvious upon seeing the problem 16:37:44 yes those are the ones that are actually problems. 16:38:38 i believe the problem with the patent system is that most patents are obvious solutions to obscure problem definitions 16:39:24 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 kind of like slow internet connections are good at preventing movie pirating 16:40:49 -!- Jafet has joined. 16:41:08 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 maybe once it did, but that purpose is long lost 16:42:05 s/an ethical perspective/a society's intuitive ethical perspective/ 16:42:25 kind of like the way the word gay now means blasphemous or mentally ill in some circles 16:42:26 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 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 I guess I could just set all of the relevant cells with a "isDeathWall" boolean... 16:44:19 but maybe there's a better way. 16:44:29 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 kallisti: the bourgeois would tend to possess the rare 16:45:39 whats rare in one place may be common in another place 16:45:55 like air 16:45:59 air isn't very common in space. 16:46:10 hence, ummm 16:46:42 hence when we become asteroid-mining space colonists air will become an economic resource. 16:47:24 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 the possession of diamonds by the bourgeois is more about establishing their bourgeoisness more than wanting a malleable metal 16:47:42 oops i forgot i said diamonds instead of gold 16:47:49 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 itidus21: well most people want gold because it has value. 16:48:10 much like money. 16:48:20 before money became something other than "paper representing gold" 16:48:47 or... after? or... 16:48:51 I don't know why I said before. 16:49:03 `addquote the possession of diamonds by the bourgeois is more about establishing their bourgeoisness more than wanting a malleable metal oops i forgot i said diamonds instead of gold 16:49:07 795) the possession of diamonds by the bourgeois is more about establishing their bourgeoisness more than wanting a malleable metal oops i forgot i said diamonds instead of gold 16:49:23 kallisti: Gold isn't really very useful. 16:49:28 That's why it's such a good currency. 16:49:36 Nobody much wants it for anything else. 16:49:43 so patents represent an asset that a company obtains for doing some work. 16:49:44 It's useful /now/, because we have uses for basically everything now. 16:49:47 they are just assets 16:49:49 elliott: yes but I'm not sure if that's /why/ it's currency. certainly that helps. 16:50:04 Except thulium. 16:50:09 theres no morals or ethics guiding companies to want patents 16:50:19 its just assets for the sake of assets 16:50:26 for whatever uses a company has for assets 16:50:30 s/sake of assets/sake of money/ 16:50:48 I bet money is a good use. 16:51:12 hm I may just represent loops as a structure seperate from the Vector grid. 16:51:35 ok ok my words full of fallacies 16:51:38 so that I can treat them as a group rather than doing gross traversal stuff. 16:51:56 (no one knows what I'm talking about right now....) 16:52:25 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: yes but I'm not sure if that's /why/ it's currency. certainly that helps. 16:52:43 kallisti: If something is really useful, people will be too busy using it to trade it. 16:52:48 elliott: right. 16:53:01 Phantom_Hoover: Yeah, but it's a lot less useful than lots of other things. 16:53:03 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 theres no morals or ethics guiding companies to want patents 16:53:16 its just assets for the sake of assets 16:53:16 for whatever uses a company has for assets 16:53:19 Today itidus21 learned: Capitalism! 16:53:29 elliott: I think gold also became a currency because it was pretty and hard to obtain historically. 16:53:32 kallisti: You're talking about portal chess. 16:53:35 elliott: yes 16:53:44 Also, duh, yes, only scarce resources are valuable. 16:54:37 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 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 i suppose there is always laws in place to protect the investment a company makes 16:55:29 but maybe corporations do business like katamari 16:55:44 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 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 so what i am trying to say here is that, any AI which is easy to program is pointless :)) :)) 16:56:29 kallisti: Be careful about using Vectors. 16:56:29 but presumably in a computer representation you have graphics that allow you to see all the loops. 16:56:35 kallisti, didn't you decide above not to write an AI? 16:56:36 elliott: why's that? 16:56:39 Vorpal: correct. 16:56:45 my purpose was never to write an AI. 16:56:46 >_> 16:56:51 so what are you doing now? 16:56:53 kallisti: Every update requires copying all the data (all the pointers if you used a boxed vector). 16:56:58 if the method of writing an AI is too obvious.. then the AI is too trivial 16:57:02 the game is too easy 16:57:07 writing a server program that connects to clients and implements a game of portal chess. 16:57:17 kallisti: It's probably good if you have 64 elements but not if you have a few hundred. 16:57:26 kallisti, how does portal chess differ from normal chess? 16:57:31 kallisti, I hope it involves a portal gun 16:57:37 elliott: this Vector will, in all likelihood, remain at 0 to 2 elements. 16:57:44 I could just as easily use a linked list. 16:57:50 because that would be awesome to apply on the other side 16:57:58 except that I think I would want random access? not sure. 16:58:03 kallisti: the best problems are the ones where the solution isn't immediately obvious upon seeing the problem i believe the problem with the patent system is that most patents are obvious solutions to obscure problem definitions [...] if the method of writing an AI is too obvious.. then the AI is too trivial 16:58:10 see, there is method to my madness 16:58:15 waahahahahhaha 16:58:37 Vorpal: it involves two pieces that are portals. 16:58:50 Vorpal: which other pieces and projectile abstraction things can pass through 16:59:23 kallisti, oh, less fun than a portal gun (probably saner though) 16:59:56 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 Vorpal: yes considering it's a game of chess. 17:00:13 indeed 17:00:35 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 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 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 itidus21, "because all good things require hard work and commitment" <-- not really, garlic doesn't require hard work as such 17:01:38 hmm... 17:01:39 kallisti, the loop rule being? 17:02:21 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 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 kallisti, ah 17:02:52 another piece is the arrow 17:03:09 which, will redirect the path of the projectile in the direction that it's facing. 17:03:14 ah 17:03:17 kallisti, I see 17:03:21 using these two pieces you can form projectile loops 17:03:24 kallisti, so what happens in the case of a loop? 17:03:28 where the projectile travels indefinitely in a loop. 17:03:32 at which point 17:03:39 it remains as a persistent part of the game state. 17:03:48 oh, I hoped for an explosion 17:03:49 until something in its path breaks the loop. 17:03:58 kallisti, and what effect does breaking said path have? 17:04:09 well, imagine you place an arrow within the loop 17:04:19 immediately a projectile fires from the direction the arrow is pointing 17:04:23 simultaneously breaking the loop. 17:04:27 then you could change it into another loop 17:04:30 yes 17:04:31 with enough arrows 17:04:37 how many arrows do you have 17:04:39 there are only 4 arrows on the board. 17:04:41 2 per player 17:04:48 but yes that's possible. 17:04:49 right 17:04:58 the main purpose would be to allow arrows to quickly capture pieces. 17:05:08 a loop is immediately a danger if an arrow is nearby 17:05:12 -!- Jafet has quit (Ping timeout: 252 seconds). 17:05:48 kallisti, do the pieces have hitpoints or are cannon shots one-hit kills? 17:06:00 they capture pieces 17:06:05 it's not too removed from chess in that sense. 17:06:09 the goal is to capture the king. 17:06:15 hm 17:06:26 with capture you don't mean traditional chess capture? 17:06:29 the pieces are arranged as in chess. 17:06:43 * Vorpal imagines chess with HP and headshots. 17:07:01 Vorpal: hmmm, well no it could work that way. 17:07:01 headshots 17:07:12 it would be against the rules for a king to walkinto the line of sight of a cannon, for example. 17:07:18 and if the king has no valid moves 17:07:21 then that's checkmate 17:07:24 right 17:07:41 kallisti: you need a concept artist 17:07:57 someone like yoshitaka amano or akiman 17:08:02 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 * Vorpal imagines chess with HP and headshots. 17:08:20 Phantom_Hoover, yes? 17:08:32 Vorpal: D&D kind of already works like this if you play with a grid map. 17:08:45 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 kallisti, hm kind of, except more than one unit move per turn 17:08:59 hmm 17:09:02 (All the school computers have Halo because.... I don't know.) 17:09:09 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 Phantom_Hoover, awesome 17:09:22 also there's some rule issues to decide. 17:09:29 I currently have, I think, 3 variant rules. 17:09:34 Phantom_Hoover, and yes that is strange 17:09:37 and I should probably pick a "standard" rule. 17:09:43 concerning loops and how they interact with portals. 17:09:46 ok, what about chess on a finite euclidean plane 17:09:58 itidus21: what are the pieces? points? 17:10:03 what are "turns" in a continuous space. 17:10:14 the pieces could be circles :D 17:10:19 centered on points 17:10:25 It's an RTS, I assume. 17:10:42 otherwise turns would have to be discrete steps 17:10:48 Although one with infinitely fast thinking for each player. 17:10:50 itidus21, and you could do collision tests to see if you capture 17:10:51 :D 17:10:55 kallisti: turns involve translating from one point to another point with some given min/max 17:10:57 collision checks* 17:11:08 Vorpal: the current issue is that it's not clear how portals should interact with loops 17:11:14 and uhmm.. 17:11:17 because the capture rules for portals are direction-based 17:11:30 kallisti, hm... explode 17:11:34 kallisti, definitely explode 17:11:37 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 kallisti, causing AOE damage 17:11:55 I'm seeing this as basically DEFCON except chess rather than war. 17:11:56 in the 3x3 centered on the portal 17:12:01 Vorpal: no that's what happens when a portal tries to pass through its sister portal. :P 17:12:11 Phantom_Hoover, wow that sounds awesome 17:12:13 one explosion rule is enough 17:12:16 kallisti, aww 17:12:27 kallisti, you can never have too many explosions 17:12:36 "WHITE LAUNCH DETECTED" 17:12:37 you could actually use the explosion to your advantage 17:12:41 Phantom_Hoover, :D 17:12:49 if destroying both your portals is worth the outcome 17:13:00 "E5 HIT, 1 DEAD" 17:13:04 kallisti what happens if the king is in the exploded area? 17:13:16 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 because he could get exploded. 17:13:46 Phantom_Hoover, and then we could do a fallout-style followup :D 17:14:15 Climbing up the ruins of the black queen? 17:14:18 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 This looks so awesome in my head. 17:14:23 Phantom_Hoover, that sounds dirtly 17:14:26 dirty* 17:14:38 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 (at least if another chess piece does it) 17:14:49 Phantom_Hoover, and yes, same here 17:14:51 — Arvid "I couldn't find any SCSI porn!" Norlander. 17:15:05 however another class of loops are "bidirectional"... they oscillate back and forth between two endpoints. 17:15:06 Phantom_Hoover, where did I say that was a bad thing? 17:15:23 Phantom_Hoover, anyway I did that to prove that rule 34 was incorrect 17:15:24 There was a tangible sense of disappointment there. 17:15:51 kallisti, heh 17:15:52 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 Just because you can't find something is not proof of it not existing. 17:16:19 these are the 3 rule possibilites. 17:16:25 kallisti, I would suggest oscillation at a fixed frequency. Makes it harder to keep track of the game for the players 17:16:38 Vorpal: so you want a turn-based game to have a real-time element? 17:16:46 fizzie, indeed. But it wasn't within the first few pages of google image search results 17:16:47 I suppose that's possible on a computer. 17:17:04 fizzie, it is very unlikely it exists though at least 17:17:23 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 kallisti, sure. 17:17:31 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 this sounds really... wonky to me. it doesn't make any sense in a turn-based strategy game. 17:17:48 and it's very implementation dependent. 17:17:50 kallisti, I like really screwy chess variants :P 17:17:59 how much time passes in piece movement? 17:18:00 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 is it instant? 17:18:15 -!- azaq23 has quit (Max SendQ exceeded). 17:18:32 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 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 kallisti, you can then time your move to take advantage of it 17:19:00 because it is strategically equivalent to the real-time-frequency thing you're suggesting 17:19:05 without this silly timing thing involved. :P 17:19:15 kallisti, I like silly chess variants :P 17:19:48 i wonder if this idea is genuinely innovative 17:19:59 Vorpal: also it complicates implementation for... basically no gain. 17:20:05 true 17:20:07 i have definitely never heard of a chess game based on euclidean geometry 17:20:26 (but then i am clueles about chess) 17:20:44 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 kallisti, anyway I suggest you add missiles as well, with a cooldown 17:20:53 Vorpal: ..... 17:20:57 no, you're banned from ideas now. 17:21:01 kallisti, why? 17:21:11 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 kallisti, anyway card games have that sort of things 17:21:17 kallisti, and they are turn based 17:21:19 the 50/50 rule is pretty much bad to me. randomness in chess? nothx 17:21:34 but I see all 3 as viable rule variants 17:21:45 so I'll probably list all of them in the official rules. 17:21:47 fizzie, eww 17:22:43 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 heh 17:22:59 directly inbetween the two endpoints is 50/50 regardless of direction. 17:23:09 kallisti, anyway I think randomness in chess could be interesting 17:23:23 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 kallisti, it has to be done carefully though 17:24:00 as all randomness in games 17:24:14 Vorpal: it's basically a corner case. 17:24:21 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 it's a very specific situation in a very specific rule. 17:24:41 itidus21, what about adding gravitation causing bent paths? 17:24:42 :D 17:24:52 whoa! 17:24:55 (wow that must be one fat knight) 17:25:09 yes .. what about adding gravitation 17:25:11 Vorpal: I can actually think of a lot of different loop configurations that you could create 17:25:19 kallisti, nice 17:25:26 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 this makes them a cannon in their own right 17:25:42 they just turn to fire. 17:25:50 Vorpal: chess with spaceships which can make an impulse thrust in a given direction once per turn 17:25:59 kallisti, anyway you could have it oscillate once per turn or such 17:26:03 around planets 17:26:04 kallisti, that might be interesting 17:26:08 Vorpal: hmmmm maybe 17:26:17 it would be hard to visualize it 17:26:23 graphically 17:26:30 hm 17:26:54 unless the projectiles are like huge beams with clearly labelled arrows. :P 17:27:03 "hi player I go this way" 17:27:10 "hey now I'm going this way" 17:27:15 kallisti, could easily be done on a computer 17:27:23 computers once again become useful 17:27:25 just make it look like >>>>> or such 17:27:28 for the first time since ww2 17:27:28 yes it just doesn't make sense in the model I have for how the game works... 17:27:33 in red above the board 17:27:56 kallisti, how can you have a model when you haven't yet decided on the rules 17:28:06 that's the only undecided rule. 17:28:25 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 +23 is pretty much room temperature, though. 17:28:40 fizzie, I had an old sempron that idled at 28 C 17:28:50 when it was like 17 C inside 17:29:04 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 my current CPU tends to idle much higher, but then the fan is no longer constant speed 17:29:11 lm-sensors tends to report all kinds of nonsense numbers, but normally coretemp's quite reliable, AFAIK. 17:29:35 fizzie, yeah all machines should have IPMI 17:29:47 Everyone wires the motherboard-specific sensors differently for some reason. 17:29:47 that reports temperatures with proper names too 17:30:01 fizzie, it tends to be mostly reliable on thinkpads 17:30:05 (lm-sensors) 17:30:10 fizzie, even then there are some issues 17:30:32 Vorpal: if i allowed gravity then i could allow acceleration 17:30:33 fizzie, and that is with the thinkpad-isa-0000 "adapter" 17:30:45 fizzie, they wire it differently in different models 17:30:51 some stuff are the same though 17:31:01 itidus21, sure 17:31:08 that would be quite weird 17:31:09 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 No idea where those temperatures are, though. 17:31:25 itidus21, I wonder when this turns into something completely different than chess, instead of a variant of chess 17:31:28 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 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 fizzie, might even be offset from the real values depending on the type of probe iirc 17:32:02 with an option to choose which rule you want to play. 17:32:16 Certainly. Or multiplied with a different factor. 17:32:32 fizzie, or both :P 17:32:32 Vorpal: turn based asteroids basically 17:32:39 itidus21, :D 17:32:52 anyway is there any realtime chess I wonder 17:33:09 there are other RTS obviously, but are there any based on chess? 17:33:34 i wonder if anyone has ever tried to implement asteroids with turn based 17:33:43 doubtful 17:33:49 its so insane 17:33:55 why don't you do it? 17:34:12 my initial definition of turn is turning to jelly 17:34:19 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 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 but that's further away from just getting the actual game itself. 17:34:33 (computers are not continuous!) 17:34:48 and the idea is that instead of firing guns in asteroids, that you collide with things to destroy them 17:35:05 so, you could only destroy the asteroid on your turn, in such a system 17:35:15 Vorpal: FRP maintains a sample-independent abstraction that logically resembles continuity. 17:35:28 kallisti, FRP being? 17:35:32 functional reactive programming 17:35:36 right 17:35:49 of course you have to sample values at some point, the code itself is written as though it were continuous. 17:35:56 kallisti, anyway I doubt astroids is implemented with it in the classical implementation 17:36:04 this isn't really an idea i just had.. this is just lots of ideas culminating 17:36:12 kallisti, and still the actual computer is discrete 17:36:37 I certainly don't disagree that computers are discrete. 17:36:39 i have a notepad showing you how i labor over the question of turn based vs realtime in games 17:36:56 itidus21, how is that something to labor over? 17:36:58 and finally i made some progress here 17:37:05 you just decide from case to case what fits best 17:37:52 -!- Jafet has joined. 17:37:59 gameplay begins with standard chessboard.. each has a pawn piece placed somewhere on rear row. 17:38:42 turn by turn an impulse is done by the "ship" direction and speed indicated 17:38:42 What if you make the pieces continuous too? 17:38:59 You don't have pawns, you have a long strip of pawn at the start. 17:39:08 not in this variation 17:39:15 Phantom_Hoover, interesting, how would you move it? 17:39:19 Phantom_Hoover, like a barrier? 17:39:30 well could have more than 1 17:39:53 in the continuous model I mean 17:40:18 Vorpal, you'd fling bits of it along defined trajectories so the integral of movement d(pawn) is within allowed bounds? 17:40:25 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 You'd probably have to forbid non-measurable sets of piece from being moved. 17:41:31 Phantom_Hoover, hrrm 17:41:37 and yes 17:42:29 kallisti, I would suspect a lot of non-continuous functions in games 17:42:49 kallisti, well, depends on the game. I was thinking FPS or such here 17:43:29 Vorpal: I'm just not really sure how to calculate frequencies on fuctions on non-real (co)domains. 17:44:31 hm 17:44:59 bbl 17:45:10 but given the clock speed computers I would think that most data "frequencies" are "low enough" in comparison. 17:45:13 +of 17:46:36 heres a pic of what i have in mind: http://oi44.tinypic.com/2sbtmvb.jpg 17:47:11 each vector representing a turn somehow 17:48:09 guys what if I write this portal chess server and people actually play it? 17:48:31 the trouble begins if i allow velocity.. then each vector gets modified every turn 17:48:34 Then you're doomed to be known as the "portal chess guy". There are worse fates. (But not many?) 17:48:49 fizzie: what are you talking about portal chess is often. 17:48:55 -!- Klisz has joined. 17:48:59 yes, often 17:49:01 not awesome 17:50:00 fizzie: are you implying that "portal chess guy" is not a title with dignity? 17:50:12 I completely disagree. 17:50:41 No, no, it certainly has gravitas. 17:51:03 Perhaps even gravytude. 17:51:21 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 itidus21: yes 17:51:58 this is unanticipated pain 17:52:12 turns + real time = you can wait forever (or until a time limit) and maintain the current status quo of the system 17:52:39 but then again.. 17:52:40 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 Vorpal: precisely. it was a very vague statement. I'm guessing many game states fall into this category. 17:53:16 right 17:53:24 but not all. it again dependends on how you calculate frequency of an entire game state 17:53:32 I don't know how to do that or if it's necessarily possible. 17:53:34 hummm 17:53:59 i guess these sorts of problems become simpler when actually testing the thing in practice, instead of theorizing 17:53:59 I guess it would help if I knew more about Fourier transforms. 17:54:03 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 Vorpal: well I didn't mean "any data" 17:54:43 kallisti, and iirc there was some sort of carbon transistor that could switch at 100 GHz 17:54:50 which is pretty impressive 17:55:11 we should design a carbon transistor processor and make it affordable to the masses. 17:55:45 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 right 17:55:59 what i am talking about seems to be a continuous board "racetrack" where the objective is to crash into the opponent 17:56:20 itidus21: I would say you want a time limit 17:56:21 to a turn 17:56:33 to maintain sanity. 17:56:43 racetrack adopts the idea that no other pieces move during a turn 17:56:58 so it's like... 17:57:01 a non-real-time game? 17:57:06 yeah :) 17:57:22 my goal is turnbased on a continuous board 17:57:38 anyway turnbased asteroids could be interesting if you have precise control over what you can do per turn 17:57:56 like applying this much force in this direction, or aim and fire 17:58:30 i need to study the racetrack rules a bit closer 17:59:38 kallisti, what about 3D chess? 17:59:40 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 Vorpal: what about it? 17:59:49 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 kallisti, it could be interesting 17:59:53 pretty sure that already is a thing. 18:00:14 Don't they play 3D chess in Star Trek?-) 18:00:29 http://www.chessvariants.com/3d.dir/startrek.html -- apparently. 18:00:48 kallisti, 4 players, two like usual, the other two on the "ceiling" 18:01:05 ah yes that could be interesting 18:01:14 kallisti, would require 8x8x8 18:01:14 3 or more player variants are always interesting 18:02:04 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 Star Trek 3D chess is more chess on a very strange 2D board. 18:02:12 "Welcome the international hub of portal chess gaming!" 18:02:19 pikhq, heh 18:02:20 my website will be so good. 18:02:25 missing words everywhere 18:02:34 Well, it's got that movable-level thing going on. 18:03:09 Oh, right, movable levels. 18:03:16 it would be interesting to play a game of chess where you have two boards, with two different starting configurations 18:03:17 Okay, I suppose you could call it 3D barely. 18:03:25 and each piece on one board is connect to a piece on the other board 18:03:35 what about 4D chess? 18:03:37 pikhq: I think the handwavey justification for those would be that they represent starships. 18:03:41 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 fizzie: I suppose. 18:04:31 and capturing a piece on one board "frees" the piece on the other board. 18:04:36 creating an interesting strategic element. 18:05:04 where capturing an opponent piece can actually make the pieces on the other board more dangerous. 18:05:24 ....basically I should just make chess variants all day. 18:05:26 and get paid to do it. 18:05:29 kallisti, I fear it might end up being very annoying to play 18:05:35 Vorpal: perhaps 18:05:38 depends on the specific mechanics. 18:05:42 indeed 18:05:53 also winning conditions are uncertain 18:06:07 it could be either winning on one board wins the whole game or you have to win both games 18:06:16 with a draw being both players win one game 18:06:38 this is plausible if one player focuses on their success on one board, to the detriment of the other board. 18:06:46 gradually freeing all of their pieces 18:06:54 so that it just becomes two mostly seperate games of chess 18:07:07 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 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 kallisti, I'm quite a fan of RPGs myself. I wonder if you could make some sort of chess-inspired RPG 18:09:33 chess with sidequests sounds too weird so hm 18:09:43 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 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 kallisti, you would have to time your turn to the loop to take advantage of it 18:10:05 Vorpal: well I have some ideas for a real-time-strategy RPG 18:10:19 kallisti, not sure how common such loops are anyway 18:10:19 i just learned about continued functions a few hours ago 18:11:49 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 kallisti, hm? 18:12:04 and was originally seen as a very specific rare circumstance. 18:12:21 well, because even now I can think of many possible uses. 18:12:29 just not sure how it fits into the game. 18:12:37 kallisti, Nothing wrong with metagaming, it is kind of common in competitive computer games anyway. 18:13:09 kallisti: a difficult thing is that most games depend on the fact there are no perfect players 18:13:10 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 kallisti, lots of explosions yay! 18:13:44 its something i think about a lot 18:14:08 there is no perfect life though, or is there.. i guess one can ask the indians 18:14:15 itidus21, a lot of computer games depend on timing to ensure that 18:14:45 you can't time perfectly usually 18:14:50 chess is interesting in that even by cheating you can't be a perfect player 18:15:03 itidus21: American Indians were not a perfect society living idyllic lives. kthx 18:15:06 itidus21, are you sure there is no perfect play in chess? 18:15:13 no perfect player 18:15:19 not no perfect play 18:15:32 to be a player, one must actually play :D 18:15:44 itidus21, well computers can easily beat humans 18:15:51 so some hermit in a cave who knows perfect chess but never plays anyone doesn't count 18:15:59 eh 18:16:04 itidus21: cheating usually isn't regarded in defining a "perfect game" :P 18:16:05 who said anything about such a guy? 18:16:29 for my definition of player, it is not enough to have the potential to play.. the playing must be actual 18:16:38 yes and? 18:16:46 I don't see your point here 18:17:04 chess probably does have perfect play, just no one figured it out yet 18:17:18 i agree chess has perfect play 18:17:22 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 but it has no perfect players 18:17:41 itidus21, as of yet. Computers aren't powerful enough and the chess AIs not got enough. Yet. 18:17:56 even if you are willing to cheat... even if you turn every resource to the task 18:17:58 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 you cannot play in the capacity of a perfect chess player 18:18:13 at this stage :D 18:18:17 itidus21, cheating doesn't make sense in chess, what would it be? Moving two pieces in a turn? 18:18:18 Vorpal: also I was considering perhaps having a system of automation, like Dragon Age. 18:18:31 look.. umm.. 18:18:35 kallisti, never played that game 18:18:42 even IF both players talked about what move each player intended to make next 18:18:53 itidus21: cheating defines what the game is. when you permit cheating you're talking about a different game entirely. 18:18:56 uhmm.. no that doesnt make sense 18:18:59 *redefines 18:19:09 oh then it is easy to solve, if you actually know what a player will do in a given situation 18:19:17 hmm .... 18:19:19 you can just recursively apply that until you find a good one 18:19:22 it is? 18:19:40 ok i guess it is :D 18:19:43 if it isn't restricted to next turn but can be applied to hypothetical future turns 18:19:56 then you basically have a perfect "heuristic" 18:20:12 well.. this is headache material for me.. 18:20:16 and can just search down the tree of moves to figure out a variant where you wins 18:20:22 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 kallisti, hm? 18:21:04 ....nevermind. :P 18:21:23 Vorpal: ok suppose that 1 player would tell his next move.. and the other one would not do so 18:21:36 now he will only tell his next move :D 18:21:42 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 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 kallisti, and that just looked ahead 7 moves in searching for good positions 18:22:11 and then player B does such and such 18:22:12 kallisti, used alpha-beta pruning 18:22:23 and then it is player A's turn again.. and cycle repeats 18:22:33 can player B beat player A? :D 18:22:44 curious idea, eh 18:23:19 but....... 18:23:24 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 his "what will you do?" only counts for 1 turn 18:23:30 with no limit of depth 18:23:40 then B can't beat A unless B can pull off perfect play 18:23:42 yeah.. i wasnt sure at first... 18:23:56 (which might be possible) 18:23:58 but i decided the latter question is more interesting 18:24:05 Vorpal: also regarding magic I was going to make effective use of magic much more challenging than in other games. 18:24:10 I think this is where the magicka influence stems from. 18:24:20 but instead of in an action-adventure game it's an RPG-like RTS. 18:24:35 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 (well, good ones at least) 18:24:55 kallisti, omg.... chess with magicka style magic! 18:24:59 kallisti, epic win 18:25:12 Vorpal: another curious question is.. whether such a system would negatively affect player A's chances of winning 18:25:40 kallisti, very good when you don't have much time. Someone will die very soon 18:25:45 through the distraction of knowing his moves 18:25:51 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 kallisti, just imagine crossing opposite beams on top of the opposing king. 18:26:19 :D 18:26:31 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 Vorpal: I have no idea how such a game would work 18:27:00 kallisti, neither do I, but it sounds awesome 18:27:15 itidus21, doubtful. I'm not really good at psychology. 18:27:19 so who knows 18:27:34 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 i would wonder what sort of game would come out of it 18:27:56 maybe both should be grandmasters im not sure :-s 18:28:08 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 the powerful, fast, costly spells would be a last-ditch effort when you fuck up. 18:28:35 -!- PiRSquared17 has joined. 18:28:45 kallisti, heh 18:28:49 i am curious of what length of time would be useful for a computer in chess... 18:29:06 kallisti, so completely unlike the magic of magicka then 18:29:07 and is there a cutoff period where a computer is no longer able to efficiently use time to play chess 18:29:36 like if you give a computer a year to make a move 18:29:37 Vorpal: I was considering various complex magic models that would be magicka-esque, but yes... not directly like it at all. 18:29:45 will it just sit there twiddling its thumbs 18:30:08 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 itidus21: well assuming it's using a decision tree it will eventually run out of possibilities or hit its cutoff point. 18:30:24 well, to some degree 18:30:27 not so much the cost thing 18:30:32 that is just adding mana though 18:30:36 Vorpal: I know nothing about that game. 18:30:47 kallisti, trading card games is a genre 18:30:51 kallisti, not a specific game 18:30:55 I was considering breaking away from the traditional mana concept and having different kinds of resources 18:30:57 kallisti, like magic the gathering and such 18:31:12 Vorpal: that's what I assumed you were talking about. 18:31:15 not a huge fan of them myself 18:31:16 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 especially the business model of the companies making them pisses me off 18:31:49 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 kallisti, iirc WoW copied from some other earlier MMO 18:32:13 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 never played WoW myself 18:32:17 Vorpal: everquest 18:32:20 -!- Jafet has quit (Ping timeout: 268 seconds). 18:32:20 right 18:32:48 in other words, i wonder what is currently the longest useful chess computation 18:33:02 I've always been interested in magic that involves elements in your environment. 18:33:03 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 is it merely a question of searching an existing data set? 18:33:23 Vorpal: I didn't play WoW because it looks good. 18:33:29 kallisti, hotkey combat just looks so utterly boring. Mindless buttonmashing. 18:33:33 I'm more interested in mechanics. WoW has pretty polished mechanics. 18:34:10 but yes it gets dull. 18:34:13 kallisti, and from what I heard the SWTOR mechanics are indeed pretty similar. Took some ideas from other MMOs as well 18:34:53 mmo's.. the worst thing to ever happen to the internet :-" 18:34:56 WoW has had a lot of time to take form. 18:35:00 kallisti, anyway at least SWTOR seems to have a good story, which I heard was pretty bad in WoW 18:35:05 i havent played any i admit 18:35:08 yes there is no story basically. 18:35:10 no one cares about the story. 18:35:19 itidus21, I think MMOs could be good, just not hotkey ones 18:35:38 Vorpal: planetside had a lot of potential 18:35:40 the last 12 years of gaming is "could be good but isnt" 18:35:41 I think they're making a sequel? 18:36:01 itidus21: dunno I think gaming has developed pretty well in a very short time. Sure it's not perfect. 18:36:10 kallisti, no idea, I don't really keep track of MMOs. 18:36:20 Vorpal: Planetside is/was an MMO FPS 18:36:33 itidus21, problem is that there are scalability issues with more interesting form of combats 18:36:37 tidus must remind you that gaming is not a synonym for 3d rendering 18:36:39 itidus21, like, lag issues 18:36:46 itidus21, hotkey mmo is a way to work around those 18:36:46 I say "is" because it still exists and I say "was" because its userbase is mostly dead. 18:36:52 though things are moving away from hotkey 18:36:57 better connections and so on 18:37:08 what is the main causes of lag? 18:37:17 itidus21, latency 18:37:25 there are of course computing issues as well 18:37:32 but latency is the real problem here 18:37:33 what are the main causes of latency? 18:37:39 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 there were 3 factions 18:38:00 i know these questions are getting repetitive from me 18:38:17 leading up to, what can be done by gamers about latency 18:38:19 itidus21, I'm trying to remember 18:38:22 I read this at university 18:38:33 there is of course propagation delay for the signal 18:38:36 there's a few algorithms 18:38:37 then there is routing time 18:38:41 and a few more factors 18:38:47 there was some nifty equation for it 18:38:54 is it due to the dimorphism between download speeds and upload speeds? 18:38:54 completely forgot it 18:38:57 one algorithm is to basically predict what will happen based on previous input 18:39:00 itidus21, no 18:39:19 kallisti, for an MMO the issue is network latency 18:39:22 http://mine-control.com/zack/timesync/timesync.html 18:39:26 Vorpal: yes this is what I'm talking about 18:39:30 combating latency 18:39:45 kallisti, well you can't. There is always at least the propagation delay 18:39:53 ....yes 18:39:54 unless you have a wormhole, nothing you can do 18:39:55 -!- Jafet has joined. 18:40:00 I'm not suggesting you can apply an algorithm that eliminates latency 18:40:05 that is obviously ridiculous. 18:40:29 well.. is latency not the same thing as connection speed? 18:40:41 itidus21, connection speed is ill-defined 18:40:58 kallisti, anyway if one guy jumps sideways while another guy shoot him, they see different scenarios. Who is correct? 18:41:02 that is to say, people used to play games on 56k modems :P 18:41:04 itidus21: latency is basically the time between send and receive 18:41:11 kallisti, either way one guy is going to be pissed off 18:41:38 and now even though you can download gigabytes from powerful servers at > 2mb/s 18:41:45 latency is still a problem 18:42:21 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 if the algorithm is good at prediction that is 18:42:47 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 for an FPS this is pretty difficult to accomplish. 18:43:09 kallisti, problem is that you can't easily predict future inputs of a human 18:43:24 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 kallisti, not having ranged weapons would help, though not completely. 18:43:48 Vorpal: thats pretty difficult to comprehend that latency is independant of bandwidth 18:43:56 its a royal headfuck 18:44:06 itidus21, not really 18:44:08 itidus21: bandwidth concerns how much data you can receive at any given point 18:44:15 itidus21: latency is how long it takes for data to get to you. 18:44:18 or to be sent from you 18:44:18 -!- Jafet has quit (Ping timeout: 252 seconds). 18:44:51 itidus21: you could be sending gigabytes of data per second but it still takes 5 seconds to be received. 18:44:51 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 but.. why wouldn't the latency be uniform? 18:45:11 itidus21, well that is easy, internet is best-effort 18:45:18 this is why we need tcp 18:45:23 to resend dropped packets and so on 18:45:26 so bandwidth is easier to achieve than latency? 18:45:34 itidus21: conversely, you could be receiving a single byte per second but it's received a nanosecond later. 18:45:35 not really that is best-effort too 18:45:50 well.. people care more about latency than bandwidth i assume 18:45:59 itidus21, gamers usually do yes 18:46:02 .. no they don't ;_; who am i kidding 18:46:11 then again, a lot of people care more about bandwidth than latency 18:46:13 and the internet is geared up for pro-bandwidth 18:46:21 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 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 that would cause latency 18:47:12 so.. the question here then is... could an internet be designed pro latency? 18:47:16 at the cost of bandwidth? 18:47:28 not sure that tradeoff exists 18:47:47 sure there might be minor tweaks you could make, but nothing major I suspect 18:47:55 they're certainly connected to each other but they're not directly or inversely proportional. 18:48:12 bandwidth can be a bottleneck to latency. 18:48:27 and vice versa, I'd imagine. 18:48:53 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 sending emails isn't very sensitive either way. 18:49:55 i dont understand why sending a large fille is different from sending lots of state updates 18:50:03 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 is it like.. saying.. you can have large updates but you can't have a lot of them? 18:50:20 kallisti, intertubes :D 18:50:23 yep 18:50:53 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 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 so you don't really care 18:51:44 (well there are some complications here, mostly due to TCP ACKs and so on) 18:52:15 (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 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 (read*) 18:52:45 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 then... 18:52:58 ....? 18:52:59 okay. 18:53:02 kallisti, interestingly ssh file copy has/had problems on high-bw, high-latency links 18:53:12 kallisti, there was/is even a patch set to fix that 18:53:20 is it that the sending will be broken up sporadically 18:53:40 yes that's the latency 18:53:44 for any transfer of data. 18:53:45 that exists. 18:53:47 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 Vorpal: aha 18:54:15 kallisti, here: http://www.psc.edu/networking/projects/hpn-ssh/ 18:54:20 yes the pipe analogy kind of breaks down when you actually start to talk about discrete packets. 18:54:37 rather than a continuous "fluid" 18:54:43 kallisti, it kind of works for UDP still 18:54:47 not just for TCP 18:55:03 kallisti, and I have no clue if it works for SCTP and so on 18:55:13 my guess would be "sometimes" 18:55:50 (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 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 kallisti, anyway kind of curious it works better for UDP than TCP... since TCP is closer to being a stream actually 18:56:25 but the movie downloader's ideal is that the sum of the samples is the highest 18:56:55 itidus21, what do you mean with connection speed? 18:57:01 itidus21, latency or bandwidth 18:57:07 itidus21: well essentially latency becomes more of an issue when you're sending small packets. such as game state commands. 18:57:09 there is no such thing as speed 18:57:17 well forget the word calculus 18:57:35 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 maybe 100 times is asking a lot 18:58:04 but for fun 18:58:15 that measures bandwidth 18:58:19 I think 18:58:34 it doesn't make sense on anything else than a download anyway 18:58:42 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 (or upload of course) 18:58:55 itidus21: consequently, the player is sending packets in response to an incorrect game state 18:59:03 itidus21: so this fine-grained time synchronization issues become more important 18:59:19 latency would seem to cause samples where no new data has arrived 18:59:41 eh? 18:59:56 ohhh ... no i think i am getting it slowly 19:00:07 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 lets say.. all we want to send is 1 byte every 60th of a second 19:01:01 so bandwidth is not our problem in this scenario 19:01:05 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 oops uhh ill extend it 19:01:35 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 i know this is asking a lot 19:01:47 but just for the sake of an example 19:02:10 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 you want that to arrive as fast as possible 19:03:07 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 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 i always seem to say "our topic was just X, but now i realize i wanted to think about Y" 19:04:07 i do this ad nauseum.. 19:04:23 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 because its just how i fucking think .. shameful as it is 19:04:50 Vorpal: I'd like to think more sophisticated predictions are possible if you apply some hueristics on a large input buffer. 19:05:05 kallisti, certainly, that was just a basic example 19:05:08 but I don't know what those heuristics are. 19:05:17 kallisti, neither do I. 19:05:35 kallisti, an obvious one is "if jumping they will fall down rather than continue upwards" :P 19:05:51 fizzie: hi you know things about statistics how can you make predictions about future inputs from previous inputs. 19:06:23 i have heard of that side of things 19:06:23 kallisti, for the purpose here it is enough to point out various methods exist 19:06:30 Vorpal: ah well the prediction only needs to be on the input stream not on each physics tick. 19:06:32 itidus21, anyway nothing wrong with going off on tangets 19:06:38 itidus21, I do it all the time 19:06:41 but i am wondering if there is problems in the actual internet which cause latency 19:06:50 which gamers could pay people to fix 19:07:09 doubtful. There isn't really a good solution anyway 19:07:09 -!- Klisz has quit (Ping timeout: 260 seconds). 19:07:12 yes the problem is that other people are using it 19:07:20 if they paid a bunch of people to not use the internet for a while 19:07:22 they could fix it. 19:07:46 the internet is effectively being spammed with junk traffic 19:07:56 it is.. lets face it 19:07:57 yes such as this IRC channel. 19:08:19 (ha ha ha) 19:08:32 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 the idea of using screenshot sending to provide games seems to me a vast waste of the internet 19:09:20 you mean OnLive? 19:09:26 wat? 19:09:27 its very tragic waste of the net 19:09:31 yeah OnLive 19:09:57 but 19:10:10 i guess latency matters less there 19:10:22 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 itidus21, latency matters a lot there 19:10:51 oh... 19:10:54 itidus21, more so than usual 19:11:07 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 itidus21, you definitely want to keep those delays down 19:11:38 Vorpal: well the positive thing is that the renderer doesn't have to make any predictions 19:11:44 since the game state is localized 19:11:58 a drawback is that the service /can't/ make predictions.. 19:12:01 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 on the game state 19:12:12 (or was it MBps? I don't remember) 19:12:21 kallisti, indeed 19:12:35 for a racing game this would give vast improvements 19:12:42 a racing game would be pretty easy to apply predictions to 19:12:51 for a few milliseconds at a time. 19:12:56 maybe 19:12:57 Vorpal: 2 Mbps isn't that unreasonable... 19:13:05 pikhq, fair enough 19:13:08 You can pull that off with x264 and some tweaking. 19:13:13 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 hm okay 19:13:27 even if the gamestate is "late" 19:13:50 You'll want higher than that to get higher resolution, but still, streaming video over the Internet is quite doable. 19:13:57 kallisti, anyway, latency is usually more than a few ms. More 20 ms to my ISP even 19:14:05 More like* 19:14:32 Vorpal: that's an acceptable range for a racing game. 19:14:39 I'd say up to.... half a second would be okay in many cases. 19:14:43 kallisti, that is to my ISP. Not to, say, google 19:15:09 traceroute is fucking up for me for some reason atm... hm 19:15:17 -!- iamcal has joined. 19:15:18 The issue they'll have, of course, is bufferbloat. 19:15:21 traceroute is very unreliable in my experience. 19:15:36 kallisti, it gets 5 jumps then "no reply" 19:15:39 very strange 19:15:47 it usually works to google 19:15:55 For stupid reasons a lot of hosts like to block ICMP. 19:15:56 anyway, i think OnLive is exploitative use of the internet 19:16:13 pikhq, yes, lattency jitter is going to be a huge issue for OnLive 19:16:25 the people who made the internet would vomit that it is used this way 19:16:28 itidus21, not really. It is best effort. It is there for everyone to share. 19:16:45 itidus21: I disagree. However, it suffers from the major implementation flaws in the infrastructure. 19:16:53 Such as "my downlink isn't 6 Gbps" 19:17:21 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 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 i mean, surely all these constant 2mb/s connections onlive demands will overall cause more latency on the internet overall 19:18:12 pikhq, hm, OnLive breaks TCP flow control? 19:18:17 oops @ repeating overall 19:18:18 pikhq, I would have assumed they used UDP 19:18:28 Vorpal: No, bufferbloat does. 19:18:38 OnLive merely suffers from it like the rest of us. 19:18:57 pikhq, bufferbloat where? In the routers? 19:19:07 Vorpal: In basically every device. 19:19:08 itidus21: I'd bet that if you look at total network traffic on the internet that portion would be very small. 19:19:13 pikhq, hm true 19:19:29 pikhq, you need some buffers though, or the packet drops would get excessive 19:19:33 itidus21: you're basically hating on an internet service because it's using what the internet is for. 19:19:46 itidus21: If TCP flow control were functioning correctly, a flood of constant 2Mbps connections wouldn't increase latency notably. 19:19:56 Vorpal: You want packet drops. 19:20:10 pikhq, to some degree yes. But not so much it disconnects 19:20:10 Vorpal: TCP flow control triggers on packet drops. 19:20:15 and indeed 19:20:21 i hate screen tearing and i hate latency... 19:21:05 Vorpal: But, yes, you want a *small* amount of buffering. 19:21:08 du hast 19:21:13 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 pikhq, a few packets per input queue or such yes 19:21:30 itidus21: you must really hate Google. 19:21:38 not sure how much exactly, would need careful measurement 19:21:44 The appropriate buffer size, IIRC, is a function of the bandwidth-latency product. 19:21:53 ah yes that sounds familiar 19:22:04 pikhq, are you saying that they are usually oversized? 19:22:21 Vorpal: They are typically set as a few megabytes anymore. 19:22:36 pikhq, and what should they be? 19:22:36 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 pikhq, that might be reasonable on the backbone for all I know 19:22:51 Vorpal: On common links? ~10 packets. 19:23:00 pikhq, what about the backbone then? 19:23:09 or was that what you meant with common links? 19:23:11 itidus21: uh the teams don't spend that money themselves. they /receive/ that money. 19:23:16 Vorpal: I meant end-user links there. 19:23:22 itidus21: part of it 19:23:26 pikhq, okay so what about the backbone links then? 19:23:28 Vorpal: On a backbone? Eh, maybe 100 packets? 19:23:32 hm okay 19:23:42 all the work comes second place to lag issues 19:23:55 >_> 19:23:57 okay. 19:24:13 itidus21, anyway there is always going to be lag you can't avoid due to the speed of light 19:24:18 lag is swept under the carpet 19:24:22 s/lag/latency/ 19:24:28 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 pikhq, ouch 19:24:46 pikhq, so why do people do it wrong? 19:25:03 Because nobody knows better. 19:25:11 pikhq, also what about UDP? 19:25:15 who are these people? what code is this? where is this implemented? 19:25:47 pikhq seems to have the cynicism set in reality i was looking for 19:25:48 kallisti: Some of the buffering is in networking device firmware, some of it in kernels. 19:26:08 ah 19:26:52 so buffering is the main (avoidable) cause of latency? 19:27:03 eh... 19:27:18 or filled buffers? 19:27:32 itidus21: Basically. 19:27:33 latency is mostly caused by scarcity of resources, I would think. 19:27:56 pikhq, anyway this wouldn't help at all with UDP 19:27:58 hm 19:28:07 pikhq: so to try and get an answer to my core enquiry 19:28:10 Vorpal: Most things streamed over UDP have manual flow control. 19:28:30 pikhq: what would a pro-minimal-latency internet do differently to the current internet? 19:28:30 kallisti: Nope. TCP attempts to share bandwidth equally. 19:28:34 pikhq, which may be anything 19:29:01 kallisti: The only thing scarcity of resources should do to TCP streams is make them have less bandwidth available. 19:29:08 (but at roughly the same latency) 19:29:37 Vorpal: Generally they're designed with the intent of behaving nicely with TCP flow control, though. 19:29:43 (unfortunately, not always) 19:29:50 heh 19:30:16 brb 19:30:20 hmm 19:30:37 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 itidus21: Beyond that, the Internet is actually fairly reasonable about latency. Something like half lightspeed latency... 19:32:27 so if there was only 2 people using the internet at a time it would be damned fast eh? 19:33:03 humm 19:33:10 Or if there weren't seconds long buffers in between people. 19:34:14 pikhq, what are the usual buffer sizes in the backbone? 19:34:26 is there any way that programmers can fight these buffers without occupying IETF and Cisco? 19:34:39 Vorpal: I honestly don't know; it's a bit hard to measure without cracking open the devices. 19:34:51 Vorpal: You can generally measure buffersize by congesting a link and measuring latency. 19:35:01 pikhq, kind of hard to do that with the backbone 19:35:12 itidus21: Start with end-user devices. They congest first, and thus are the first ones to show symptoms. 19:36:05 pikhq, hm does TCP resend the inidial SYN or is that up to the application? 19:36:19 initial* 19:36:29 itidus21: Also, IETF and Cisco shouldn't be that hard to get to change; just hand them good AQM and voila. 19:36:39 pikhq, AQM? 19:36:59 google says active queue management 19:37:07 ah 19:37:20 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 pikhq, what about ECN? 19:37:30 indeed 19:37:44 ECN seems like a workaround for too large buffers to me 19:38:12 ECN is actually *slightly* better than the drop-packet flow control. 19:38:24 hm okay 19:38:24 It allows you to signal congestion *and* get data through. 19:38:29 right 19:38:34 pikhq, so is it used much? 19:38:47 Unfortunately, there's a bunch of intermediate devices that break it. 19:38:53 oh? 19:39:02 do those devices clear the bit or something? 19:39:18 Or drop packets with the bit set. 19:39:33 pikhq, well they need to if their own queue is full 19:39:37 obviously 19:39:50 Vorpal: Drop packets with the "I can do ECN" bit set. 19:39:58 pikhq, what? why? 19:40:19 Because some hardware manufacturers have less intelligence than the average monkey. 19:40:28 it doesn't make any sense 19:41:09 pikhq is basically the truth behind my rant about latency... but i admit i didnt know any of this 19:41:30 but what he is saying is what gamers should rally behind it seems 19:41:45 Anyways: most hosts support ECN but don't have it on by default. 19:41:46 and others too. Consider VOIP 19:41:55 you want low latency 19:42:20 pikhq, really? Is it default to off in windows? Linux? 19:42:33 my priority though, is gaming... i guess not everyone will agree 19:42:39 Vorpal: Default to off in Windows, default to "only if the other end supports it" in Linux. 19:42:44 pikhq, why 19:42:50 those are silly defaults 19:42:52 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 ting history as (input, output) samples for learning it. 19:42:54 Because of aforementioned broken devices. 19:43:17 just like not everyone hates screen-tearing as much as me 19:43:21 pikhq, ah 19:43:36 pikhq, are those backbone devices or end user devices? 19:43:46 Vorpal: Mostly end user devices. 19:43:51 hm 19:44:12 There's few manufacturers of backbone devices, and they tend to hire more knowledgable people. 19:44:34 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 Acting as a server, I think. 19:46:17 hm 19:46:26 I should enable it and see what happens I guess 19:47:12 now that we all concede there is a solvable problem causing latency, i feel unburdened 19:47:20 The current way of mitigating bufferbloat on end user links is sickening, yet funny. 19:47:21 ... wow 19:47:28 pikhq, oh? 19:47:45 What you do is throttle your link to slightly less than max. 19:48:09 Thus ensuring buffers near you can't fill. 19:48:11 heh 19:48:15 that is absurd 19:49:12 e.g. if you've got a 4Mbps link, throttle to, oh, 3.8 Mbps. 19:49:41 does throttle here mean transmit data at that rate? 19:49:43 And you will have low latency unless the backbone starts having congestive collapse. 19:49:56 fizzie: that description is so vague that it actually matches what I was thinking would work. 19:50:08 itidus21: Basically. 19:50:12 lol 19:50:32 probably would work in countries with unlimited bandwidth 19:50:41 -!- nooga has quit (Ping timeout: 244 seconds). 19:50:47 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 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 This basically prevents you from seeing bufferbloat in your router, your modem, the ISP's modem, or the ISP's router. 19:51:25 fizzie, heh. 19:51:35 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 You'll still see bufferbloat in the ISP's network or the backbone, but this doesn't really happen much. 19:52:02 (end user links fall over *well* before those do) 19:52:08 fizzie: but frequency likely isn't the only interesting "parameter" to look at for this "model" of the "system" 19:52:20 fizzie: Classic bufferbloat. 19:52:30 pikhq: since i didnt understand that, i will aska few questions to clarify 19:53:05 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 itidus21: No. 19:53:14 hmm 19:53:22 itidus21: It means never going *above* that speed. 19:53:56 pikhq, why not just use small buffers? 19:54:04 You artifically make that your maximum speed, rather than what your link theoretically could do. 19:54:13 Vorpal: Some of the buffers are out of your control. 19:54:18 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 hm true 19:54:24 Vorpal: You can't realistically change the buffer on your modem. 19:54:38 pikhq, well my modem is also my router 19:54:44 And you'll need to replace router firmware to change the router buffer. 19:55:34 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 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 }) = 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 There's also a decent chance of there being a buffer ISP side. 19:56:27 MARKOV PREDICTION. :P 19:56:33 this is the obvious answer. 19:56:37 markov can be applied to anything. 19:56:54 Well, it *is* a Markov process in that case, since it's a finite amount of history. 19:57:03 excellent. 19:57:13 Markov is awesome 19:58:02 fizzie: the (a) method sounds more relevant to a game 19:58:12 well hmmm 19:58:13 no 19:58:15 kallisti, not really 19:58:20 (b) is more relevant to the human inputs 19:58:24 indeed 19:58:25 (a) is more relevant to the game system. 19:58:27 pikhq: this may sound dumb, but, what is the best way to determine max link speed? 19:59:34 i am considering mentioning this theory to my brother who is always open to ways to improve his gaming 19:59:44 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 itidus21: One of those bandwidth testing sites... 19:59:57 you're mostly concerned with analyzing the human input. 20:00:10 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 yep 20:00:25 itidus21, he is not going to be able to do anything about it 20:01:13 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 itidus21: Yes, because a connection will always try to go faster until packets drop. 20:01:45 And buffers prevent packets from dropping. 20:01:52 pikhq, and it should (modulo ECN) 20:02:04 Yeah. 20:02:29 fizzie: thanks for the terminology I have so many things to read on Wikipedia now... 20:02:48 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 omehow meaningful.) 20:03:20 fizzie, they are? 20:03:55 fizzie: uh... modeling human behaviors sounds difficult. :P 20:03:59 fizzie, I found that it varies a lot 20:04:12 I'd rather just crunch some data and derive conclusions. :P 20:04:14 Vorpal: Well, with sufficient amounts of exaggeration, anyway. 20:04:50 fizzie: but yes analyzing goals is something to keep in mind. 20:04:51 Let's just say that most people would at least like it if their clusters were somehow meaningful. 20:05:02 Anyone doing visualization at least. :p 20:05:12 what do you mean by clusters. 20:05:17 I think I missed something. 20:05:21 Or, okay, anyone doing visualization that's not just doing it for aesthetical reasons. 20:05:29 fizzie, well yes 20:06:19 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 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 I'm pretty sure I didn't read that far back, just the single line that was red. 20:10:29 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 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 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 *attempting 20:11:25 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 fizzie: yes I've been researching what is commonly used. 20:12:04 fizzie: one approach is called "dead reckoning" but I haven't really found an exact algorithm. it appears to vary widely. 20:12:27 itidus21: Probably something like "traffic shaping". 20:12:32 ahh 20:12:43 itidus21: You'll probably want to do the same with uplink, BTW. 20:13:10 my brother is in charge of all that stuff.. but i think he would be interested to hear this idea 20:13:52 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 (vague statement of what the solution should look like without actually going into any details of how to implement it) 20:15:44 i look forward to telling my brother about this.. 20:15:50 ((parenthetical aside noting the purpose of the previous statement)) 20:15:57 he would go to any lengths to get better latency 20:16:39 itidus21: what idea? I'm sure someone has attempted some kind of sophisticated time sync algorithm before... 20:16:55 no i mean pikhq's link throttling idea 20:18:09 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 oh 20:18:15 ....nevermind 20:18:18 :) 20:18:46 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 i will go into your topic some time when this hardware one has left my brain 20:20:33 im approaching that morning hours when i should be just waking up 20:21:10 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 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 not like ultra fast 20:22:15 sounds like a... 20:22:16 Does he, by any chance, play any network games? 20:22:17 pointless existence. 20:22:29 I bet he does. 20:22:39 It's just that most "ping hunters" I know are in "the business" mostly for that reason. 20:22:45 WoW, LoL, HL2, SC2, BF2 uhmm 20:22:50 so... yes. 20:22:51 i could go on 20:22:56 =)) 20:23:08 oops wait why did i list hl2 20:23:20 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 I bet in Battlefield 3 it would be more noticeable than in, say, SC2. 20:24:13 sc1, quake, quakewars, eve 20:24:24 "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 where latency and fast reflexes are still important but long-term effects of strategy and economy is much more important. 20:24:42 *are 20:26:31 so he is responsible for my connection.. so im happy with it 20:27:38 "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 Both subjective ("oh god my ping was so high that last game") and objective (how many dudes they killed) measurements, apparently. 20:28:50 Oh, now it's talking about marijuana. 20:28:52 "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 fizzie: lol 20:29:12 fizzie: good study. 20:29:30 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 haha 20:30:17 They don't even cite anyone. 20:30:25 Bunch of potheads, is my guess. 20:30:27 yep. 20:30:40 metaphor-making pothead bastards. 20:32:36 http://hg.mearie.org/esotope/esotope/rev/baa33b474417 i've just got it working after 2 1/2 months of hiatus. 20:33:07 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 presumably at tournaments they have awesome network latency though. 20:35:43 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 "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 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 itidus21: the important thing is: can you turn the knobs up to 11? 20:39:36 no, it goes around to 0 20:39:41 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 wait a second. 20:51:40 I'm seeing a pattern here. 20:51:50 everytime I ask myself "how would I write X in perl" 20:51:52 I should instead ask 20:52:01 "what CPAN module already does X for me?" 20:52:21 http://search.cpan.org/dist/Text-Levenshtein/Levenshtein.pm 20:52:24 well, that was easy. 20:54:19 print distance("foo","four"); 20:54:19 # prints "2" 20:54:19 print fastdistance("foo","four"); 20:54:20 # prints "2" faster 20:54:25 ...so what's the catch? 20:55:14 the catch is you would develop dependancy on cpan 20:55:21 Clearly, older applications relied on the slowness of distance 20:55:28 which would eventually come back to haunt you 20:55:29 Just like old games that required a turbo button to play 20:55:56 "Is faster in most cases" 20:56:02 I wonder what the worst-case stuff is like 20:56:13 Which may be important when dealing with web-facing applications 20:56:13 the keyword of the problem turns out to be bufferbloat as pikhq said.. 20:56:18 I think I actually want WagnerFischer so I can configure weights. 20:56:35 and the problem-mitigation is basically called QoS or traffic shaping 20:57:31 hmmm but Wagner Fischer makes insert/delete equivalent 20:57:37 I want delete to weigh more 20:59:14 is distance the number of steps to get from one string to the other? 20:59:36 yes. 20:59:52 with Wagner Fischer you can weigh different operations 20:59:56 i have been in here too long then 21:01:12 why's that? 21:01:51 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 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 i know i am using fairly large operations 21:04:46 ..... 21:05:24 -!- Jafet has joined. 21:05:45 and MAX [replace X with T] [insert H after T] 21:06:56 -!- oerjan has joined. 21:09:00 Levenshtein distance is the ur-example they always trot out when explaining the "dynamic programming" thing. 21:09:29 hmm? 21:09:50 -!- Jafet has quit (Ping timeout: 252 seconds). 21:10:00 You can compute it with a dynamic programming thing; just table the Levenshtein distances between all prefixes. 21:11:30 distance("windows", name); .. not sure about syntax of name.. is a function call that can be used to create a hierarchy 21:12:51 could be a fun gimmicky website... compare the distance between lovers names 21:13:07 -!- elliott has joined. 21:13:48 elliott: So how's your budding relationship with that "lax" person going? 21:14:00 -!- Jafet has joined. 21:14:36 or.. it could be used for baby name generation! 21:14:41 elliott: Compared Levenshtein distances yet? 21:15:27 if you take the mothers name and the fathers name, and find the name closest to the middle operation 21:17:52 see.. im an applications guy 21:17:57 * oerjan hazards a calculation that the distance is 8 21:18:16 i can think up uses for things but not build them 21:18:28 oerjan: Oh no! Or, wait, is that a good score? I don't know at all. 21:19:45 oh hm wait 21:19:48 Also isn't it just 4 deletions and 2 substitutions? 21:19:53 -!- Jafet1 has joined. 21:20:32 i somehow considered only deletions and insertions 21:20:46 a hazardous calculation indeed 21:20:48 16:57:37: elliott: this Vector will, in all likelihood, remain at 0 to 2 elements. 21:20:48 16:57:44: I could just as easily use a linked list. 21:20:48 16:57:58: except that I think I would want random access? not sure. 21:20:52 kallisti: n=2, you already have random access. 21:20:57 The second element is one pointer dereference slower. 21:21:05 fizzie: We're actually married. 21:21:18 -!- Jafet has quit (Ping timeout: 268 seconds). 21:21:28 elliott: true enough. 21:21:33 a linked list would be fine. 21:21:55 kallisti: And consing is much faster for a linked list. 21:22:48 Eek, who changed github? 21:22:50 Was it fizzie? 21:23:13 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 kallisti: Like I said, use Vector sparingly. 21:24:38 I did no such thing. *whistles* 21:24:48 fizzie: :( 21:24:50 fizzie: Put it back! 21:24:52 What's wrong with Vector? 21:26:20 What's our vector, Victor? 21:26:21 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 Their blog isn't saying anything about any changes. It seems to be mostly about drinking. 21:28:57 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 @msseg 21:42:27 Not enough privileges 21:42:33 @moseg 21:42:33 Maybe you meant: more msg 21:42:58 * oerjan wonders what that command kallisti kept correcting to is 21:43:07 @msg 21:43:08 Not enough privileges 21:43:16 hm i guess that _is_ it 21:43:26 @list msg 21:43:27 system provides: echo list listchans listmodules listservers uptime 21:43:29 @mossagas 21:43:30 You don't have any new messages. 21:43:59 @mesag 21:43:59 Not enough privileges 21:44:18 @messa 21:44:18 Maybe you meant: messages messages? msg oeis vera 21:45:05 @admin 21:45:05 Not enough privileges 21:45:09 @list admin 21:45:09 system provides: echo list listchans listmodules listservers uptime 21:45:49 i wonder if they really are in system, or if it just defaults to that because of the privilege stuff 21:45:57 @messages? 21:45:58 Sorry, no messages today. 21:46:02 @list wefiubp 21:46:02 No module "wefiubp" loaded 21:46:05 Aww :( 21:46:17 @message PiRSquared17_ Hello! 21:46:17 Maybe you meant: messages messages? 21:46:30 @tekk PiRSquared17_ Hello! 21:46:30 Consider it noted. 21:46:39 -!- Jafet has joined. 21:46:40 PiRSquared17: don't be sad, just sit down and meditate on the mantra "finnmark" 21:46:43 tekk = mell? 21:46:43 PiRSquared17_: You have 1 new message. '/msg lambdabot @messages' to read it. 21:46:52 @messages 21:46:52 PiRSquared17 said 22s ago: Hello! 21:47:01 finnmark 21:47:14 PiRSquared17: tekk = tell, autocorrection 21:49:00 hmm 21:49:14 @yrkk PiRS|test foo 21:49:14 Unknown command, try @list 21:49:20 @trkk PiRS|test foo 21:49:21 Unknown command, try @list 21:49:25 @trlk PiRS|test foo 21:49:25 Maybe you meant: tell url 21:49:42 How close is close enough? 21:49:45 2 21:49:51 @frob f :: a -> b 21:49:52 h . f = f . g 21:49:53 Lev. distance? 21:49:57 but only if unambiguous 21:50:19 ok 21:51:08 @fear f :: a -> a 21:51:08 Maybe you meant: faq keal learn read 21:51:18 hm... 21:51:36 @fare f :: a -> a 21:51:36 Maybe you meant: arr fact faq farber free more part yarr 21:51:53 @grue f :: a -> a 21:51:54 Maybe you meant: free run 21:52:19 @yarr 21:52:20 Get out o' me way, yeh landlubber 21:52:31 Oh, it's exactly what it sounds like. 21:52:52 @free coerce :: a -> b 21:52:53 g . coerce = coerce . f 21:53:52 @free id 21:53:56 f . id = id . f 21:54:22 @free ($) :: (a -> b) -> a -> b 21:54:22 Pattern match failure in do expression at Plugin/Free/FreeTheorem.hs:54:20-34 21:54:28 @free apply :: (a -> b) -> a -> b 21:54:28 g . h = k . f => g . apply h = apply k . f 21:55:59 -!- Jafet has quit (Ping timeout: 252 seconds). 22:00:18 @m 22:00:19 Maybe you meant: map messages messages? more msg . ? @ v 22:00:30 mess 22:00:32 @mess 22:00:32 Maybe you meant: messages messages? msg oeis 22:01:07 @oeis 1,3,6,10 22:01:11 Triangular numbers: a(n) = C(n+1,2) = n(n+1)/2 = 0+1+2+...+n. 22:01:11 [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 yay 22:01:47 @oeis 1,2,3,4,5,6,7,8 22:01:53 The natural numbers. Also called the whole numbers, the counting numbers or ... 22:01:53 [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 lol 22:01:58 The interestingest. 22:02:18 @map 22:02:19 http://www.haskell.org/hawiki/HaskellUserLocations 22:02:35 The requested URL /hawiki/HaskellUserLocations was not found on this server. 22:02:43 -!- Jafet has joined. 22:03:04 Should be http://www.haskell.org/haskellwiki/HaskellUserLocations ... 22:05:22 @oeis 3 7 4 8 1 22:05:27 Sprague-Grundy values for Dawson's Chess (octal game .137). 22:05:28 [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 lambdabot: Actually that was just from /dev/random... 22:08:55 PiRSquared17: /hawiki/ is where the old wiki was 22:09:19 @oeis 1 5 5 5 3 22:09:26 -!- Ngevd has joined. 22:09:26 Decimal expansion of zeta(3) = sum(m>=1, 1/m^3 ). 22:09:26 [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 XD 22:09:33 Hello 22:09:36 hi 22:09:43 I'm not my usual chirpy self today 22:09:48 For I am a tad annoyed at myself 22:09:56 At my ceaseless procrastination 22:10:08 Also, I'm listening to Chopin. 22:11:20 Chopin makes me sad 22:11:26 Ngevd: just put off the annoyance until later, duh 22:11:40 I should listen to... probably anything other than Nocturne in E-flat minor 22:12:01 Nocturne in B major, here I go! 22:12:01 :) 22:12:06 fizzie: PiRSquared17: oeis doesn't require the numbers to be consecutive in the sequence unless you use commas 22:12:14 oerjan: Ohhhh. 22:12:22 oh 22:12:40 oerjan: But does it require it to be a subsequence at least? 22:13:00 @oeis 3 1 1 22:13:07 fizzie: i'm not sure, check the website :) 22:13:10 @oeis 3,7,4,8,1 22:13:13 Pascal's triangle read by rows: C(n,k) = binomial(n,k) = n!/(k!*(n-k)!), 0<=... 22:13:13 [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 Sprague-Grundy values for Dawson's Chess (octal game .137). 22:13:19 [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 it probably _prefers_ consecutive hits, though 22:13:40 :t ord 22:13:41 Char -> Int 22:13:45 > map ord "Hexham" 22:13:46 [72,101,120,104,97,109] 22:13:56 >map chr [72,101,120,104,97,109] 22:14:01 err 22:14:08 @oeis 72,101,120,104,97,109 22:14:09 Sequence not found. 22:14:09 Err, space between > and map 22:14:14 > map chr [72,101,120,104,97,109] 22:14:15 "Hexham" 22:14:37 @oeis 72,101,120 22:14:37 Sequence not found. 22:14:40 @oeis 72,101 22:14:41 a(n) = a(n-1) + Sum_{0 [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 > map ord "PiRSq" 22:14:43 [80,105,82,83,113] 22:14:51 @oeis 80,105,82,83,113 22:14:52 Sequence not found. 22:14:56 o.O 22:14:56 > map ord "Taneb! 22:14:57 : 22:14:57 lexical error in string/character literal at end o... 22:14:58 > map ord "Taneb" 22:14:59 [84,97,110,101,98] 22:15:09 @oeis 84,97,110,101,98 22:15:10 Sequence not found. 22:15:17 @oeis 84 97 110 101 98 22:15:18 Sequence not found. 22:15:22 @oeis 3,4,6,1,2,6 22:15:28 Decimal expansion of the absolute value of the abscissa of the local minimum... 22:15:28 [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 @oeis 56,56,56,56 22:15:37 Quadruplicated tetrahedral numbers A000292 22:15:37 [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 @oeis 1 2 4 8 16 33 22:15:41 Generalized Catalan numbers: a(n+1)=a(n)+ Sum a(k)a(n-1-k), k=2..n-1. 22:15:41 [1,1,1,1,2,4,8,16,33,69,146,312,673,1463,3202,7050,15605,34705,77511,173779,... 22:15:49 @oeis 1 2 4 8 16 32 65 22:15:49 Quadruplicated tetrahedral numbers XD 22:15:50 Base 2 digits are, in order, the first n terms of the periodic sequence with... 22:15:50 [1,2,4,8,16,32,65,130,260,520,1040,2080,4161,8322,16644,33288,66576,133152,2... 22:16:25 Nocturne in B Major is making me angry 22:16:37 >:( 22:16:57 Let's try some Brahms 22:17:21 Opens quite lugubriouslty 22:17:26 s/ty/y/ 22:17:54 @pl flip (.) 22:17:55 flip (.) 22:18:00 @unpl flip (.) 22:18:00 (\ b c f -> c (b f)) 22:19:19 -!- Jafet has quit (Ping timeout: 240 seconds). 22:22:08 Okay, this is making me simultaneously mournful and excited. 22:22:16 Amazing how music can have such an affect 22:22:21 Effect. 22:22:25 One of the two.. 22:23:36 possibly both 22:23:46 kekeke 22:23:49 PiRSquared17: >>> 22:23:56 <<< 22:24:04 :t (>>>) 22:24:04 forall (cat :: * -> * -> *) a b c. (Control.Category.Category cat) => cat a b -> cat b c -> cat a c 22:24:16 :t flip (.) 22:24:17 forall a b (f :: * -> *). (Functor f) => f a -> (a -> b) -> f b 22:24:28 :t (>>=) 22:24:29 forall (m :: * -> *) a b. (Monad m) => m a -> (a -> m b) -> m b 22:24:29 CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALE 22:24:44 oerjan: huh? 22:24:45 Wow 22:24:47 that's the real type of (>>>) 22:24:48 :t (>>>) `asTypeOf` flip (.) 22:24:49 forall a a1 b. (a -> a1) -> (a1 -> b) -> a -> b 22:24:52 unless Ngevd means flip (.) 22:24:54 er 22:24:56 *unless you mean 22:24:59 but (>>>) has that type standard 22:25:17 Now I feel all optimistic, thinking we can arise from the ashes of a broken society to make a new world 22:25:23 Wow 22:25:30 we can't 22:25:32 :)))))))) 22:25:32 Chopin? 22:25:35 Brahms now 22:25:37 oerjan: btw 22:25:38 elliott: i was merely pointing out that :t completely obscures their types being related 22:25:55 challenge 1: write foo :: (Applicative g) => (forall f. (Functor f) => f a -> f b) -> g (a -> b) 22:25:59 (this is trivial) 22:26:04 challenge 2: write bar :: (Applicative g) => (forall f. (Applicative f) => f a -> f b) -> g (a -> b) 22:26:19 laws of foo: foo f = pure g, where f = fmap g (by necessity) 22:26:37 laws of bar: bar (fmap f) = pure f; bar (f <*>) = f 22:27:10 Now for some Beethoven! 22:27:10 bar (<*> f) = flip ($) <$> f 22:27:16 dunno if there are any other laws, those are the obvious ones 22:27:24 erm 22:27:27 yeah 22:27:32 wait no 22:27:36 I am of course referring to the films about the dog 22:27:38 ok dunno what bar (<*> f) should be 22:27:48 but w/e :p 22:28:07 oerjan: foo f = pure (runIdentity . f . Identity) is the obvious one 22:28:12 bar I don't know how to implement 22:28:41 are unicode characters allowed in the channel? 22:29:05 no, banned, totally banned (yes) 22:29:20 Yes, on the server, on the client, depends on the client 22:29:27 elliott: erm, why won't the same implementation work for bar, Identity is a Monad 22:30:04 oerjan: will it follow the laws? 22:30:27 brb 22:35:28 back 22:36:47 fmap f = (pure f <*>), of course, so those are the same 22:38:45 i have a hunch that any (f <*>) which has the right quantified signature must be of the form (pure g <*>) 22:39:02 oerjan: what about \x -> (pure f <*> x) <*>x ? 22:39:06 *<*> x? 22:39:14 hm... 22:40:04 elliott: but that's not of the form (f <*>) 22:40:30 oerjan: indeed not 22:40:31 hmm... 22:40:37 :t \x -> f <$> x <*> x 22:40:38 forall a b (f :: * -> *). (Show a, SimpleReflect.FromExpr b, Applicative f) => f a -> f b 22:40:40 >_< 22:40:46 :t \x -> (?f) <$> x <*> x 22:40:47 brb 22:40:47 forall a b (f :: * -> *). (?f::a -> a -> b, Applicative f) => f a -> f b 22:41:08 oerjan: ok well bar (\x -> f <$> x <*> x) should be pure (join f), obviously 22:41:17 does that work with the Identity implementation? i guess so... 22:42:16 i think so too 22:44:53 oerjan: well that was almost interesting :( 22:45:10 heh 22:46:07 any expression that is to be of all Applicative types must be composed of pure and <*>, i should think 22:46:54 @test 22:46:54 Maybe you meant: let list tell 22:48:32 Except thulium. 22:48:53 "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 Back 22:50:13 And now Debussy is making me feel alone 22:50:24 oerjan: IS NOTHING SACRED 22:51:54 elliott: yes, nothing is very sacred in some indian religions. hth. 22:52:44 :( 22:52:51 IS ALL THAT GLITTERS NOT GOLD 22:53:12 http://esoteric.voxelperfect.net/wiki/Main_Page 22:53:13 sigh 22:53:17 oerjan: you revert it im too lazy 22:53:42 (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 not this again :( 22:57:16 @test 22:57:16 Maybe you meant: let list tell 22:58:24 elliott: i can't, this stupid Taneb guy got to it first 22:58:42 Bloody Taneb 22:58:57 fuck taneb, worst person ever 22:59:04 * elliott founds taneb sucks club 22:59:20 Can I join? 22:59:21 elliott: also, no, gold is a counterexample to that theory. 23:01:05 OK I have thought some more about continuous chess and it is the best thing 23:02:46 Basically, the board is a continuous square, and each area corresponding to an initial piece is instead full of continuous piece. 23:04:10 Phantom_Hoover++ 23:04:17 How does play work? 23:04:39 Unless it involves derivatives or integration, I'm not interested. 23:04:44 I saw some other message somewhere about chess with continuous boards, and I have thought of similar ideas too 23:04:45 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 elliott, well of course. 23:05:34 Phantom_Hoover: How do horsies move. 23:05:37 Capture consists of moving some quantity of piece over some of your opponent's piece, which erases the target piece. 23:05:42 elliott, same way as everything else. 23:06:00 You just need to make the integral equal to a knight's move. 23:06:12 Ah. 23:06:32 Phantom_Hoover: Not restricted to the naturals, though, right? 23:06:42 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 hehe 23:06:57 Well, the move vectors are the standard chess ones. 23:07:02 woo hoo right on.. real brittania 23:07:08 Phantom_Hoover: Hmm, right, yeah, didn't think. 23:07:13 -!- monqy has joined. 23:07:17 But you can move half a knight two knight's moves, for instance. 23:07:20 Phantom_Hoover: OK so let's play a game. 23:07:27 Er, probably on a small board, or this is going to be completely confusing. 23:07:36 I guess that just equates to "bigger pieces in non-standard configuration". 23:07:57 Erm, there'll have to be some restriction placed on valid displacement vectors. 23:08:07 this is a pic i came up with earlier today depicting a continuous chess http://oi44.tinypic.com/2sbtmvb.jpg 23:08:28 Phantom_Hoover: Lame??? 23:08:32 Otherwise you can just hop your queen out basically anywhere. 23:08:33 explosion chess 23:08:47 Phantom_Hoover: OK what limit. 23:08:49 elliott, just that you can't move piece through piece. 23:08:55 OK good. 23:09:03 Except for the knight 23:09:05 What discrete board/configuration are we using. 23:09:10 I presume 23:09:17 itidus21, see, graphical display is basically impossible here. 23:09:35 You just need a real display. 23:09:37 itidus21: Those kind of idea have been done by a few other people too. 23:09:41 BADUM TISHHSHSHSH 23:10:01 There's nothing stopping you from mushing pieces out into a fractal, for instance, at least beyond the measurability constraint. 23:10:41 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 Phantom_Hoover: Can't we just remove the measurability constarint. 23:10:50 constraint. 23:11:21 Phantom_Hoover: So wait, how do you capture. 23:11:25 Oh, you said that. 23:12:01 Phantom_Hoover: I think you can make board configurations whose mate-yness is an unsolved problem. 23:12:10 Er. 23:12:11 Check-yness. 23:12:19 Undoubtedly. 23:12:31 Simply calculating if a move is legal is nigh impossible. 23:13:22 my idea was that each move should be a straight line which can have gaps in it if necessary 23:13:35 Phantom_Hoover: I NOTE YOU STILL HAVE NOT PRESENTED AN INITIAL BOARD 23:13:42 elliott, didn't I say? 23:13:57 Phantom_Hoover: I mean, a smaller one. 23:14:09 3x3, king at each corner. 23:14:11 hmmm playing around with weights on the Wagner-Fischer algorithm can have unexpected results. 23:14:14 im reference 23:14:17 Oh. You didn't, no. 23:14:19 Phantom_Hoover: OK you go first. 23:14:53 hmmm I don't know, perfect play sounds impossible. 23:15:17 kallisti, from what I understand there are an infinite number of possible moves 23:15:20 Phantom_Hoover: Also, *refrance 23:16:31 video games have the luxury of finite vector representations 23:16:50 Phantom_Hoover: GO ON 23:16:53 mostly anyway :-? 23:17:07 but math guys don't 23:17:15 poor math guys :( 23:17:25 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 Proof of legality is left as an exercise to the adjudicator. 23:18:11 (I appoint itidus21 as adjudicator because I am a terrible person.) 23:18:14 dear god, what have i done 23:18:20 Dear god, what has Phantom_Hoover done. 23:18:24 dear god 23:18:28 Phantom_Hoover: OK, I will have my move after approx. 3 hours of Wikipedia. 23:18:39 `pastelogs continuous 23:18:43 elliott, aww c'mon, at least make a capture. 23:18:51 Erm, *make capture 23:18:54 Phantom_Hoover: By "one batch of piece", do you just mean a continuous blob of the same piece-type? 23:19:02 elliott, same initial piece. 23:19:07 Phantom_Hoover: That's really inelegant? 23:19:09 Hidden state. 23:19:12 No output. 23:19:28 `pastelog continuous 23:19:31 Not really, you just have pawn1, pawn2, pawn3.... as separate pieces. 23:19:53 http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.2287 23:19:55 Or you could not have that, it just seemed a bit wrong to me? 23:20:17 humm.. 23:20:24 Phantom_Hoover: I think you should be able to treat your line of pawns as one big pawn? 23:20:31 Phantom_Hoover: Anyway OK um. 23:20:34 i know, i should just look at the logs for today 23:20:35 That looks like a plural. 23:20:48 Phantom_Hoover: Well, your row of pawn. 23:20:54 Phantom_Hoover: OK um... 23:21:01 God I'm too tired to spell selep 23:21:05 -!- Ngevd has quit (Quit: goodnight). 23:21:29 I was about to grumble about vectors but then I realised my definitions work fine with that. 23:21:29 Phantom_Hoover: Wait, er, you moved two spaces? 23:21:39 elliott, yes, but I only moved half my king. 23:21:49 Oh, right. 23:21:57 Phantom_Hoover: [2+pi,3-chaitin's omega] to... err... 23:22:18 Wait, no. 23:22:22 [pi,3-chaitin's omega] 23:22:32 pi-1, surely? 23:22:37 Er, yes. 23:22:42 [pi-1, 3-chaitin's omega] to......... 23:22:47 And you need to take its product with something. 23:22:50 Oh, right. 23:22:52 THIS IS HARD. 23:22:56 And *which* Chaitin's omega? 23:23:07 "pi-1", aka the "two-pi". 23:23:18 two-pi = tau 23:23:19 AKA tau, qed. 23:23:20 (Since it starts with a 2.) 23:23:21 yes 23:23:43 Phantom_Hoover: Which Chaitin's omega... I really want to say "the Chaitin's omega for the maximally-compressing language'. 23:23:45 *". 23:23:50 I somewhat doubt that's a thing, though, even theoretically. 23:23:52 I didn't know it had to be a contiguous subset you move, anyway. 23:23:58 OK, Chaitin's omega for binary lambda calculus per Tromp. 23:23:58 It didn't. 23:24:01 Just measurable. 23:24:13 [pi-1, 3-chaitin's omega]*[2,3] to [help Phantom_Hoover help 23:24:29 * Vorpal imagines chess with HP and headshots. [...] ok, what about chess on a finite euclidean plane itidus21: what are the pieces? points? what are "turns" in a continuous space. the pieces could be circles :D [...] 23:24:29 Also remove the measurability thing, I want to see elliott go all Banach-Tarski on you. 23:24:38 fizzie: I was considering suggesting that. 23:24:42 But I think it might be "cheating". 23:24:48 Also it would take countably infinite moves? 23:24:52 fizzie, honestly, I considered that. 23:25:03 Maybe that means it's a non-issue. 23:25:04 Have fun proving the legality of that. 23:25:20 oerjan, oi, are integrals even well-defined under those circumstances? 23:25:33 Phantom_Hoover: Can you help me figure out a destination please im bad at arithmetic 23:25:48 I'm not a very good Turing oracle. 23:26:10 Phantom_Hoover: Er, I don't think you need to be? 23:26:13 > tau/pi 23:26:14 Not in scope: `tau' 23:26:21 Phantom_Hoover: To help me figure out a simple valid destination. 23:26:23 @let tau pi 23:26:23 TemplateHaskell is not enabled 23:26:32 Phantom_Hoover: I mean, we know chaitin is 0.0something. 23:26:37 "WHITE LAUNCH DETECTED" [...] "E5 HIT, 1 DEAD" 23:26:38 And there's a 1 fairly early on. 23:26:40 In binary. 23:26:46 Though did you need three dimensions for at least the "standard" bit of reassembling a ball into two balls? 23:26:53 " Climbing up the ruins of the black queen?" 23:26:54 fizzie: I think so. 23:27:05 fizzie, yes. 23:27:27 fizzie: help me figure out a destination Phantom_Hoover is mean ;_; 23:27:35 Ultimately it's because 2D rotation is abelian and 3D isn't. 23:27:47 I don't want to have any part in your "game", sorry. 23:27:56 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 fizzie, are you talking smack about my game 23:28:26 Phantom_Hoover: Come up with a destination for me or I'll join him. 23:28:29 " itidus21, what about adding gravitation causing bent paths?" 23:28:38 ;_; 23:28:42 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 But Phantom_Hoover's move was so simple! 23:29:20 hmm 23:29:28 Hmm, I think moves need to ultimately consist of contiguous blocks of piece. 23:29:40 Because otherwise the movement integral isn't well-defined. 23:29:53 I might be more sure if oerjan would wake up, the lazy bastard. 23:30:16 Phantom_Hoover: COMEUP WITH A DSETINATION OR IL RIP YOUR SOUL 23:31:25 Phantom_Hoover: (Is it actually possible to come up with a destination can't you just apply ARITHMETIC>?0000) 23:31:26 Like, move all your pieces into a bar along the centre? 23:31:54 s/pieces/piece/ 23:32:07 Phantom_Hoover: Yes sure. 23:32:22 Phantom_Hoover: As long as there's some Chaitin on the board at the end of it. 23:32:23 You'll clip my piece at [2.5,3]×[0,1], at least. 23:32:41 Jesus christ, working out whether you're in check is nearly impossible. 23:32:50 :D 23:33:01 Assuming it means your opponent can capture all your piece in one move. 23:33:05 s/piece/king/ 23:33:12 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 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 Excellent. 23:35:17 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 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 Or was it just "move one blob" sort of thing? 23:36:05 continuous tarpit 23:36:07 -!- Klisz has joined. 23:36:14 !perl %x=(1,2); print scalar %x 23:36:16 1/8 23:36:16 fizzie, yes. 23:36:23 Phantom_Hoover: Wait, really? 23:36:24 lolwat 23:36:27 That wasn't clear frmo your description. 23:36:48 >_> 23:36:58 You can use piece for propulsion. 23:37:03 *from 23:37:06 Phantom_Hoover: You're just making shit up now. 23:37:06 !perl %x=(1,2); print %x == 2 23:37:07 No output. 23:37:09 !perl %x=(1,2); print %x == 1 23:37:09 1 23:37:27 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 elliott, no, it's a consequence of the legality integral. 23:37:48 !perl %x=(1,2,3,4); print %x == 2 23:37:48 1 23:38:08 Phantom_Hoover: Ah. 23:38:29 Phantom_Hoover: This must be what the Brockian Ultra-Cricket players have for an intellectual game. 23:38:33 (Who were they? Cue fizzie.) 23:38:33 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, 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 I guess continuous chess Ultra-Cricket is their equivalent of chess boxing. 23:39:37 oerjan, you've read the rules, I take it? 23:39:51 Phantom_Hoover: So 0.5*2.5 - 0.5*1 = 1 nowadays? 23:40:00 Phantom_Hoover: I like how almost all moves cannot even be named. 23:40:07 s/2.5/3/ 23:40:18 Phantom_Hoover: And therefore an AI that doesn't have to present its move is infinitely advantaged over a human. 23:40:24 (Assuming we had real computers.) 23:40:33 elliott, I like how I still have no idea what's a move and what isn't. 23:40:48 Phantom_Hoover: It gets easier if you drop the measurable criterion? 23:40:55 It... does? 23:41:03 But how does the integral fit in? 23:41:06 My head hurts now; thanks guys. 23:41:10 !perl print 3 > 1 23:41:10 1 23:41:11 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 hooray for 2 dimensions... 23:41:36 Phantom_Hoover: Well, it... gives you one less thing to check. 23:41:44 I mean, if it's not defined, nor is any condition I can think of for move legality. 23:41:54 oerjan, OK, what are the conditions of being able to do that integral? 23:42:22 Phantom_Hoover: I hate to point this out, but you haven't quite made it continuous. 23:42:27 Phantom_Hoover: Time is still discrete. 23:42:40 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 23:42:41 Oh, right you are. 23:42:54 Um... 23:43:12 Phantom_Hoover: (You might have trouble with the concept of "turn".) 23:43:14 The legality condition is the only thing that needs changing for continuous time, really. 23:43:14 i had this idea from the racetrack game that only one object should be able to move at a time 23:43:35 ...and the semantics of a capture. 23:43:44 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 what's a movesworth 23:44:39 monqy: One vector of movement per the blah blah 23:44:53 monqy, i dont know fwargleblagka;gaowirg 23:44:56 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 As I think they say in these situations, "gg". 23:45:58 (It's short for "good game".) 23:46:14 oerjan: 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 Oh and 23:46:28 OK I have thought some more about continuous chess and it is the best thing 23:46:28 Basically, the board is a continuous square, and each area corresponding to an initial piece is instead full of continuous piece. 23:46:32 plus 23:46:32 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 Glurk. 23:47:21 `addquote * Phantom_Hoover moves 0.5 Phantom_Hoover into the Atlantic, and captures fizzie's upper body with 0.5 Phantom_Hoover. Glurk. 23:47:25 796) * Phantom_Hoover moves 0.5 Phantom_Hoover into the Atlantic, and captures fizzie's upper body with 0.5 Phantom_Hoover. Glurk. 23:47:43 huh, cool I didn't realize you could allocate the space of a hash table 23:47:49 ironically, real chess on a physical board is actually continuous except for the formalities of turns and board squares 23:47:56 keys(%hash) = 1024; 23:48:04 resizes the hash table. 23:48:44 that last rule probably wasn't wise 23:49:04 might be better to capture the whole piece by covering part of the piece 23:49:18 or else you are surely just torturing yourselves 23:49:21 itidus21, are you kidding? 23:49:34 i don't know 23:49:36 (no) 23:49:43 Capturing is really, really easy that way. 23:49:54 Also it violates the spirit of continuous space and piece. 23:50:16 ok ok you're right 23:50:25 i support the rule 23:50:53 Indeed, the minute you start the game you are in check. 23:51:10 cell from dragon ball z uses these rules 23:51:37 -!- Klisz has quit (Quit: SLEEP, GLORIOUS SLEEP). 23:51:49 hm i think this integration is essentially about calculating (displacement of center of mass) * measure moved 23:51:50 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 (Knights are even cooler this way; you can use them as low-powered, tactical snipers. 23:51:59 -!- Patashu has joined. 23:52:12 oerjan, oh, that's a lot nicer. 23:52:37 UM EXCUSE ME I SAID I WASN'T INTERESTED IF INTEGRALS WEREN'T INVOLVED 23:52:39 Hmm, except for the condition about not being able to move piece through other piece, which I added later. 23:52:39 I have absolutely no idea how this continuous chess thing works but it sounds like the most awesome thing ever. 23:52:40 or wait, is that _divided_ by measure moved 23:52:58 er, no. 23:52:59 iconmaster, I have no idea either, and I invented it. 23:53:13 I mean, a game where a single move takes hours of mathmatical calculation? CLASSIC. 23:53:28 oerjan, I think it's just the displacement of the centre of mass, actually. 23:53:45 iconmaster: njot if u ply wif c0mmurrtr 23:53:48 Unless there's a counterexample that hasn't occurred to me. 23:54:17 elliott, on the plus side, calculating the centre of mass probably needs calculus too! 23:54:23 Phantom_Hoover: YAAAAAAAAY 23:54:29 Phantom_Hoover: Have you figured out continuous time yet? 23:54:32 iconmaster: Hours? 23:54:47 iconmaster: Dude, it's easy to create a move whose legality is an unsolved mathematical problem. 23:54:58 wow 23:55:03 Heck, you might even be able to make a move whose legality is independent of ZFC. 23:55:21 I mean, for someone like ME to make a move would take,like, infinity+1 hours. 23:55:29 AKA infinity hours. 23:55:33 yep 23:55:42 -!- NihilistDandy has joined. 23:55:43 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 This is the best superpower? 23:56:25 ok i thought up how it can get weirder 23:56:29 challenge: make the cantor set important. go 23:56:38 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 if you extend the gameboard into the physical universe 23:56:59 Phantom_Hoover: So, continuous time? 23:57:09 itidus21: so when you die in continuous chess you die in real life? 23:57:20 itidus21: Reality doesn't have the necessary resolution for continuous chess. 23:57:30 elliott: ahh i see 23:57:30 oerjan, OK, now for non-collision. 23:57:46 Make the rules change based on the number of continunitous segments in play? 23:58:08 iconmaster: NOT MATHEMATICALLY ELEGANT 23:58:10 what constitutes a "move" exactly? 23:58:20 kallisti: lol... hahah 23:58:22 hahahhaha 23:58:27 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 ok I have like no handle on what is going on I think I'll shut up 23:58:41 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 oerjan, that's better. 23:58:55 can it be proven that a valid move even exists? 23:59:08 Phantom_Hoover: But knights? 23:59:10 ideally the bijection should be measure-preserving. 23:59:12 itidus21: Yes. 23:59:14 Phantom_Hoover made one. 23:59:28 (on subsets) 23:59:34 Also, I continue to assert that measurability should not be a condition. 23:59:48 Soooo... a move is a measure-preserving bijection which does not violate the intersection rule. 2012-01-07: 00:01:41 Phantom_Hoover: How many times do I have to point out CONTINUOUS TIME 00:02:04 And for which C(f(P)) = C(P) + move. 00:02:08 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 oerjan, failing to see the problem?? 00:04:08 hmmm I think I made a command abbreviation / typo checker that works slightly better than lambdabots. 00:04:19 Phantom_Hoover: Well it does mean you can move a bit too quickly... 00:04:24 Phantom_Hoover: like, a pawn on e4 could move half 2 steps backward and half 4 steps forward 00:04:49 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 otherwise it lists all of the matches. 00:05:16 oerjan, of course; what of it? 00:05:21 Phantom_Hoover: O KAY 00:05:34 You can take half a piece that way, sure. 00:05:47 Phantom_Hoover: And then another, with one left movement and another acceleration. 00:05:51 this means that you can both abbreviate commands as well as have minor typos corrected for you 00:05:59 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 although there are of course other ways to go about that 00:06:32 itidus21, TbH, by now, it's not too hard to understand. 00:06:55 hmm.. 00:07:10 i like the dirty version 00:07:26 the impossible to play one 00:08:05 It's still impossible to play. 00:08:07 Phantom_Hoover: CONTINUOUS TIME 00:08:09 That was mainly because I made a hash of the definition. 00:08:19 is there a possible to play version of this game? 00:08:22 elliott, it's not elegantly generalisable, I think. 00:08:32 kallisti, only one way to find out... 00:09:12 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 Phantom_Hoover: :( 00:09:33 kallisti: No. 00:09:44 Well, it would be easy if you used the rationals or whatever. 00:09:46 But also boring. 00:10:00 That post-apocalyptic chess thing is pretty cool now, although it will never see the light of anything interesting. 00:10:29 elliott, um, use Coq???? 00:10:30 elliott: I think you took me seriously just slightly beyond the reasonable threshold. 00:11:13 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 Phantom_Hoover: What thing? 00:11:22 it seems to be the type of game which there is no board.. 00:11:38 and the board is constructed as necessary to help the player determine the game state 00:11:38 http://codu.org/logs/log/_esoteric/2012-01-06#171155PhantomHoover 00:11:41 Read on. 00:11:42 And yet before, I did not know any purpose of a comonad in the program. But now I do. 00:11:53 Up to Vorpal's SCSI fetish. 00:12:59 (=>>:) :: ProgramState -> (ProgramState -> [Token]) -> ProgramState; (=>=:) :: (ProgramState -> [Token]) -> (ProgramState -> [Token]) -> (ProgramState -> [Token]); (<$:) :: [Token] -> ProgramState -> ProgramState; 00:13:38 Phantom_Hoover: Maybe I'll just read the whole log? 00:16:00 @m 00:16:00 Maybe you meant: map messages messages? more msg . ? @ v 00:16:14 -!- MDude has joined. 00:16:47 the chess topics started going berzerk once vorpal said: "* Vorpal imagines chess with HP and headshots" 00:17:45 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 16:41:08: 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 kallisti: the idea is that it encourages competition by encouraging people to innovate 00:19:03 and discouraging copying 00:19:58 sure, but a state of perfect competition exists when you have multiple sellers selling the same thing at the same quality. 00:20:01 patents make this difficult. 00:21:28 i nominate Phantom_Hoover to explain the idea of a bigger picture. 00:21:51 nope. you're not allowed to get people to explain your points for you. 00:21:55 unless I get someone too 00:21:58 17:09:02: (All the school computers have Halo because.... I don't know.) 00:22:00 we can have a proxy debate 00:22:02 Phantom_Hoover: So they can kick people out for it. 00:22:18 I dislike patents. I think is better not patented, and not patented you can still competition, innovation, unrestriction, etc. 00:25:38 17:20:44: 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 fizzie: That was impressively quick. 00:25:43 elliott: I suppose if there's always innovation then the patent system does not produce monopolies. 00:26:05 but it does restrict competition / create a barrier of entry 00:26:57 17:28:25: 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 17:28:38: +23 is pretty much room temperature, though. 00:26:57 17:28:40: fizzie, I had an old sempron that idled at 28 C 00:26:57 17:28:50: when it was like 17 C inside 00:27:04 fizzie: My CPU idles BELOW ROOM TEMPERATURE. 00:27:06 kallisti: Yes I agree it does restrict competition and other thing too 00:27:06 With AIR COOLING. 00:29:20 oh I misread lambdabots code. my bot and it do the exact same thing.. 00:30:43 Good to know yours will suck at typo-corrections then 00:31:06 I tried applying weights but... it's hard to determine how they interact with one another. 00:32:03 elliott: oh also it checks identification on bot admins which makes it immediately better. 00:32:32 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 17:32:52: anyway is there any realtime chess I wonder 00:34:06 yes 00:34:14 i dont have a link though 00:34:26 Yes there is a lot of chess variants, there is some kind of realtime chess 00:34:35 17:35:15: Vorpal: FRP maintains a sample-independent abstraction that logically resembles continuity. 00:34:42 kallisti: that doesn't mean computers are continuous 00:34:49 I would weigh levenshtein distance by distance on a QWERTY keyboard but that makes it non-keyboard-agnostic. 00:34:52 frp is carefully restricted to not actually let you do anything non-discrete. 00:34:53 elliott: of course not. 00:35:05 s/would/could/ 00:54:41 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 hmm how difficult would it be to augment the wagner-fisher algorithm to include character swaps as an operation. 00:57:07 kallisti, remember dvorak and so on 00:57:16 * oerjan thinks maybe he should have flipped g's arguments 00:57:24 for example: help vs. hlep instead of being 2 substitutions this could be 1 character swap 00:57:28 a very common case in typos 00:58:01 night 00:58:11 kallisti: http://en.wikipedia.org/wiki/Damerau%E2%80%93Levenshtein_distance 00:59:40 but... but 00:59:42 there's no... 00:59:45 there's no CPAN module 01:00:54 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 oerjan: yeah 01:01:09 oerjan: linear temporal logic 01:01:11 I think you mean 01:01:41 hm i think it was a slightly different mention 01:02:47 -!- Vorpal has quit (Ping timeout: 276 seconds). 01:03:07 http://search.cpan.org/~ugexe/Text-Levenshtein-Damerau-0.02/Levenshtein/Damerau/lib/Text/Levenshtein/Damerau.pm 01:03:10 oh hi 01:03:38 kallisti: is there a rule 34 variant for perl 01:03:51 if it exists, there's a cpan module for it. 01:03:54 if there exists, there's a cpan module containing porn of it 01:03:55 mine's better 01:04:00 including "if there exists" 01:04:14 -!- iconmaster has quit (Quit: iconmaster is gone!). 01:04:17 O KSY 01:04:30 o ksy 01:04:41 * oerjan found it iresponsible to correct typos under the circumstances 01:05:21 iresponsible 01:05:29 very much so 01:05:51 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 kallisti: It probably does. 01:06:09 Edit distance is a huge pain to calculate :p 01:06:17 What if someone does @[GIGANTIC COMMAND]?!?!?! 01:06:28 then they're a jerk. 01:06:38 @23jj3o4jioj4o34509i34509832049834oitjkgjohjgoihjrfoijsdvoihweeoihsdvfoijhweroijwroijweoirjweegoijweogijsdoifjaskldnwiurghoiwehfijajsfoiwrg 01:06:39 Unknown command, try @list 01:09:24 hmmm for some reason it's not installing. 01:09:59 hmmm it has no makefile. perhaps that's the issue. 01:14:49 * kallisti installs manually. 01:17:50 One doesn't really need a makefile, anyways. 01:18:07 Let's say you've got a single-file C program foo.c. make foo 01:18:08 Bam. 01:18:48 (make, the build tool with domain-specific knowledge that somehow lacks important parts of the same!) 01:19:38 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 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 > product [] 02:52:23 1 02:52:39 @src product 02:52:39 product = foldl (*) 1 03:05:22 Do you know about digraph categories? 03:10:40 nope 03:10:46 -!- nooga has quit (Ping timeout: 260 seconds). 03:11:55 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 oh 03:14:44 directed graph 03:14:52 Yes 03:14:57 yes I know what that is. I wasn't familiar with that term. 03:15:02 It is also called "digraph" for short. 03:21:21 Isn't the monad for categories one that's over the category of digraphs? 03:21:37 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 And I don't remember how monads work, categorically theoretically; I just remember that Catsters video. 03:26:59 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 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 Can you please tell me in case I did it wrong? 04:08:25 04:08:50 HI 04:09:06 Hello!!! 04:09:25 CTCP 04:09:53 clog and iamcal have error message for unknown command 04:23:03 SHUT the fuck up 04:31:35 !!! 04:32:46 -!- elliott_ has joined. 04:32:55 sup 04:33:11 -!- elliott_ has changed nick to Guest96751. 04:33:34 fuck that shit 04:33:46 fizzie: hi 04:33:50 kallisti: hi 04:34:34 kallisti: hi hi hi 04:34:53 Guest96751: hi 04:34:57 hi 04:40:12 -!- Jafet has quit (Quit: Leaving.). 04:41:40 If MSPA updates (which is looking more and more unlikely), don't expect me to remember to ping you 04:42:09 Does glogbot log CTCP/ 04:42:16 I AM SO DISAPPOINTED!!! 04:42:18 im cry 04:42:19 betray :( 04:42:33 Apparently not. 04:42:45 SECRET UNLOGGED MESSAGES MUAHAHAHAHAHHHHHHHHHHHHHHAAAAAAAAA 04:42:58 Sgeo: see: raw log 04:43:52 Ah 04:48:40 Raw log includes everything it receives, except for the secret password 04:49:41 What secret password 04:49:48 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 HEY_EVERYONE_AM_I_LATE? 05:51:10 well 05:51:11 so 05:51:19 ive done what i had been curious about doing for years now 05:51:29 i build a graph reducing evaluator 05:52:49 it 05:52:52 took you that long 05:52:57 or is this something different from a term rewriting language 05:53:10 Do you know if the things I wrote about monad/comonad of digraph category is correct or is wrong or confuse? 05:53:41 elliott: oh its completely different 05:54:10 ok 05:54:33 this is a little C program that does reduction of terms-as-structs 05:55:33 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 Sounds like term rewriting to me. 05:56:22 well it is, except theres sharing due to using pointers 05:57:00 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 no, it indeed does not 05:58:11 SO HA 05:58:15 but because its got sharing, you get call by need for free 05:58:16 But go on. 05:58:54 but the cool thing is that its simple enough that you could built the controller directly in a chip 05:59:08 See: Reduceron. 05:59:13 no 05:59:16 Yes. 05:59:20 It's a graph-rewriting machine in hardware. 05:59:29 yes, it is, but it has some fancy intermediate language for this 05:59:43 it compiles LC into a specialized language 05:59:50 No. 05:59:51 this uses the LC /as the machine language/ 06:00:02 It compiles a sugary Haskell-alike into a term-rewriting language. 06:00:10 The latter is what the Reduceron deals with. 06:00:26 -!- MDude has changed nick to MSleep. 06:00:30 "it compiles LC into a specialized language" 06:00:49 by lc what do you mean 06:00:53 ok so its not pure LC its something modified 06:00:59 same diff 06:01:21 the point is, the reduceron doesnt use LC as the machine code 06:01:31 whereas in principle you could do so with this evaluator 06:01:34 augur: OK, you're confused. It doesn't do much to pure LC. 06:01:40 The point is that it has pattern-matching, data types, conditionals, etc. 06:01:44 That turns into _functional_ term rewriting code. 06:01:52 You could just as easily write pure LC-style code at the lower layer. 06:01:59 yeah yeah anyway thats irrelevant to the point 06:02:09 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 ~pure~ lc gives me a bit of spooks 06:02:34 monqy: you have to get used to church encodings 06:02:47 not that sort of spooks 06:02:51 alphaconversion sort of spooks 06:02:55 o 06:02:58 debruijn! 06:03:04 sure 06:03:08 use your indices! 06:03:10 but is it still "pure" then 06:03:10 FSVO pure equal to not the original 06:03:52 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 anyway, im going to muck around with an FPGA simulator to see what i can see :) 06:04:04 Hmm, http://emacsformacosx.com/ seems reasonable 06:04:07 elliott: aquamacs 06:04:13 augur: No. 06:04:21 you asked for the one of the season! 06:04:28 The good one of the season. 06:04:31 o 06:06:35 augur: Post your C code already. 06:06:51 oh i didnt realize you cared 06:07:07 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 Yeah yeah, so does everybody. 06:09:57 http://pastebin.com/DPvpgnL8 06:10:16 elliott: the point tho is that this is simple enough to design a non-von-neumann architecture with :) 06:10:42 Lam? 06:10:44 watch out for memory leaks. its not designed to be memory friendly. 06:10:48 lambda! 06:10:53 So it's actually just LC, not term-rewriting. 06:10:55 lamb 06:11:05 i didnt say anything about term-rewriting, you did 06:11:05 Also you haven't heard of switch statements. 06:11:12 You said graph-rewriting, same thing. 06:11:23 i said it was a graph-reducing evaluator 06:11:27 elliott: Wait, you're running Mac OS X these days? 06:11:28 Excellent. 06:11:37 shachaf: Why is that excellent? 06:11:43 If you need reassurance, I still hate it. 06:11:43 shachaf: hes been on os x for forever... 06:11:45 You're finally showing your true colours. 06:11:49 augur: No I haven't. 06:11:52 really? 06:12:00 ever since ive known you, i think 06:12:11 I used it for a bit, then I stopped because it sucks. 06:12:12 But you've never known elliott. 06:12:19 ahh i see 06:12:21 well 06:12:22 anyway 06:13:25 shachaf: Can you write me a statically-typed, non-strict term rewriting language? 06:13:57 elliott: Sure. 06:14:06 #!/bin/bash 06:14:11 read 06:14:16 echo SYNTAX ERROR >&2 06:14:18 exit 1 06:14:25 shachaf: Excellent. 06:14:36 elliott: If you figure out the right syntax, it does just what you want. 06:14:38 elliott: how old are you now? 17> 06:14:48 26. 06:15:06 lets see, you were 13 in 2006, so youre 18 now surely 06:15:10 at least 06:15:22 You are really bad at arithmetic and memory. 06:15:33 uh 06:15:58 2011 - 2006 = 5; 13 + 5 = 18 06:16:05 give or take, depending on when your birthday is 06:16:21 iinm its something like november 3 or something 06:16:32 I... 06:16:34 (im almost certainly mistaken) 06:16:36 but! 06:16:44 youre within a year of 18 06:16:49 It's like you're trying to be as mistaken as humanly possible. 06:16:53 And succeeding. 06:16:58 i dont need to try. 06:17:09 elliott: You're -4, aren't you? 06:17:18 -4 + 2i 06:17:21 (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 shachaf: -6 06:17:26 I had a birthday. 06:17:27 ehhh.. 06:17:33 maybe 2007 then. 06:17:35 elliott: What date is your birthday? 06:17:48 I remember when you said you had a birthday but I didn't note it down. 06:17:48 i knew you within a year of getting to stony brook, possibly within the first few months of being there 06:17:48 shachaf: November 37th. 06:17:52 so late 600 early 2007 06:18:03 shachaf: Pls abandon piece of paper with elliott notes. 06:18:04 elliott: Did you read _The 35th of May_? 06:18:06 november 3, november 37, SAME DIFF 06:18:08 fosh 06:18:10 gosh even 06:18:18 shachaf: No. Should I? 06:18:21 elliott: Which one? 06:18:26 All of them. 06:18:26 elliott: Yes, it's a good book. 06:18:50 OK, how about this proposal: 06:18:52 Stop with the ageism. 06:18:57 hm 06:18:57 This includes discussing ages. 06:19:15 elliott is a dawg so you have to measure his age in dawg years. 06:19:16 my earliest logs for this channel are may 2008 06:19:19 i suppose thats plausible 06:19:32 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 Fortunately I'm old now. 06:19:54 Were you ever not old? 06:19:59 Yes. 06:20:15 elliott: how else am i supposed to figure out what david deutsch looked like as a young man? 06:20:25 if not by looking at you 06:20:46 * elliott is actually David Deutsch. 06:20:50 :O 06:21:04 WORLD RENOWNED PHYSICIST DAVID DEUTSCH IN THIS VERY CHANNEL! 06:22:32 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 Oh. 07:39:58 shachaf: You didn't tell me erus` asked that SO question. 07:40:34 Guest55419: I don't know what that SO question is. 07:40:40 http://stackoverflow.com/questions/8756456/how-to-test-equality-of-recursive-structures 07:40:42 And I don't know much about erus`. 07:40:56 01:32:28 erus` pasted “babbys first type system” at http://hpaste.org/56146 07:40:57 erus` is a much better nick than "Guest55419", though. 07:41:03 Guest55419 is the best nick. 07:41:09 It's a commentary on the meaninglessness of identity. 07:41:29 Oh? 07:41:33 -!- Guest554110 has joined. 07:41:35 TAKE THAT 07:41:47 By the way, the Applicative operators should be called .$ and *$, I think. 07:42:08 -!- Guest554110 has changed nick to Guest554111. 07:42:22 Guest55419: Are you reading #haskell logs? 07:42:23 Except that ($) should be called something lighter, and be infixl. 07:42:28 shachaf: Maybe. 07:42:31 Shame on you. 07:42:39 You'll find the places where I mad. 07:42:56 In another channel I even more mad. 07:43:09 08:14 < shachaf> Approximately half of #haskell ought to be eliminated. 07:43:14 08:14 < shachaf> I hate everybody. 07:43:18 08:14 < shachaf> That probably has to do with how I haven't eaten all day. 07:43:43 Let's rename ($) to (•), (<$>) to (‹•), and (<*>) to (‹•›). 07:44:27 Let's have infixl $, infixl *, ($) = (*) = id 07:44:33 join ∘ putStrLn • (+) ‹• readLn ‹•› readLn 07:44:34 That's the logical way to do it. 07:44:44 Objectively nicer. 07:44:52 By the way, my IRC client is racist. Is that thing after "join " a "::" character? 07:45:02 No, it's the composition operator. 07:45:11 http://codu.org/logs/log/_esoteric/2012-01-07#074433Guest55419 07:45:13 Oh. 07:45:22 Although that renders the guillemet-bullet things uglily thanks to monospacedness. 07:45:25 I DON'T READ LOGS 07:45:42 Guillaume's Face 07:45:46 shachaf: Also, is #not-haskell actually a thing? 07:46:20 Guest55419: Why don't you join it and see? 07:46:38 It might be bad! It might, say, have people who name themselves after violating rules. 07:46:45 Or people who sha the chaf. 07:46:58 Name themselves after violating rules? 07:47:08 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 Guest55419: Ew. 07:47:54 No cheater in there. 07:48:34 Guest55419: cheater got a job or something, by the way, so he's not in #haskell-blah much either these days. 07:48:51 Guest55419: I was typing, not fair! 07:49:03 shachaf: Oh, I assumed he'd just stopped bothering us in favour of you guys. 07:49:11 Good to know the tranquil is global. 07:51:39 shachaf: I agree that #haskell is crappy. 07:58:19 -!- Guest554111 has changed nick to Guest554112. 07:58:31 Hi. 07:58:34 Guest55419: But imagine that all the nonsense was gone! 07:58:37 Then it would be good. 07:59:05 kmc has pretty much abandoned it, I believe. 07:59:07 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 *media 07:59:27 Although I miss out on all the VALUABLE CHAT. 07:59:31 Those monad tutorial jokes? 07:59:33 I see none of 'em. 07:59:41 -!- Guest554112 has changed nick to Guest554113. 08:00:24 05:17:16 there are functors that don't have 'pure' 08:00:24 05:17:16 i meant the opposite 08:00:24 05:17:31 yes sorry 08:00:25 05:17:32 hpc: any concrete example? 08:00:27 05:17:36 i can't think of any off the top of my head 08:00:31 Oh come on. 08:00:59 05:20:05 All examples which I know of functors, can be made Applicative by undefined 08:01:07 shachaf: DYK you can define anything as undefined in Haskell? 08:01:09 teneen has a point. 08:01:13 GET IT??? 08:01:19 HA HA HA HA HA HA no. 08:01:26 As in pointed functor. 08:01:30 OH MY GOD STOP TALKING ABOUT SET 08:01:31 GUYS 08:01:32 GUYS 08:01:34 (,) 08:01:36 IT'S SO TRIVIAL 08:01:36 Guest55419 08:01:38 (,) 08:01:40 (,) 08:01:43 smiley 08:01:43 (,) 08:01:44 (,) 08:01:45 Guest55419: MORE LIKE (x,)! 08:01:47 it's bird 08:01:48 -!- Guest554113 has changed nick to Guest554114. 08:01:53 shachaf: NO TUPLE SECTIONS FOR TYPES!!! I THINK 08:01:57 Guest554114: YOU'LL OVERFLOW THE INT 08:02:23 05:21:41 teneen : using that, i think `CoYoneda IORef' is an example 05:22:08 ski: but it can be made an instance of Applicative very easily 05:22:15 teneen : how ? 05:23:34 instance Applicative (CoYenda f) where pure x = undefined; _ <*> _ = undefined 08:02:34 Guest55419: THAT SECTION IS CONCEPTUAL 08:02:37 shachaf: You said half of #haskell should be eliminated. 08:02:39 Guest55419: LIKE (r ->) 08:02:40 Try 90%. 08:03:21 -!- Jafet has joined. 08:03:21 Guest55419: You should tell teneen that the definition for <*> is too defined. 08:03:29 It should be (<*>) = undefined 08:03:30 shachaf, not given up permanently, just yet 08:03:30 kmc: You have 2 new messages. '/msg lambdabot @messages' to read them. 08:03:38 maybe i should /join #haskell only on tuesdays and alternate fridays 08:04:16 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 (NB: Not based on facts.) 08:04:23 There should be a channel where only the cool people from #haskell go. 08:04:23 it's more like "it's bad for me to spend 18 hours a day in #haskell" 08:04:24 MAYBE IT EXISTS AND I JUST WASN'T INVITED. 08:04:31 maybe it's #esoteric 08:04:33 shachaf: Maybe it's #esoteric! 08:04:37 kmc: Thank you. 08:04:38 (,) 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 Well, I wasn't invited to #esoteric. 08:04:45 Guest55419, PWN'd 08:04:57 shachaf: Yes, we were doing so well at the "cool people" thing before you barged in. 08:05:24 05:24:41 teneen: but that instance clearly breaks the Applicative laws 08:05:25 05:25:44 rostayob: which one? 08:05:26 :D 08:05:40 * Guest55419 is viewing this as an elaborate comedy routine. 08:06:14 shachaf: Ooh, then we get, on Set having an Ord constraint instead of Eq: 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 Guest55419: To be fair, most of the monad laws etc. are typically stated "modulo undefined". 08:06:41 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 shachaf: Which gives us horrors like the definition of `evaluate`. :( 08:06:52 in anywhere permanent / editable / easily linkable 08:06:52 kmc: Sometimes it's the opposite. 08:06:55 What common questions? 08:06:56 Oh. 08:06:58 Right. 08:07:10 kmc: A nice thing about SO is that it avoids that problem by definition. 08:07:14 That ehird fellow writes answers on StackOverflow. 08:07:14 yes 08:07:23 shachaf: I hear he's FAMOUS. 08:07:29 I think SO is great for common questions, and IRC might be better for deep / open-ended discussion 08:07:37 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 Jafet, but if you don't do it, you end up with #haskell 08:07:55 But it's understandable, since it'd require about 2x the work to be good at it. 08:08:05 @karma ##c 08:08:06 ##c has a karma of 2 08:08:26 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 Guest55419, do you think other media avoid that problem? 08:08:39 It works if everyone has the same clock speed, though. 08:08:42 'cause I've seen it happen IRL ;) 08:08:49 kmc: No :) But IRC's quick-fire real-time nature exasperates it. 08:09:02 Slow media like email even it out because you can't go fast. 08:09:08 Well, you can, but it fills up everybody's inboxes. 08:09:08 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 Monad tutorials are the obvious examples but it's a lot more common than that. 08:09:27 shachaf: I've just read the first two chapters of LYAH! Who wants to read my Haskell tutorial? 08:09:34 Haskell is purely functional, which means that it can't print to the screen. 08:09:39 shachaf, yeah. if we encourage people to put things on the wiki, then we can fix them 08:09:44 Instead we use GHCi to execute our code, which turns into side effects behind the scenes. 08:09:48 but in practice many wiki articles are shite too 08:09:51 GHCi is written in C/C++. 08:10:01 guest should write a tutorial 08:10:03 kmc: That's true, except that wiki articles tend to end up at local optima. 08:10:04 Guest55419, I see you've been taking lessons from shachaf on how to troll me 08:10:11 NOTE: The following recursive fibonacci program is slower than this iterative C version. 08:10:11 shachaf, better than local pessima 08:10:24 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 kmc: Hey, I pretty much stopped doing those things when you asked! Didn't I? 08:10:36 shachaf: No. 08:10:42 data D = D deriving (Eq) 08:10:48 instance Num D where { fromIntegral 8 = D } 08:10:53 (========) = (==) 08:11:10 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 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 For instance, I am fairly sure the monads-as-containers explanation would get upvoted pretty heavily. 08:12:36 elliott: That's true of IRC too, pretty much. 08:12:44 Except upvotes = visibility = volume of posts. 08:12:59 But, what monads is, is a kind of mathematical structure supporting certain operations following certain laws. 08:13:12 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 Some types that are monads might be containers, but some might have a different purpose 08:13:29 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 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 a lot of monads are nicely described this way, though not all 08:13:50 kmc: I think it only apply to some types. Some monad types can be as containers 08:13:51 kmc: Yes, fair enough. I should have typed "space suit" instead or similar. 08:13:52 kmc: I think it's harmful. 08:14:02 I agree with shachaf though, I don't condone teaching monads like that. 08:14:06 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 At the point that someone wants to "understand monads", at least. 08:14:15 It could be useful for developing further intuition about when to apply monads after you know what they are. 08:14:36 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 right 08:15:02 if you show them ((->) r) then it's obvious that it needn't *literally* contain an a 08:15:04 shachaf: Hey, you want to know the real comedy? 08:15:08 while showing how it can *conceptually* contain one 08:15:08 We're talking about monad tutorials. 08:15:13 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 pie jesu domine, dona eis requiem 08:15:43 @google monads are essentially decorators with method chaining 08:15:44 http://news.ycombinator.com/item?id=439429 08:15:44 Title: So monads are essentially decorators with method chaining? | Hacker News 08:15:45 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 shachaf: Um, excuse me, monads are about sequencing. 08:15:55 That's the best explanation of monads. 08:15:55 sigh 08:16:03 Oops. 08:16:06 elliott: No only some can be 08:16:10 [] 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 I heard it on reddit. 08:16:15 Let's go back to the pedagogical discussion. That or data D = D. 08:16:21 Yes, D = D is better than this. 08:16:24 kmc: Expand. 08:16:30 i'm glad you understand the brilliance of my type and Num instance 08:16:45 oh noes i wrote fromIntegral instead of fromInteger 08:16:47 data D where D :: D 08:16:52 * kmc hangs head in shame 08:16:52 ::D 08:17:01 kmc: Hey, if you want it to be in Num, it is. 08:17:05 Nobody knows what's in Num. 08:17:08 You also forgot Eq. 08:17:08 so this is basically the cool kids version of #haskell 08:17:14 You can remember about 2/3rds of it at the best of times. 08:17:18 shachaf: He derived that. 08:17:22 Oh. 08:17:24 kmc: Sometimes. 08:17:28 Show, then. 08:17:32 #esoteric : #haskell :: YOSPOS : SH/SC 08:17:47 How did Num even get defined? 08:17:55 Like, I want to know how they actually decided which arbitrary subset of methods to include. 08:18:22 Do you know what monads and comonads that a digraph category can have? 08:18:35 I tried to explain but am unsure if it is correct 08:18:42 Makes two of us. 08:18:50 . o O ( C : Haskell :: Exoteric : Esoteric ) 08:18:59 Haskell is the ultimate esoteric language 08:19:06 See, only in #esoteric is our Haskell talk punctuated with zzo38 and itidus21. 08:19:08 that or C++ 08:19:24 kmc: Not true, people have actually read the Haskell report. 08:19:35 There's at least one well-liked esolang that nobody has read the entire spec to. 08:19:43 Now *that's* dictionary-definition esoteric. 08:19:58 http://esoteric.voxelperfect.net/wiki/Special:Recentchanges I like how we have multiple spambots editing the main page IN SUCCESSION. 08:20:09 Editing each other's spam. 08:22:34 I'm contemplating whether to go to Hac Boston. 08:22:45 do it 08:22:57 This Hac Boston thing has been talked about for like three years and it still hasn't happened. 08:23:01 Boston just can't be Hacced. 08:23:09 elliott: It's in two weeks. 08:25:19 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 O_O 08:27:19 I said that a digraph category with a final object has a Proxy monad but I am a bit unsure 08:27:24 ...what are you doing that wants that 08:27:41 you are a strange person with strange cares 08:27:47 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 But apfelmus wants to keep the API IORef-compatible. 08:28:13 "The data structure is analogous to a bank vault, where you can access different bank boxes with different keys" 08:28:15 kmc: Basically, it lets you write a heterogeneous map where the type information is stored in the keys. 08:28:15 COOL ANALOGY BRO 08:28:19 Hey, not my package. 08:28:21 http://hackage.haskell.org/packages/archive/vault/0.1.0.0/doc/html/Data-Vault.html 08:28:27 That's the easiest way to understand the API. 08:29:07 *nod* 08:29:18 Anyway, you can implement it all given 08:29:20 newKey :: IO (Key a) 08:29:27 sameKey :: Key a -> Key b -> Maybe (a :=: b) 08:29:32 Literally just that. 08:29:51 (It's slow, of course, because you're reduced to using an a-list.) 08:30:21 I like "type Vault = Vault RealWorld" 08:30:40 http://hackage.haskell.org/packages/archive/vault/0.1.0.0/doc/html/Data-Vault-ST.html :p 08:31:03 Yes, yes. 08:32:52 sameIORef :: IORef a -> IORef b -> Maybe (a :=: b) 08:32:52 sameIORef a b 08:32:52 | a' == b' = Just (unsafeCoerce refl) 08:32:54 | otherwise = Nothing 08:32:56 where a', b' :: IORef () 08:32:58 a' = unsafeCoerce a 08:33:00 b' = unsafeCoerce b 08:33:02 See, it's easy! 08:33:04 Even works with the data a :=: b = Equal { subst :: forall p. p a -> p b } definition. 08:34:53 "unsafeCoerce refl" is pretty good. 08:37:52 @brain 08:37:52 Now, Pinky, if by any chance you are captured during this mission, 08:37:53 remember you are Gunther Heindriksen from Appenzell. You moved to Grindelwald 08:37:53 to drive the cog train to Murren. Can you repeat that? 08:39:13 Oh, hmm, I'm not sure that definition of (:=:) actually works for this. 08:39:35 Oh, yes it does. 08:41:06 @hoogle (a -> Maybe b) -> [a] -> Maybe b 08:41:06 Prelude mapM_ :: Monad m => (a -> m b) -> [a] -> m () 08:41:06 Control.Monad mapM_ :: Monad m => (a -> m b) -> [a] -> m () 08:41:07 Control.Monad forM_ :: Monad m => [a] -> (a -> m b) -> m () 08:41:15 No, you silly bot! 08:41:24 @hoogle [Maybe a] -> Maybe a 08:41:24 Control.Monad msum :: MonadPlus m => [m a] -> m a 08:41:24 Data.Generics.Aliases orElse :: Maybe a -> Maybe a -> Maybe a 08:41:24 Data.Foldable asum :: (Foldable t, Alternative f) => t (f a) -> f a 08:41:34 Ah, msum. 08:43:10 kmc: shachaf: http://sprunge.us/QMbF 08:44:46 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 Actually Unique is better than (IORef ()) there. 08:46:24 Is this similar to the way you would have done, or not? 08:47:48 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 You should be allowed to pattern match "lookup k (Vault xs) = ... xs" as "(lookup k . Vault) = ...". IT MAKES PERFECT SENSE 08:48:24 shachaf: I just wished for that earlier today. In here. 08:48:42 elliott: Sounds like the reverse state monad's been doing some sequencing! 08:48:48 :D 08:49:35 elliott: What's the point of using IORef there? 08:49:40 Oh, you already talked about that. 08:49:42 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 08:44 Actually Unique is better than (IORef ()) there. 08:50:13 zzo38: You've crushed my argument completely. 08:50:29 Zanks, zzo38. zzo38. 08:50:51 shachaf: Actually, you don't even need RankNTypes: http://sprunge.us/KEhV 08:51:14 Although sameKey tells you distinctly less about the types there. 08:51:40 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 shachaf: Can you write a proper statically-typed lazy term rewriting language for me? 08:52:54 elliott: I already did that earlier today. 08:53:00 shachaf: It wasn't proper enough. 08:53:00 @let proper = undefined 08:53:01 Defined. 08:53:11 elliott: Sure it was. It obeys all the proper laws, see? 08:53:22 :( 08:53:31 (The <$: and =>>: are pretending that it is a environment comonad) 08:53:44 Aw, there, there, elliott. Don't be sad. I'll write a statically-typed lazy term rewriting language for you. 08:54:05 elliott: What do you want it for, anyway? 08:54:57 Because it'd be neat. 08:55:46 -!- DeStRoYeR87 has joined. 08:56:02 -!- DeStRoYeR87 has quit. 08:56:04 rip 08:56:07 destroyer 08:56:11 we will miss you :'( 08:56:13 "destroyed" 08:56:17 yes 08:56:29 -!- Ngevd has joined. 08:56:51 Aw, kmc visited #not-haskell and I didn't notice. 08:56:58 He didn't get the special elliott treatment. 08:56:59 you're the worst channel founder ever 08:57:04 Hello 08:57:08 kmc: I was kicking everyone else who came in there! 08:57:40 At least the signal-to-noise ratio -- well, I don't know about the ratio, but there was very little noise. 08:59:35 0:0 09:00:12 INFINITE SIGNAL 09:00:22 > 0/0 09:00:23 NaN 09:00:28 Naan is delicious. QED 09:02:19 -!- Vorpal has joined. 09:02:44 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 make it hapen 09:04:17 monqy: The problem is all those pesky non-structurally-recursive functions. :( 09:04:28 who cares about those 09:05:22 Me. 09:06:32 -!- zzo38 has quit (Remote host closed the connection). 09:06:35 elliott: all functions are structurally recursive over some structure or other! :D 09:06:49 except maybe the anamorphisms 09:07:05 Theorem: delicious naan. Proof. eauto. Qed. 09:07:29 get out of here with your fake coq 09:08:48 -!- Patashu has joined. 09:09:59 kmc: You should end all your proofs with "Admitted.". 09:10:03 Then you can never go wrong. 09:10:41 I feel left out for not knowing Coq. :-( 09:11:47 get out of here with your 8" purple vibrating coq 09:12:03 One day someone will talk about Coq and not make a really boring joke. 09:12:16 at least i didn't make a santorum joke 09:12:36 shachaf: Coq is like Agda, except the messes of Unicode are replaced by messes of half-sentences. 09:12:56 eauto. subst in H. split e'. assert (Q : hy_u r42). 09:13:18 the best thing is that H, e', etc. have implicit binding occurrences 09:13:33 each tactic can introduce hypotheses with auto-generated names 09:13:35 yeah i always used to go back and bind everything explicitly at the end 09:13:36 and then you can refer to those 09:13:41 because 09:13:43 i couldn't cope 09:13:47 coq bondage 09:14:00 I think we should ban kmc. 09:14:13 i think you should k-line me 09:14:37 Aye. 09:14:45 I vote Naan. 09:14:46 bindage and bondage aren't even the same thing 09:15:01 elliott is moving to Boston, by the way, I hear. 09:15:09 shachaf: Stop it, you'll enhungrify me and I'll have to move to Boston. 09:15:11 let's have a long, pedantic argument about the difference 09:15:23 kmc: Bindage tutorial joke! 09:15:37 i would read The S&M Guide to Haskell 09:16:09 "IMPROVMENTS" IS NOT A GOOD EDIT SUMMARY 09:16:13 WHY AM I REVIEWING THIS CRAP 09:16:25 "I MAED IT WURSE" 09:16:33 elliott: Just think of the badges!!! 09:16:48 StackOverflow should give badges at randomised intervals rather than at set milestones. 09:16:53 So you never know. You know? 09:16:57 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 s/badges/points/ 09:17:07 Badges don't have a cap. 09:17:10 we don't need no stinkin' badges 09:17:12 It should be like monster drops. 09:17:29 The people who ask questions are monsters, and you slay them. 09:17:38 Come to think of it, that system might make me feel better about #haskell too. 09:17:39 shachaf, you're reusing my reddit metaphor 09:17:43 This edit replaces a single occurrence of the word "i" in a question title with "I". 09:17:47 Its summary is "Fixed grammar". 09:17:55 kmc: What metaphor is that? 09:17:57 The question itself has many more errors, and they're actually grammatical errors. 09:18:17 reddit comments are like one of those video games where enemies spawn forever 09:18:20 faster and faster 09:18:32 you can't win; the only way to win is to quit 09:18:37 elliott: I'LL FIX YOUR GRAMMER 09:18:43 "added more tag". Edit adds a signle tag. 09:18:44 *single 09:18:47 Argh 09:18:48 *tags 09:18:50 I ruined my entire point :P 09:18:56 let's also have a long, pedantic argument about the difference between "grammar" and "syntax" 09:19:12 kmc: This is orthography, you illiterate fuck. 09:19:30 Or, it might even be typography, I'm not sure. 09:19:46 Man, it's been a long time since I've been involved in a good argument about definitions. 09:19:58 shachaf: What IS "is"? 09:20:19 One might ask the same thing about naan. 09:20:26 What ARE breads? We just don't know. 09:20:32 naan is pretty easy to make 09:20:38 if you have a sourdough culture and a frying pan 09:20:55 injera is much harder :/ 09:20:59 shachaf: I think this Nigel Lambert text-to-speech engine in my head will never go away or stop automatically firing. 09:21:13 kmc: I'm pretty sure sour dough culture is reserved to the east coast. 09:21:25 shachaf, San Francisco is world-famous for its sourdough 09:21:27 The culture is very different around here. 09:21:36 happy dough culture 09:21:42 Lactobacillus sanfranciscensis 09:21:46 kmc: Hella dough! Wait, no, that's northerlywards of that isn't it. Fuck you guys. 09:21:48 Fuck America. 09:21:51 I can't keep up with your bullshit. 09:21:59 what 09:22:05 You guys move too fast. 09:22:08 we all living in america 09:22:21 everythings an america 09:22:23 america, ist wunderbar 09:22:38 sorry that's "amerika" 09:22:46 (tm) 09:23:12 I like the city of San Juan... 09:23:26 (Pronounced "So What".) 09:24:02 Oh, category theory in #haskell 09:24:12 excitement 09:24:13 Is that better or worse? 09:24:18 widely known for its production of indigo, coffee, sugar, tobacco, and silver 09:24:34 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 Exercise: Append "clearly" to every statement. 09:25:13 your exercise is trivial 09:25:17 clearly 09:25:39 kmc: You failed! 09:25:44 clearly 09:25:53 do i at least win a goat 09:25:58 kmc: No, clearly. 09:26:03 kmc would much rather have a goat than a car. 09:26:08 it's true 09:26:19 -!- Guest554114 has changed nick to Guest554115. 09:26:22 Goat-car. 09:26:23 goats are cheaper 09:26:35 http://www.goatclassifieds.com/PriceGraph.php 09:26:49 kmc: Don't they emit more CO₂, though? 09:26:55 shachaf, per km? 09:26:56 DO YOU HATE THE ENVIRONMENT 09:27:04 Per year. 09:27:45 Also, goat registration looks expensive. 09:27:50 Way more than car registration. 09:27:58 You probably have to pay insurance too. 09:28:00 I MUST HAVE RAINBOW PARENTHESES 09:28:27 Hmm. So I get home at 2:30. 09:28:30 Do I want to sleep? 09:28:41 Meh, not really. 09:29:16 @time pikhq 09:29:17 Local time for pikhq is Sat Jan 7 02:29:01 2012 09:29:36 @time 09:29:39 Local time for shachaf is Sat Jan 7 12:29:20 2012 09:29:42 WRONG 09:29:46 @time finland 09:30:53 British Double Summertime would be a good name for a band 09:31:09 So many band names, so few bands. 09:31:13 == 09:31:25 is there a website where i can share my bandnames with prospective band-havers? 09:32:19 @time elliott 09:32:19 Local time for elliott is 2012-01-07 09:32:03 +0000 09:32:26 kmc: And then pay you royalties? 09:32:28 kmc: /dev/null 09:32:28 elliott: I presume you've been up? 09:32:40 Any band that picks a name using such a website isn't a band worth banding. 09:32:40 pikhq: I woke up at 2012-01-07 10:00:00. 09:32:58 i'm still waiting for a band named BADNESS 10,000 09:32:59 elliott: Impressive, considering that's in the future. 09:33:27 Unless somehow the UK's *not* on GMT right now? 09:33:37 (I thought daylight saving was the summer, so...) 09:33:48 pikhq, maybe in the western hemisphere 09:34:31 I like how kmc accuses other people of being trolls. 09:34:36 haha 09:34:38 do i? 09:35:05 Don't you? 09:35:06 Greenwich Mean Time. 09:35:17 Apparently Greenwich isn't pronounced like Sandwich. 09:35:26 And apparently it's not moldy. 09:35:30 Nor mouldy. 09:35:45 is it mouldey 09:35:47 Yeah, I have to work hard to get myself to do it right, but it's something like Gren-ich, IIRC. 09:35:58 pikhq: Are you going to Hac Boston? 09:36:15 shachaf: No, I am a pitifully broke college student and in Colorado. 09:36:31 kmc: You should buy a ticket for pikhq instead of for me. 09:36:40 wait, i was going to do one of these things? 09:36:52 You weren't going to buy me a ticket? :-( 09:37:19 * shachaf will have to walk to Boston now. 09:41:06 Quite a walk, I imagine. 09:41:14 (where are you, anyways?) 09:41:18 boston 09:41:55 you should hitchhike 09:41:59 Oh, so more "hella-long ride on the T" 09:42:17 pikhq: California. 09:42:27 I *should* hitchhike! 09:42:30 That would be exciting. 09:42:34 it would take a while 09:42:37 I've never hitchhiked a long distance. 09:42:49 you can ask lexande about it 09:42:58 he hitchhiked from sf to canada 09:43:02 also from cambridge uk to paris 09:43:03 Who's lexande? 09:43:12 He hitchhiked over the sea? 09:43:13 a friend of mine since longtime 09:43:14 he's in #cslounge sometime 09:43:16 yes 09:43:18 Ah. 09:43:18 yes he did 09:43:27 My definition of "hitchhiking" is car-specific. 09:43:35 Did he hitchhike in a car which then went on a ferry or something? 09:43:43 a car which went on a train which went through a tunnel 09:43:50 OK, I'll grant it. 09:43:50 but what you said is also an option 09:43:52 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 Especially in the US. 09:44:10 shachaf: At least you know how to become a murderer now. 09:44:19 an especially murderer 09:44:24 well in the US if you don't have your own car then you're pretty much a terrorist 09:44:29 elliott: Without even breaking any laws! 09:45:05 shachaf: I find that pretty amusing, considering we're heading down to 60s levels of violent crime. 09:45:35 And people hitchhiked all the time in the 60s, I'm led to understand. 09:46:05 don't mind my attorney, he's just admiring the shape of your skull 09:46:22 it is a very nice skull 09:46:41 Would make a very nice glass. 09:47:42 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 stranger convenience 09:48:19 it's part of the thrill 09:48:21 yeah in the 60's the CIA was going around kidnapping and brainwashing people 09:48:32 is hitchhiking addiction a thing 09:49:05 kind of like skydiving or drugs but 09:49:09 more cars?? 09:49:28 speaking of, is skydiving addiction a thing 09:49:33 is sky a thing 09:50:00 kind of like hitchhiking or drugs but 09:50:01 more sky 09:50:04 and diving?? 09:50:05 ah 09:50:08 it's owned by rupert murdoch 09:50:23 monqy: the trouble is that some would say skydiving lacks any utility.. and they might be right 09:50:35 i use skydiving to get to work 09:50:48 itidus21: Fun is a form of utility. 09:51:39 i use fun to get to work 09:51:39 1440x900 is so much nicer than 1336x768 09:51:46 haha 09:52:02 mock me and my tiny screens will you 09:52:18 it's just funny because i've been agonizing over that difference 09:52:30 and decided it wasn't significant ;P 09:52:35 you made the wrong choice 09:52:53 like i'm always scrolling around and resizing things and shit on the smaller resolution 09:53:03 and 1440x900 is just enough to make that irrelevant 09:53:07 the higher dpi is nice too 09:53:13 yeah 09:53:25 Why are you people using these tiny resolutions? 09:53:28 i have a thinkpad x200s and i decided "upgrading" to the x220 would give me basically a slightly worse machine 09:53:35 1920x1080 is, like, the bare minimum, man. 09:53:35 shachaf: I used to think the same thing! 09:53:36 except, i broke the lcd on my x200s :/ 09:53:45 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 elliott: I use one of those too. 09:53:55 -!- pikhq_ has joined. 09:53:55 it's really liberating for some weird reason 09:54:02 15.6", 1920x1080 09:54:06 shachaf: "Without thinking about it" is a low threshold. 09:54:21 I don't think about it. 09:54:28 elliott: Have you considered getting a 7 year old monitor? Like, 1920x1200? 09:54:29 I have, what, 1680x1050? oops. 09:54:29 Maybe that just means I'm slow-witted. 09:54:40 ... Says I from a 1440x900 monitor. 09:54:44 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 thinking is hard 09:54:52 pikhq_: That would be rather heavier than my computer. 09:54:57 kmc: Agreed. 09:55:03 elliott: On the other hand this is my only computer. 09:55:09 Leaving computer is hard 09:55:14 shachaf: Me too. Well, no, there's the 1336x768 one. 09:55:23 leaving computers is NP hard 09:55:25 I also don't have an external monitor. 09:55:27 pikhq_: Go to bed. 09:55:29 shachaf: Me too. 09:55:29 i have.. five machines hooked up in my room 09:55:35 there are good reasons for each one to exist, i swear! 09:55:36 My entire life is on this 13" display. 09:55:43 elliott: NEIN 09:55:43 OK, not entire life. 09:55:46 But the parts that matter!! 09:56:01 kmc: Enumerate them. 09:56:09 really 09:56:17 "1, 2, 3, 4, 5." 09:56:23 fizzie wins. 09:56:29 kmc: Are the ThinkPad X-series machines nice, by the way? 09:56:37 elliott, very nice 09:56:43 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 Istr. That's a name, isn't it? 09:57:23 It sounds like an assmbly mnemonic. 09:57:33 Assmbly. 09:57:34 I think it's a book of the bible. 09:57:50 laptop, wireless bridge, desktop, media server, laser cutter controller 09:58:26 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 How much crap can Google put in one URL? 09:58:38 thanks google 09:58:49 what are you getting at sir 09:58:58 kmc: You have a computer without a good reason to be a computer. 09:58:59 :p 09:59:10 elliott, if I owned one of these I would consider it to be a computer 09:59:20 kmc: I can disprove that. 09:59:28 well, maybe they are dumber than i think 09:59:30 There is no possible way one of those causes as much pain and upset as any computer does. 09:59:36 Only a computer can do that. 09:59:41 wireless bridges are real people so they can't be computers 09:59:45 my wireless bridge "computer" provides very little pain and upset 09:59:53 it's an old netbook running debian 09:59:59 kmc: That just means you're so drowning in computer-related pain and upset you don't even feel it. 10:00:06 Try throwing some out of the window. 10:00:11 it's required basically zero maintenance since i set it up 10:00:15 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 yeah, you're right 10:00:29 " I think it's a book of the bible." 10:00:30 the only way to be sure i'm free of computer-related pain is to replace it all with macs 10:00:37 Heck no. 10:00:42 That will approximately quadruple your pain. 10:00:47 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 fizzie: That's turning it into a minicomputer. 10:01:05 hehe "minicomputer" 10:01:13 -!- pikhq has joined. 10:01:14 You could also rip it apart and shove computer parts into it; that doesn't make the original thing a computer. 10:01:15 yeah i'm running a vax emulator on my WRT54G 10:01:20 kmc: Who isn't? 10:01:29 itidus21: ? 10:01:39 -!- pikhq_ has quit (Ping timeout: 244 seconds). 10:01:40 etymology of bible 10:01:40 > map succ "vms" 10:01:41 "wnt" 10:01:45 Wnt. 10:01:45 Would you prefer "scroll of the bible"? 10:01:53 how is bibble formed 10:01:57 kmc: HEY THAT ONE'S MINE 10:02:02 i was thinking "book of the book" 10:02:40 itidus21: In particular, a book of the third of the three books of the bible, which is known as "the writings". 10:02:42 elliott, anyway, I already had the netbook, so using it thus cost me $0, whereas the devices you linked cost > $0 10:02:47 and as i'm unemployed, my time has rather low value 10:03:09 kmc: Ohh, you have an even better solution. Throw away *all* your computers, then you won't need the bridge thingy. 10:03:09 That latter sentence isn't really true. 10:03:15 haha 10:04:03 one can always reference a book in the bible codex book 10:04:44 I forgot to mention that it was a scroll. 10:05:12 but nobody objected to "laser cutter controller"... 10:05:18 why would you need a bridge? What are you doing? 10:05:27 kmc, you control a boat with a laser? 10:05:28 how? 10:05:30 accessing the internet 10:05:42 kmc: Well, that sounds like it produces significantly more fun than any pain it could cause. 10:05:43 kmc, well sure but usually most people don't need bridges to do so 10:05:49 kmc: Do you ever just feed it a random bitstring to see what happens? 10:05:53 no 10:05:57 "Maybe the next thing it cuts... will be ME." 10:06:21 kmc: I hear elliott has a bridge to sell you. 10:06:29 It's made out of @. 10:06:31 Vorpal, my Internet connection is via roommates' wireless router 10:06:43 kmc, so just connect by the wlan? 10:06:46 several of those machines have no wireless hardware 10:06:52 Does kmc know what @ is? 10:06:58 shachaf, some nethack shit 10:06:58 Does anyone truly know what @ is? 10:06:59 but nobody objected to "laser cutter controller"... <-- please tell me this refers to the boat type known as cutter :/ 10:07:03 yes 10:07:05 it's a boat 10:07:06 Yeah, it's some nethack shit. 10:07:07 i'm on a fucking boat 10:07:16 kmc drives his boat with his computer on his boat. 10:07:22 elliott, great! 10:07:30 you may be interpreting the word "bridge" in a more precise technical sense than i meant 10:07:53 Transatlantic bridge. 10:07:55 shachaf: Can you imagine going through life not knowing what @ is? 10:08:08 elliott: No. I cannot imagine it. 10:08:15 The suffering kmc must be undergoing. 10:08:18 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 kmc: One day you will be at peace. 10:08:31 haha 10:08:37 kmc: Peace of @. 10:08:53 elliott: You should write an @ tutorial. 10:08:56 Full of analogies. 10:09:01 @ is like an @. 10:09:08 The basic operations on @s are @ and @. 10:09:10 @ : @ -> @ 10:09:11 elliott: A-ha! 10:09:19 @ : @ 10:09:19 Now we know that what @ expands to starts with a vowel! 10:09:24 Or at least a glottal stop. 10:09:25 shachaf: Um, dude. 10:09:31 You don't know that. 10:09:34 "an @" 10:09:35 It's meant to be an intentionally-bad tutorial. 10:09:39 They're not necessarily well-written. 10:09:42 Sheesh. 10:09:45 :-( 10:11:48 hilarious 10:12:11 kmc: Do you seriously not know what @ is? 10:12:17 I understand it's cool to deny The Knowledge. 10:12:20 yes 10:12:22 srsly 10:12:26 h 10:12:27 how 10:12:31 kmc: Okay. You know how computers suck? 10:12:40 @ changes all that; with @, they only mostly suck. 10:12:46 apparently @ is "at"... but that would be presumptuous 10:12:53 elliott, go on 10:12:59 kmc: @ is basically the embodiment of elliott's hubris. 10:13:04 pikhq: No, that's you. 10:13:08 At least, it would be if it existed. 10:13:10 @ is a miracle drug 10:13:14 -!- AnotherTest has joined. 10:13:16 *gasp* I don't exist! 10:13:21 -!- AnotherTest has left. 10:13:21 *disappears* 10:13:23 AnotherTest: hi, does chocolate still contain sugar? 10:13:26 aw 10:13:32 kmc: You know how computers are all imperative and ugly and shit? 10:13:42 And, like, buggy, and shit. 10:13:44 @ changes all that! 10:13:48 They're only mostly buggy. 10:14:00 go on 10:14:07 What, that not enough for you? 10:14:28 elliott: You're not very good at this. 10:14:41 shachaf: I estimate that kmc currently harbours 0 negative thoughts about @. 10:15:46 kmc: @ is an environment thingy. 10:15:58 shachaf: elliott was just imitating your use of "an @" i think 10:16:06 kmc: Mostly consisting of a runtime system. 10:17:15 `pastelog an @ 10:17:24 lol.. 10:17:37 01:02:28 is there any good tutorials/blogs on the Store comonad? 10:17:45 shachaf: What is it with people and wanting Store comonad tutorials lately? 10:17:53 http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.24714 10:18:07 hmm 10:18:34 can someone fix " `pastelog an @ " for me 10:18:42 I have no idea why it doesn't work. 10:18:53 ok 10:19:02 `presentelog 10:19:07 ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: presentelog: not found 10:19:16 it's probably not caused by a @ 10:19:23 `pastelog deep breath 10:19:36 http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.22681 10:20:06 `pastelog breath 10:20:14 http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.19658 10:21:29 How do you just look at the logs? 10:21:38 http://codu.org/logs/_esoteric/ 10:21:47 lol @ how does mouthbreathing make your teeth crowded. 10:21:51 How do you search them online? 10:22:19 `pastelog inhale 10:22:26 http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.21914 10:22:27 i think what shachaf means is, how to overcome [too many lines; stopping] ? 10:23:07 You can't. 10:23:13 It's there to stop a timeout. 10:23:15 itidus21: Well, ideally I don't want my search to be logged publicly. 10:23:19 Tough. 10:23:22 ohh 10:23:23 lol 10:23:27 Download the logs yourself if you must. 10:23:36 * shachaf looked up: how to search esoteric logs online 10:23:42 You can't. 10:23:50 * shachaf looked up: esoteric goats 10:23:55 * elliott goat 10:24:07 Anyway, I think kmc has lost all interest in @. 10:24:15 Just like you, elliott. 10:24:28 :( 10:24:32 `pastelog @ 10:24:36 http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.3499 10:24:55 2003-07-25.txt:03:21:16: -!- andreou changed the modes of #esoteric: +b *!*@bespin.org 10:24:55 2003-07-25.txt:03:25:04: -!- andreou changed the modes of #esoteric: +b clog!*@* 10:24:55 2003-07-26.txt:03:28:36: HATE HATE SYSAD@$%!$%!#$!@#$@#NO CARRIER 10:24:56 SamB used to be in here? 10:24:57 What. 10:25:01 shachaf: Yes. 10:25:05 Isn't he a #python guy? 10:25:11 I think we had a lot of #python guys in the olden day.s 10:25:12 days. 10:25:13 He is? 10:25:17 Not necessarily. 10:25:20 That was just a random guess. 10:25:21 He's certainly a #haskell person. 10:25:24 Or was. 10:25:24 Oh. 10:25:25 SamB_XP 10:25:28 Probably just that, then. 10:25:35 edwardk has been in here a few times too. 10:25:39 And he's British, so you probably know him. 10:25:43 Before he MONOPOLISED THE HASKELLOSPHERE. 10:27:23 `pastelog haskell 10:27:27 http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.13599 10:27:52 2005-07-26.txt:07:13:31: it's written in haskell, I compiled it using ghc, usage is bf2c < brainfuck-source > c-source. no options. 10:27:53 Oh! 10:27:57 I wonder if _he_ is the author of that compiler. 10:29:20 12:14:24: -!- andreou has joined #esoteric. 10:29:21 12:20:35: erm 10:29:21 12:20:43: anyone has halflife/counterstrike serial or keygen? 10:29:22 12:20:46: pleeeaaazeeee ;p 10:29:24 12:22:13: -!- andreou has quit (). 10:29:26 shachaf: Did you know our channel used to be great? 10:29:53 elliott: You think you've got it bad? 10:29:57 Try #nethack 10:30:30 shachaf, right now or in general? 10:30:36 shachaf: To fully appreciate my statement, /cs info #esoteric and examine the "founder" field. 10:30:58 elliott, wow 10:31:01 13:30 -!- Irssi: Unknown command: cs 10:31:08 /msg chanserv 10:31:11 Yes, yes. 10:31:11 shachaf, try /msg chanserv 10:31:11 womp womp 10:31:18 shachaf, are you sick of #haskell too 10:31:36 kmc: Sometimes. 10:31:44 Not enough to leave it, so far. 10:31:54 what are your complaints 10:31:56 don't do /msg chanserv 10:32:07 It's not going to get any better unless moderation steps up. 10:32:08 do /^msg chanserv 10:32:15 monqy: what's the difference? 10:32:16 but really make an alias for it 10:32:27 /^msg doesn't open a new window 10:32:45 But what if I want a new window? 10:32:49 then you're bad 10:33:05 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 `pastelog 10:33:11 haha 10:33:14 monqy: that's in irssi? ^msg is an unknown command according to my client 10:33:17 Spreading general nonsense back and forth with very little signal. 10:33:20 olsner: yeah 10:33:22 http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.19986 10:33:25 OMFG THIS GUY KEEPS PROPOSING 10:33:30 "READABILITY IMPROVEMENTS" 10:33:31 in any case, chanserv didn't respond anyway 10:33:35 THAT INEVITABLY MISUSE BULLETED LISTS TERRIBLY 10:33:36 LIKE 10:33:43 That's not always the case, but when the channel reaches a critical mass of nonsense it gets pretty annoying. 10:33:44 what the 10:33:56 shachaf, it doesn't seem that bad... any question will get about 8 answers, 6 of which are correct / useful 10:34:02 what the fuck does that mean :D 10:34:10 There's also the general IRC thing where people ask the same questions over and over and over again. 10:34:12 shachaf: http://ompldr.org/vYzQ2NA 10:34:16 Look at this shit! 10:34:23 SOMEONE TEACH THIS GUY WHAT BULLETED LISTS ARE FOR 10:34:30 And people who are bad at asking questions are overrepresented in terms of channel volume. 10:34:46 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 kmc: I thoroughly approve of your efforts! 10:35:11 kmc: And crowd-sourced it, and gave incentives for doing so. 10:35:11 thanks shachaf 10:35:14 I even made some comments once, if I remember correctly. 10:35:22 And called it, I dunno, Fencepost Error. 10:35:23 elliott, what incentives do you propose 10:35:25 Going so far as to edit it myself is, y'know... 10:35:26 Segmentation Fault. 10:35:30 lolz i get it 10:35:42 General Protection Fault 10:36:32 A nice way to do it might be basically having a big string -> SO answer mapping. 10:36:48 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 elliott, if I get enough points on Stack Overflow, maybe Joel Spolsky will hire me!!!!!!!!!!!!!!!! 10:36:53 !!!!!!!!!!!!!!!! 10:36:58 !!!!!!!!!!!!!!!123 10:36:59 kmc: Then you'd have to work for Joel Spolsky. 10:37:13 `pastelog < 10:37:16 elliott, he understands that I value free soda higher than respect or a paycheck 10:37:17 http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.20792 10:37:23 kmc: Hmm... me too. 10:37:37 elliott: A person in another channel I'm in is StackOverflow user #13 10:37:46 shachaf, wow, you're internet famous 10:37:50 shachaf: Chris Jester-Young is, like, the worst, man. 10:37:51 kmc: TOTALLY 10:37:58 elliott: Why? 10:38:04 shachaf: I dunno, I just keyed in the number. 10:38:09 ...This channel happens to be #stackoverflow. 10:38:10 wtf, chanserv's response ended up in the #haskell window 10:38:29 olsner: chanserv responses go wherever :P 10:38:33 since they're notices 10:38:52 olsner, in many clients notices ends up in a channel where that person who sent it happens to be 10:38:55 kind of stupid 10:38:57 shachaf: Well *I'm* Stack Overflow user #1097181! Take that! 10:39:04 IMO they should go into a separate notice tab 10:39:05 or suc 10:39:07 such* 10:39:14 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 I know the issue 10:39:32 2003-01-19.txt:06:09:05: yay, nothing at all. 10:39:39 elliott: NOT AS COOL AS STACKOVERFLOW USER "MOMAN" 10:39:41 but indeed ChanServ is in #haskell and not in any other freenode channel I'm in 10:40:59 `pastelog http 10:41:03 http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.24538 10:42:24 shachaf, anyway I think the cluefulness of the average #haskell answer is pretty high 10:42:35 the problem is more than everyone has their own pet way of explaining everything 10:42:41 and they trip all over each other trying to do it 10:42:48 i am quite good at devising `pastelog queries 10:42:55 and then get derailed in endless arguments over terminology and teaching strategy 10:43:00 its on my CV 10:43:00 of course this is what i did too 10:43:03 but i got sick of it 10:43:37 kmc: That's part of the problem, I agree. 10:43:49 :o 10:44:02 Maybe I just call things that aren't my pet theory "nonsense". 10:44:08 `pastelog changed the topic 10:44:13 http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.11439 10:44:30 But I don't think it's just that. 10:44:38 also the answers are skewed by a heavy dose of politics 10:44:46 Politics? 10:44:56 "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 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 elliott: hi 10:45:18 But I could be imagining that. 10:45:25 elliott: no that's the impression I've gotten. 10:45:30 yeah 10:45:49 elliott, do you think the monad tutorial analogies are an example of that? 10:45:55 kmc: definitely 10:46:34 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: " and the newbie goes "oh, thanks, I'll read that!" because it sounds more concrete. 10:46:46 right 10:46:47 I don't know how you could solve that other than punishing linking monad tutorials, which would probably be unpopular. 10:47:07 Basically we need to divide people into questioners and answerers and ban answerers who step out of the party line. :p 10:47:20 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 and they want to read it way too early 10:48:04 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 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 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 and that most of the people who can do the latter don't hang out on IRC 10:49:05 that's probably a jerk / elitist thing for me to say, but there you go 10:49:10 It's just too large to rely on the fact that most people active are experienced. 10:49:37 elliott, so what if you started a new channel, #haskell-fascists, with explicit policies 10:49:39 kmc: Hey, my version of that would probably include names. Although that's also the reason I wouldn't say it. 10:50:06 blame allocation is always difficult 10:50:10 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 well the hope is to lure the burnt-out veterans 10:50:40 first 10:51:05 * shachaf would join such a channel. 10:51:05 but i don't think it would work 10:51:10 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 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 Of course, with me, that's not saying much. 10:51:35 i think most people just don't care that much, because they have better things to do with their time anyway 10:51:55 kallisti: #haskell doesn't really have a culture any more, beyond the constant bouts of regulars joking. 10:51:57 i really don't 10:52:03 -!- Phantom_Hoover has joined. 10:52:09 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 i think one big problem is the internet 10:52:16 if i can keep helping people learn haskell with low commitment and low stress to me 10:52:18 then i wanna keep doing that 10:52:25 the internet is surely bad for haskell 10:52:36 Surely. 10:52:36 I sometimes wonder what brings some of the people in #haskell to #haskell. 10:52:47 haskell programmers probably are best left to code in relative isolation 10:52:53 or at workplaces 10:53:14 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 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 kmc: Except for over and over and over again in IRC-sized snippets. 10:53:48 elliott: I get plenty of incorrect information from people on #perl 10:53:49 kallisti: It's not minor understandings, it's that almost every question turns into a definitions debate. 10:53:58 oh, I see. 10:54:01 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 Which would be OK, if anyone ever conceded, but they don't, because everyone thinks they're #1 enlightened Haskell thinker. 10:54:09 that's happened once with me on #perl as well. it was silly. 10:54:15 or borrowing library books 10:54:19 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 im sorry to bring this to light.. 10:54:42 kmc: Anyway, I think the situation is simply that IRC can't support effective support communities beyond a certain size. 10:54:47 but irc is not good for learning something 10:54:54 yeah, and LYAH + RWH is still maybe half of what you need to know, imo 10:54:55 it's helpful sometimes. 10:55:06 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 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 Ooh, metadiscussion. 10:55:14 Phantom_Hoover: About #haskell. 10:55:38 kmc: A real-time format optimised for discussion/learning would be an interesting thing. 10:55:50 yeah 10:56:01 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 we could call it "IRC but with more bots" 10:56:13 the false association between haskell and the internet 10:56:21 i think this creates a lot of problems 10:56:25 kallisti: I think you really need something like separate discussions. 10:56:37 A newbie asking a question should have their answer detached from the monad tutorial jokes going on concurrently. 10:56:52 the usual way to learn is to get a poorly written book on a topic.. read it.. go off halfcocked 10:57:12 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 Then it's the long haul of learning all the APIs. 10:57:43 yeah 10:57:48 tutorials are dependant on the internet 10:58:08 maybe the internet is good for learning...... maybe 10:58:09 The cycle is a bit longer with Haskell :) 10:58:09 -!- Ngevd has quit (Read error: Connection reset by peer). 10:58:12 elliott, that works when the language is just new syntax for another language you already know 10:58:26 elliott: hmmm yes that' a good idea. With a good interface it would be feasible. 10:58:35 kmc: Yeah, it's not a general-case thing. But it did get me started with Haskell. 10:59:03 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 I'm not convinced you can teach Haskell from the bottom-up. 10:59:33 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 Not to someone who already knows a language. 10:59:41 The temptation to analogise is just too much. 10:59:47 * kallisti doesn't remember what he read to understand monads. 10:59:53 we need some sort of brainwashing drug 11:00:30 elliott: analogizing isn't that damaging.. 11:00:39 itidus21, it is with Haskell. 11:00:45 ..the Haskell cult is seeking a brainwashing drug to indoctrinate their fanboys. I knew it! 11:00:53 To be honest, just banning chat outright would probably make #haskell better than it is, but it'd be stifling. 11:01:03 what do you mean by 'chat' 11:01:05 You don't know Haskell, so you don't know the nature of the problem. 11:01:39 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 Clearly, itidus21 is a burrito. 11:01:53 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 i really like that people in #haskell will talk about the language without having some concrete question at hand 11:02:04 interesting stuff comes out of that discussion 11:02:12 Yes, that's why I said it'd be stifling. 11:02:26 the endless injokes (like the one Sgeo just made) are probably a group-identity thing 11:02:35 i think its well meaning but misguided views about the learning process.. you can't just drop analogies 11:02:39 Haskell is the cool kids club in programming, of course 11:02:41 I think you could solve a good chunk of the issues #haskell has simply by having a discussion organisation system. 11:02:43 its like trying to drop subvocalization in order to speed read 11:02:47 and so we all want to indicate we're in the club 11:03:02 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 kmc: I mostly just do it for cheap jokes. 11:03:40 I don't really want to be thought of as a Haskell programmer, although that probably doesn't stop anyone. 11:03:48 elliott, you're special 11:04:01 kmc: You forgot shachaf! He also does it for the cheap jokes. 11:04:10 shachaf is also special 11:04:16 #haskell-special 11:04:19 yes 11:04:23 was about to say that 11:04:41 "functor? I 'ardly knew 'er." 11:05:07 * kallisti good joke. original. 11:05:15 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 counter-intuitive? 11:05:36 mathematical? 11:05:48 Wait, I'm special? 11:05:50 * shachaf wasn't following. 11:05:52 kmc: Now would be a good time to note that itidus21 doesn't know a single lick of Haskell. 11:06:00 farmers usually don't know math 11:06:01 i gathered as much 11:06:11 * kallisti esteemed member of joke-clique 11:06:13 itidus21 seems a bit like zzo38 to me 11:06:16 joklique 11:06:18 from small info 11:06:20 that is because you have to basically sit at a table for years before it can occur to you 11:06:28 it is not intuitive 11:06:32 kmc: What, you don't think zzo38 knows a lot? 11:06:42 no, he clearly does 11:06:52 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 zzo38 seems to know Haskell pretty well 11:07:33 well enough to identify all the ways it's unlike INFORM 7 or Magic: The Gathering 11:07:47 :D 11:08:02 Have you read one of his Haskell programs? 11:08:08 zzo38 is my best #esoteric friend. 11:08:11 !logs 11:09:45 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 in general, i don't know what the purpose of computation is 11:10:47 kmc: See? #esoteric is the bets 11:10:48 best. 11:10:49 dude, what if we're, like, all a computer, man 11:10:53 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 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 because we're lazy? :D 11:12:00 kmc: If this darn log download wasn't going so slowly you'd have a wonderful zzoskell program right now. 11:12:07 haha 11:12:31 kallisti, do continuous chess and we won't hate you any more. 11:13:03 Phantom_Hoover: Sorry I don't feed off of the esteem given to me by peers. :> 11:13:11 also how would you even do that. 11:13:20 floating point numbers? ha. ha. ha. 11:13:37 Coq, like I said. 11:13:39 gonna sleep, ttyl 11:13:48 kmc: But the log download just finished! 11:13:51 lol 11:14:00 kmc: good night, sir. 11:14:03 'night 11:14:33 kmc: http://sprunge.us/bCgV 11:14:34 Phantom_Hoover: anyway, portal chess is a much better game than continuous chess. 11:14:39 Note the consistent use of whitespace. 11:15:17 I feel a little sick. 11:15:26 Phantom_Hoover: It is the Scottish Illness. 11:16:01 Phantom_Hoover: did you ever give continuous chess a consistent, sane set of rules that are easy to play and decidable? 11:16:16 FSVO 'easy to play' and 'decidable'. 11:16:16 kallisti: Two of those principles go directly against the spirit of continuous chess. 11:16:25 hmmmm. sane , decidable? 11:16:34 rules? 11:16:37 easy? 11:16:40 play? 11:16:48 Not decidable, but that's not a problem for Coq. 11:17:01 You give it the proof that your move is correct. 11:17:47 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 something like that 11:18:21 i dunno what this means 11:18:25 me neither. 11:18:56 uh.. if the operation on a ball is throwing 11:19:17 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 compared to uh.. moving each individual molecule of the ball 11:19:24 do I just make X.hs and X/Y.hs ? 11:19:27 kallisti: ...yes 11:24:04 `pastelog terminal 11:24:23 http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.11767 11:24:52 `pastelog itidus21 11:24:59 `quote 11:25:11 71) I want to read about Paris in the period 1900-1914 not about the sexual preferences of a bunch of writers >.> 11:25:12 http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.5623 11:25:28 `quote 11:25:29 680) 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 `delquote 71 11:25:35 ​*poof* I want to read about Paris in the period 1900-1914 not about the sexual preferences of a bunch of writers >.> 11:25:39 `quote 11:25:39 `quote 11:25:40 `quote 11:25:46 112) use "grep --crazy" 11:26:44 306) 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 315) elliott: hey, thinking's easier than using the Internet 11:27:53 heh, fungot really has the right idea about mutation :) 11:27:53 olsner: you really wish your side. 11:29:50 ...and fungot just reminded me of a terrible book I read when I was young 11:29:50 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 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 I lapped it up when I was a kid 11:31:09 Along with lies from that terrible Ian Stewart. 11:31:46 i was wiki'ing io and found http://en.wikipedia.org/wiki/Io_%28programming_language%29 11:31:56 looks curious 11:33:19 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 hmmm, interestingly I think portal chess pieces keep the same relative ordering of importance as they do in traditional chess 11:34:01 ah, no, the queen is lower than the two rooks 11:34:32 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 small world 11:34:59 itidus21: I see you've discovered io 11:35:30 kallisti: yes i explained such quite formally 11:35:51 but i guess what i left out is i was looking for input/output 11:39:25 -!- cheater has joined. 11:40:23 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 :t generate 11:51:02 Not in scope: `generate' 11:51:13 @hoogle generate 11:51:14 Graphics.Rendering.OpenGL.GL.Hints GenerateMipmap :: HintTarget 11:51:14 Graphics.Rendering.OpenGL.GL.Texturing.Parameters generateMipmap :: TextureTarget -> StateVar Capability 11:51:14 Graphics.Rendering.OpenGL.GLU.Quadrics GenerateTextureCoordinates :: QuadricTexture 12:00:00 is there a name for non-pawn chess pieces 12:00:32 oh they're just called "pieces" 12:00:35 and pawns are called pawns. 12:02:21 Down with the arbitrary piece class divisions. 12:02:44 I am not a piece, I am a human being! 12:03:52 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 This one sadly I think lacks the "speech synthesizer". 12:05:17 @hoogle (//) 12:05:17 Data.Array.IArray (//) :: (IArray a e, Ix i) => a i e -> [(i, e)] -> a i e 12:05:17 Data.Array (//) :: Ix i => Array i e -> [(i, e)] -> Array i e 12:05:56 -!- Taneb has joined. 12:07:05 thats pretty cool 12:07:12 Hello 12:09:51 -!- oklopol has joined. 12:12:39 pawn = ?. board = ?. death = ?. ? = ?. 12:13:04 > '?' == '?' 12:13:05 True 12:14:19 ? <- board -> ? 12:14:52 board <- board -> board ? 12:15:09 ah screw it 12:15:14 board 12:15:40 infinity <- board -> infinity ? 12:15:54 -!- azaq23 has joined. 12:15:55 ▒ 12:16:13 the trouble is it goes into 2 dimensions.. 12:16:26 infinity <- board -> infinity ? ! 12:16:44 infinity <- board -> infinity ! 12:17:09 infinity X board X infinity ! 12:17:09 The board is just 6x6 in the bubbles. :/ 12:18:03 ! ▒ X infinity ! 12:19:16 black pawn > white pawn?; knight > pawn?; queen or king(?) > knight? 12:19:31 black pawn = white pawn!; knight = pawn!; queen or king(?) = knight! 12:20:17 -!- Phantom___Hoover has joined. 12:20:57 I had some continuous chess thoughts which I have since forgotten 12:21:12 I saw a continuous chess writeup once on chessvariants 12:21:42 I saw that; it's a pale shadow of true continuous chess. 12:21:51 lol... pawn + hand hand = pawn with hands 12:21:58 ▒ ⨯ ∞ and ♟♞♝♜♛♚♙♘♗♖♕♔ and so on; Unicode power. 12:22:05 -!- Taneb has quit (Ping timeout: 240 seconds). 12:22:11 pawn with hands > pawn ! 12:22:20 wow 12:22:22 pawn with hands > king !! 12:22:24 those all work in my current font! 12:22:33 which is... fixedsys excelsior! 12:23:00 Patashu: The chesspieces are in the old-and-well-established "miscellaneous symbols" block. 12:23:30 esoteric 12:23:32 !!! 4 pawns with hands > pyramid eye symbol !!! 12:24:22 Anyway, the chessvariants continuous chess is merely space-continuous. 12:25:54 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 What have I done. 12:27:07 -!- monqy has quit (Quit: hello). 12:27:49 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 thats my translation 12:30:20 the matrix of chess :P 12:31:43 the fact that i could interpret all that without any text is kind of cool 12:31:50 im impressed 12:33:15 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 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 Hello 12:35:47 This makes capture possible, as it happens. 12:36:21 fizzie: i don't understand why philosophy + retro gaming + symbols is so interesting 12:36:45 but it is very cool 12:37:19 This one sadly I think lacks the "speech synthesizer". 12:37:32 Something something something speech recognition sucks? 12:37:41 I think elliott's better at this than me. 12:37:44 Synthesis, not recognition! 12:37:45 And yes. 12:38:47 What does PWP stand for? 12:39:15 Uh... "Pers' Wastaiset Produktiot", if I recall correctly. 12:39:58 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 The trouble is this other detail of trying to find a purpose for being involved. 12:40:49 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 Guest554115, quick, say something nasty about speech recognition. 12:41:56 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 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 Speech recognition is for Finns. 12:42:55 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 THE ULTIMATE INSULT. 12:43:04 Phantom_Hoover: See http://pelulamu.net/pwp/ -- or maybe don't. 12:43:15 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 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 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 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 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 , how to make them feel that they truly got something out of browsing your web site. 12:43:22 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 d also can load longer simply because of movie and sound. 12:43:26 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 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 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 pastebin motherfucker 12:43:38 OH NO ELLIOTT AM BECOME SPAMBOT 12:44:13 Patashu: spam is sacred 12:44:19 perhaps even every spam 12:44:55 12:03:52: 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 fizzie: Oh, it's that viznut guy. I really like the aesthetic, though. 12:47:12 Who's viznut? 12:47:13 -!- Ngevd has quit (Read error: Connection reset by peer). 12:47:28 Phantom_Hoover: The guy behind that one-line code music thing; or at least the maker of the videos. 12:47:31 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 And the author of that one bad demo I laughed at. 12:47:57 What was it? 12:47:57 (Okay, it was probably quite impressive, technologically, for DOS.) 12:49:09 fizzie: He seems rather obsessed with the premise. 12:49:22 http://en.wikipedia.org/wiki/PWP ooh, it's NOTABLE. 12:49:24 Nice voice synth thing on a VIC-20 though. :p 12:49:26 i look forward to the day when haskell is turned to such things 12:49:36 Reebuttic libera shun. 12:49:40 (Or at least nobody has bothered to nominate for deletion.) 12:49:51 fizzie: http://www.youtube.com/watch?v=2SdGkkp1aq8 is the aforementioned Robotic Liberation one. 12:50:21 I... know? 12:50:25 Er. 12:50:26 Phantom_Hoover: ^ 12:50:30 fizzie: You're basically Phantom_Hoover. 12:50:34 He asked for links, you get them. 12:50:47 Well, my upper half is, if I've understood correctly. 12:51:13 Nah, I moved that Phantom_Hoover back into Edinburgh quite some time ago. 12:51:33 Okay, so now I'm just a half the fizzie I used to be. 12:54:43 Guest84924: http://sprunge.us/JSZF hi criticize my Haskell code. 12:54:58 Why are you deriving Typeable? 12:55:23 Why are you deriving Ord for Piece? Why aren't you deriving Eq for Board? 12:55:32 I am. 12:55:37 Why are you using (Vector (Vector a))? 12:55:41 and, -shrug- YOU NEVER KNOW YOU MAY NEED TYPEABLE 12:56:07 Guest84924: because you told me to. 12:56:33 No. 12:56:57 You're also using the wrong kind of Vector. 12:57:10 ? 12:58:37 which Vector did you recommend? 12:59:08 Phantom_Hoover: This is the one I mentioned above disliking: http://www.youtube.com/watch?v=F1537t45xm8 12:59:11 kallisti: Storable. 12:59:54 I'll remove the Typeable since it's not really needed for anything. 13:00:08 fizzie: DYK: Scientists are propagandists who want to mechanise you? 13:00:17 I just think "if I needed Typeable for a library type and it wasn't derived, that would be annoying." 13:00:20 Man, this is amazingly crap. 13:00:30 "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 Phantom_Hoover: The one I just linked? It really is. 13:01:38 "We will never again let an algorithm make a decision for us!" 13:02:01 "How much change do I have?" "WE WILL NEVER LET ALGORITHMS MAKE DECISIONS FOR US" 13:02:06 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 Phantom_Hoover: Nonono, brains aren't algorithmic, he makes that clear in the uploader comments. 13:02:32 Guest84924: I imported Vector.Storable and got this http://sprunge.us/fYPP 13:02:35 am I missing a deriving somewhere? 13:02:45 kallisti: You're missing the fact that I told you not to use Vector (Vector a). 13:03:06 ?? 13:03:41 are you suggesting I use MVector? 13:03:46 No. 13:04:06 *(Vector (Vector a)). 13:04:14 are you going to explain? or should I just guess at what you mean? 13:04:24 because you said to use Storable vectors... 13:04:26 kallisti, hey, you removed the knights! 13:04:32 12:55 Why are you using (Vector (Vector a))? 13:04:34 12:55 Guest84924: because you told me to. 13:04:36 12:56 No. 13:05:01 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 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 State of the art? 13:05:24 kallisti: Please attempt the basic literacy required to distinguish (Vector a) and (Vector (Vector a)). 13:05:39 Phantom_Hoover: http://www.youtube.com/watch?v=aykuVMf4uIQ 13:05:45 Guest84924: okay, but why should I use a 1d vector to represent a 2-dimensional grid? 13:05:56 kallisti: Because that gives you a contiguous region of memory. 13:06:35 hmmm, okay. 13:06:50 Phantom_Hoover: what knights? 13:06:51 You have to handle row/column indexing yourself; something like Vector is a more raw interface than C arrays. 13:07:02 kallisti, the ones that aren't in portal chess. 13:07:10 lame. those suck. 13:07:15 because they're not in portal chess. 13:07:17 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 and they can only hop two squares! 13:07:31 BTW, wrap (Maybe PIece) so you can write a Storable instance for it. 13:07:31 portals can hop THREE! yeah... stepping up the game. 13:07:45 Guest84924: what do you mean by "wrap" 13:07:59 newtype? 13:08:01 kallisti: newtype JesusChrist = JesusChrist (Maybe Piece) 13:08:21 fizzie deftly avoids controversy by not responding. 13:09:16 Guest84924: why do I need a newtype for that? 13:09:28 "so you can write a Storable instance for it." 13:09:32 right 13:09:33 why 13:09:33 So you can put it in a storable Vector. 13:09:39 BTW, you need to import the vector module qualified. 13:09:57 I'm asking: why is it required to have a newtype in order to write an instance of Storable 13:10:17 Well, you could write the instance directly, but (a) error-prone (b) requires FlexibleInstances (c) could overlap 13:10:24 ah 13:10:38 (a) in that you could easily mistakenly use the instance elsewhere without intending to. 13:11:20 I'm not really sure about this Storable stuff. It seems to require a lot of low-level information 13:11:49 for what gain? a more efficient 8x8 grid. 13:11:58 -!- oerjan has joined. 13:12:00 Storable is trivial. 13:12:07 You just want to define a bijection to Word8. 13:12:25 poke p Nothing = poke (0 :: Word8); poke p (Just Blah) = poke (1 :: Word8); ... 13:12:28 In fact 13:12:36 poke p a = poke (toEnum a :: Word8) 13:12:38 and the obvious for peek 13:12:45 -!- sebbu has quit (Ping timeout: 240 seconds). 13:13:07 sizeOf = const 1 -- ?? 13:13:15 Yes. 13:13:17 That's all you need. 13:13:26 ...oh 13:13:47 that's much easier than I thought it was. 13:14:38 fizzie: Robotic Liberation is now stuck in my head, I'm annoyed. :/ 13:14:41 wrapping a Maybe in a newtype seems marginally annoying though.. 13:14:47 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 kallisti: You're writing your own indexing functions anyway. 13:15:02 You can unwrap it at that point. 13:15:17 fizzie: Neutrality! What a rare thing from a fizzi. 13:15:19 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 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 Guest84924: oh hey I've got a great name for my newtype. Cell. WOW 13:16:47 so good. 13:16:49 so. descriptive. 13:16:54 er 13:16:55 Square 13:16:56 maybe 13:16:59 Cell. 13:16:59 Square is more chess-like 13:17:04 i don't know, sounds a bit imprisoning 13:17:13 Well, I guess Square is more correct. 13:17:42 I've been having difficulty naming all of these things 13:18:04 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 but GameState is, bleh. 13:18:22 Sqoor, Buurd. 13:18:48 * kallisti almost named fillColumns philCollins until he realized a) that 13:18:58 kallisti: Board should definitely just be a board. 13:19:01 -!- sebbu has joined. 13:19:06 's stupid b) he doesn't need that function 13:19:11 kallisti: Also, it's rank and file these days, no? 13:19:15 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 Guest84924: ah, yes. 13:19:46 Guest84924: for someone who's implementing a chess variant, I don't know very much about actual chess. 13:20:01 Ditto, but I have Wikipedia to help me be a snarky asshole. 13:20:11 Guest84924: anyway it makes sense conceptually that the board also includes these invisible loop sets. 13:20:16 -!- Jafet1 has joined. 13:20:23 You should remove the hidden state. 13:20:39 the... loop sets? 13:20:50 I need those. :P 13:20:55 Make them board state! 13:20:58 Use colours or some shit. 13:21:07 oh you mean visually. yes they'll be displayed. 13:21:11 they're "invisible" in the physical game. 13:21:26 No, I mean they hsould be part of the piece type. 13:22:01 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 because multiple loop squares are associated with one another.\ 13:22:24 -!- Jafet has quit (Ping timeout: 240 seconds). 13:22:32 a move can remove an entire set of loop squares and I don't feel like calculating what those are 13:22:37 easier to just have a set of them that I chop off. 13:23:46 also they have properties as a set that I haven't added yet 13:24:41 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 hmmm, actually 13:25:49 I could have the Loop squares have a direction. 13:26:12 and then to build a collection of related loop squares I just follow the path based on directions. 13:26:22 or something. 13:27:38 Guest84924: oh one problem with your Storable instance is that Pieces are not actually Enums. 13:27:46 or, I can't derive them as such 13:27:50 I'd have to write the instance. 13:27:58 Just write your own instance, there's like 16 elements. 13:28:20 is a game a language? 13:28:23 any way I can make that not tedious? 13:28:39 kallisti: If you think this is tedious, wait until you actually write something that isn't a type. 13:29:02 itidus21: a sequence of discrete moves could be viewed as a language, I think. 13:29:17 er 13:29:20 the set of those moves 13:29:27 is a game a set of moves? :D 13:29:29 the program is a specific string of moves 13:29:37 itidus21: no it also has an underlying state. 13:30:00 hummm 13:30:13 Guest84924: but really is there an easier way than "lol pattern matching 16 cases" 13:30:19 jesus christ 13:30:24 ok well you can obviously derive enum for piecetype 13:30:33 i'll let you figure out the basic arithmetic to handle the additional player field 13:30:34 in piece 13:30:38 noep I tried earlier. but maybe it works suddenly now? 13:31:20 i guess in chess there is the question of whether to represent board state or piece state 13:31:42 kallisti: piecetype has 7 constructors. coord and enum already are enum 13:31:47 actually oh 13:31:54 Portal is the only tricky one 13:31:58 yes 13:32:02 but it's trivial 13:32:04 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 so use 13:32:07 :t index 13:32:08 forall a. (Ix a) => (a, a) -> a -> Int 13:32:48 Guest84924: also I could do something horrible like data Rank = A | B | C ... 13:32:49 -!- Jafet1 has quit (Quit: Leaving.). 13:33:02 and Data File = One | Two | ... -- bahahahahahah 13:33:07 yeah, do it 13:33:10 except F1 | F2 | ... 13:33:14 ah yeah 13:33:16 that's better 13:33:16 derive Enum, write Ix instance 13:33:19 .... 13:33:24 better than using Int 13:33:25 no I was just going to use my indexing function 13:33:33 Ix is useful though because 13:33:34 :t index 13:33:35 forall a. (Ix a) => (a, a) -> a -> Int 13:33:35 to abstract that 13:33:36 :t range 13:33:37 forall a. (Ix a) => (a, a) -> [a] 13:33:39 ah yes 13:33:40 etc. 13:33:56 I'm surprised Ix can't be derived from Enum 13:33:59 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 itidus21: noep 13:34:11 kallisti: it's more than Enum 13:34:16 itidus21: PORTAL CHESS IS MORE COMPLICATED THAN THAT 13:34:25 oh well portal chess yeah 13:34:40 but regular chess you could get away with it so long as you allowed for invalid moves to happen 13:35:12 I thought using Rank and File would be ridiculous but it actually kind of works nicely. 13:35:34 except that arithmetic will be weird without a bunch of fromEnum stuff. 13:35:59 oh hmm the Rank is the number the file is the letter. 13:36:13 whats the deal with chess and not killing the king 13:36:17 i mean SERIOUSLY 13:36:27 :)) 13:36:36 that will actually be one of the more difficult things to calculate in protal cehess 13:36:39 err capturing 13:36:43 because there are many weird capturing rules 13:37:14 for example, if your two portals are facing each other and within capturing range of one another 13:37:15 nevermind im being very very dumb 13:37:22 the enemy king cannot be adjacent to those portals 13:37:52 because of the explosion rule where portals explode when they try to pass through each other. 13:37:58 :) 13:38:37 Is there actually a published ruleset for portal chess? 13:38:39 well.. in chess. suppose that you made the rule that you could capture the king.. 13:38:41 no. 13:38:41 Or continuous chess? 13:38:47 no 13:38:51 Oh, darn 13:38:53 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 but I have pretty much a definitive ruleset in my brain at the moment. 13:39:06 Hello! 13:39:13 My Latin vocab tester is going well 13:39:16 I'm just... too lazy to write chess rules. that will be very boring. :P 13:39:38 Sgeo, the rules of continuous chess aren't terribly complex. 13:40:23 Ngevd, your Latin vocab tester? 13:40:31 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 elliott: maybe using a Rank and File type isn't a good idea 13:41:24 also Rank and File are basically the same I could probably just make them one type. 13:41:54 Fine, make one type 13:42:01 Phantom_Hoover, it's more of a flashcards program 13:42:02 eh but that's gross too 13:42:03 DON'T KNOW IF WANT 13:42:09 It's not gross. 13:42:11 maybe I just want integers but then I can't derive Enum and I'll have to write that. 13:42:14 NO WAY. TO AVOID. TEDIUM. 13:42:50 hmmm I'll try Rank and File 13:42:54 as seperate types. 13:43:00 There is no way this thing will progress to the working stage. 13:43:10 even though they're exactly the same and I'll probably being doing a lot of arithmetic on them as integers. 13:43:10 Phantom_Hoover, I'm just adding more features now 13:43:35 elliott: it will. 13:43:49 It won't. 13:44:08 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 Nah, I'm doing it in Haskell 13:44:37 Phantom_Hoover: Don't believe him. 13:44:40 It's too good to be false. 13:45:04 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 elliott, worse still, he had the opportunity to be one of the interviewers when I went to Cambridge. 13:45:33 Phantom_Hoover: omg 13:45:35 That would have been upsetting in the extreme. 13:45:41 would you have said 13:45:45 "JAVASCRIPT GRAVITY GUY!!!" 13:45:53 "I SHALL USURP YOUR GAME" 13:45:55 I doubt it. 13:46:57 My Latin vocab tester is going well <-- VERBVM NECESSE EST 13:47:13 elliott: oh oops E is a File and a Direction 13:47:31 the IsInCheck(chessboard) function is diabolical eh 13:47:41 is it the most difficult of all to write? 13:47:51 itidus21: probably not 13:47:56 but it won't be as easy as normal chess. 13:47:57 sounds trivial 13:48:23 What does IsInCheck do? 13:48:36 it determines if the king is in check 13:48:38 oklopol, did you read about continuous chess (it's the best chess). 13:48:40 determines if a player is in check I'd imagine. 13:48:42 it uses magic to know whose turn it is 13:48:45 nope 13:48:49 by "the king" I imagine he means it returns something like Maybe Player 13:48:57 hmm 13:48:58 what is it 13:49:03 Alternately bicontinuous chess because some loser already made his own crappy continuous chess. 13:49:19 oklopol, chess, except the board and the pieces are continuous. 13:49:21 real chess?? 13:49:28 Phantom_Hoover: Excuse me you need to invent tricontinuous so that it's continuous in time too still? 13:49:40 oklopol: 13:49:43 data Direction = North | Northeast | East | Southeast | South | Southwest | West | Northwest 13:49:55 I don't know about how I feel about these expand direction names 13:49:56 kallisti: yeah player in check i meant 13:50:03 >_> 13:50:04 elliott, don't paste him the original definition; I've altered it significantly. 13:50:08 23:02:46: Basically, the board is a continuous square, and each area corresponding to an initial piece is instead full of continuous piece. 23:04:45: 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 23:05:37: Capture consists of moving some quantity of piece over some of your opponent's piece, which erases the target piece. 13:50:15 Phantom_Hoover: i don't know what that means 13:50:15 oklopol: ^ 13:50:18 Oh. 13:50:24 Phantom_Hoover: Well, now you get to tell oklopol the diff. 13:50:28 `pastelog continuous time 13:50:45 is a piece an Borel subset of measure 1 where the measure of the board is 64? 13:51:01 No output. 13:51:12 and is the board [0, 8] times [0, 8]? 13:51:16 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 `pastelog continuous in time 13:51:24 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 kallisti: Dunno. 13:51:39 http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.31615 13:51:42 I don't see a need particularly. 13:51:48 okay that much i guessed 13:52:28 oklopol, a move is a measure-preserving bijection f. 13:52:37 A move is valid if: 13:52:38 so, many. types. 13:52:59 Haskell is the language of 22 billion types. 13:53:05 it's the hinduism of languages. 13:53:11 -!- Ngevd has quit (Ping timeout: 252 seconds). 13:53:21 - 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 Phantom_Hoover: i think [0,8)^2 might be more elegant 13:53:41 hm except it's not symmetric 13:53:43 - f(P) intersects only piece of the opposite colour, which is then captured. 13:53:50 oerjan: i was assuming it doesn't matter because of measure stuff 13:54:13 centroid in the measure theoretical sense? 13:54:33 why do all the moves take the form of [a,b] x [c,d] ? 13:54:36 oklopol: some people keep insisting this should allow nonmeasurable pieces 13:54:39 how did this happen.. hahaha 13:54:49 is that continued fraction form? 13:54:54 oerjan: some people think they can make this work 13:55:03 - 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 It would have worked with the older definition. 13:55:08 oklopol: it's 2d, banach-tarski doesn't apply 13:55:09 oklopol, of course. 13:55:12 Phantom_Hoover: Special-casing the knight is not cool man. 13:55:22 elliott, normal chess does it? 13:55:28 FINE 13:55:50 oerjan, banach-tarski doesn't apply, but there's no restriction to rigid motions. 13:56:09 the last one prevents playing normal chess with this 13:56:15 Yes, it does. 13:56:32 Unless you change the initial distribution of piece to allow diagonal moves. 13:56:38 elliott: please tell me that (Enum a) => Maybe a is an Enum. 13:56:51 kallisti: If it's not, it takes four lines to implement an instance. 13:56:57 yes. 13:56:58 true 13:57:00 THAT'S NOT THE IMPORTANT PART. 13:57:14 But that's kind of messy, and so are most other ways of solving it. 13:57:23 Normal chess is inelegant anyway. 13:57:25 f.e., it's discrete. 13:57:29 lol 13:57:34 f.e., it doesn't have portals. 13:57:40 Iron. 13:57:44 discreteness is bestness. 13:57:59 oklopol: Well Phantom_Hoover has yet to make time continuous so continuous chess is still lame. 13:58:02 But once he does it'll be perfect. 13:58:28 Oh, also: any pawn that comes within 1 unit of the far side of the board becomes queen. 13:59:19 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 hmmm I think instead of listing my types bottom-to-top I'll go top-to-bottom 13:59:47 meh. too much trouble. this way is fine. 14:00:05 Does anyone know a compression algorithm that produces really good results on almost-universally-English plaintext? 14:00:11 Phantom_Hoover: what, not choice of promotion? 14:00:16 xz -9 is only doing 303 megs -> 47 megs, which seems like it could be a lot better. 14:00:16 oerjan, oh, right, yes. 14:00:33 (I had that originally, but I forgot it.) 14:00:38 The mechanics are otherwise the same. 14:00:43 are there 8 hues of pawn or can you move all your pawn at once? 14:00:58 elliott: huffman encoding? 14:01:21 elliott: n 14:01:33 . 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 itidus21: Yeah yeah, I'm more interested in an already-written tool than a general technique :P 14:01:44 actually i'm starting to think this thing could work 14:01:45 oerjan: thx 14:01:54 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 elliott: np 14:02:23 By which I mean even orthogonal movements in normal chess become impossible. 14:02:57 Hello 14:03:10 Hey 14:03:17 now i wonder who wins this game, i can't see a trivial winning strategy 14:03:28 oklopol: Do you for Chess? 14:03:34 Defining check is especially fun. 14:03:44 elliott: isn't there some compression that allows you to start with a dictionary (essentially prepended)? 14:04:00 oerjan: Do you mean... Huffman encoding? 14:04:06 MAYBE 14:04:10 Phantom_Hoover: err, isn't it just that all your king are belong to us? 14:04:15 basically.. the IsPlayerInCheck() function becomes more expensive as the movespace 14:04:17 if allowed a further move 14:04:21 Yes. 14:04:26 ^increases 14:04:31 What do people recommend for Haskell regexes? 14:05:08 Deewiant: Ping 14:05:14 Pong 14:05:15 Ngevd: You probably don't want to 14:05:15 i believe if all the king has to be taken at once, then the solution is stalemate 14:05:17 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 Deewiant: What's a good compressor for majority-plain-English text that can take advantage of that structure, esp. dictionary 14:05:47 Deewiant: xz -9 only does ~300 megs -> ~40 megs and I want better 14:05:53 -!- derdon has joined. 14:06:17 Ngevd: But ask Deewiant for the one he uses, ISTR it being good :P 14:06:56 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 I think it's more likely that the brains of all involved will melt, though. 14:07:08 Ngevd: regex-tdfa 14:07:28 fizzie: ... okay 14:07:33 fizzie: :D 14:07:36 > toEnum False 14:07:36 Couldn't match expected type `GHC.Types.Int' 14:07:37 against inferred type ... 14:07:41 > fromEnum False 14:07:41 0 14:07:45 fizzie: Your humbleness in explaining the lack of AI systems in the channel is amazing. 14:08:11 oklopol, I challenge you to a game! 14:08:28 I'll be white, you can be black, and we play it on a 3x3 board with king at opposite corners. 14:08:32 not sure i'm interested :D 14:08:35 elliott: Data.Vector.Storable is pretty cool. 14:08:37 sounds hard. 14:08:53 and nothing else? 14:08:59 -!- Taneb has joined. 14:09:12 -!- Ngevd has quit (Ping timeout: 240 seconds). 14:09:17 oklopol, no. 14:10:12 k i shall play. 14:11:23 hey so 14:11:28 elliott: er, I'm not really sure how to write peek. 14:11:32 you have an advantage because you made this game 14:11:59 kallisti: fmap (fromEnum . fromIntegral :: Word8 -> Foo) . peek 14:12:02 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 i don't think it changes much 14:12:36 Phantom_Hoover: DON'T DOOO IIII 14:12:37 T\ 14:12:39 -!- Ngevd has joined. 14:12:42 You're clearly planning something, but it'll be an entertaining something, so fine. 14:12:44 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 so we note that Q^2 \cap board is a countable dense subset of the board with measure zero 14:14:09 and i win 14:14:18 :'D 14:14:19 but umm 14:14:22 let me see what you wrote 14:14:24 `log [f]inite euclidean 14:14:32 2012-01-06.txt:17:17:23: 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 oops wrong 1 14:14:43 `log [f]inite euclidean 14:14:58 2012-01-06.txt:17:09:46: ok, what about chess on a finite euclidean plane 14:15:06 i don't see how that's a legal move 14:15:14 yours i mean 14:15:24 oh 14:15:30 oklopol, piece can intersect itself during a move. 14:15:35 elliott: zpaq 14:15:45 @hoogle (a -> b) -> (a, a) -> (b, b) 14:15:45 Data.Graph.Inductive.Query.Monad (><) :: (a -> b) -> (c -> d) -> (a, c) -> (b, d) 14:15:45 Data.Graph.Inductive.Query.Monad mapSnd :: (a -> b) -> (c, a) -> (c, b) 14:15:45 Data.Graph.Inductive.Query.Monad mapFst :: (a -> b) -> (a, c) -> (b, c) 14:15:51 okay so 14:15:54 it is likely that i started this with that innocent comment 14:15:55 that's in check, you can't move there 14:16:01 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 it 14:16:13 Ngevd: join (***) 14:16:16 oklopol, it can't possibly be in check; you only have 0.5 king and I have 1. 14:16:27 :t join (***) 14:16:28 (Assuming we're leaving out the closure rule, because duh.) 14:16:28 forall (a :: * -> * -> *) b c. (Arrow a) => a b c -> a (b, b) (c, c) 14:16:37 :t join 14:16:38 forall (m :: * -> *) a. (Monad m) => m (m a) -> m a 14:16:44 Oh, duh. 14:16:47 elliott, what do I need to work this magic? 14:16:54 Ngevd: Control.Arrow, Control.Monad 14:16:59 Thanks 14:17:03 Ngevd: I suggest defining 14:17:09 elliott: It's just the best one I found on AUR 14:17:10 both :: (a -> b) -> (a, a) -> (b, b) 14:17:11 both = join (***) 14:17:12 no wait i'm confused 14:17:23 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 Deewiant: Funny, it's not in my package manager, so I'll have to compile it myself :P 14:17:32 you seem to have moved 2 in both axes. 14:17:38 Ugh, and it's in separate zip(!) files 14:18:29 elliott: Maybe nanozip is if that one isn't 14:18:33 Or freearc 14:18:41 nope 14:18:52 garden of eden decompression 14:19:03 garden of eden wait what's going on here? 14:19:07 well.. 14:19:15 so i assume that has nothing to do with CA 14:19:30 oklopol: when you check the state of the output of the decompressor it just happens to be the correct state 14:19:32 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 i guess the word garden of eden is very not appropriate 14:19:44 Well, this is going really well 14:19:48 Thanks elliott! 14:19:52 :t fromEnum 14:19:53 forall a. (Enum a) => a -> Int 14:19:58 Thanks also kallisti, but that was earlier! 14:20:01 toEnum, w/e. 14:20:06 Ngevd: what did I do? 14:20:06 Thanks probably other people too! 14:20:08 oh triangles sorry 14:20:11 like uh.. 14:20:14 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 :t toEnum 14:20:23 forall a. (Enum a) => Int -> a 14:20:31 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 @hoogle Int -> Word8 14:20:55 Data.ByteString index :: ByteString -> Int -> Word8 14:20:55 Data.ByteString.Unsafe unsafeIndex :: ByteString -> Int -> Word8 14:20:55 Prelude (!!) :: [a] -> Int -> a 14:21:05 Deewiant: I'm not compiling it myself manually :P 14:21:12 Especially since it doesn't seem to come with a build system. 14:21:28 elliott: https://aur.archlinux.org/packages/zp/zpaq/PKGBUILD 14:21:51 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 No guarantee that'll work on my OS 14:22:02 But meh, I might try it sometime 14:22:12 the vector between centroids is one that the piece can move in normal chess? 14:22:14 oklopol, one in which the centroid moves by a legal chess move. 14:22:18 Yeah. 14:22:20 mm okey 14:22:20 elliott: Generally "$CXX $CXXFLAGS $LDFLAGS" should work 14:22:23 > fromIntegral (5 :: Int) :: Word8 14:22:24 5 14:22:26 ah 14:22:33 Deewiant: But might need different cflags for e.g. -D platform stuff. 14:22:55 It's conceivable, but I doubt it 14:23:21 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 > fromIntegral (5 :: Word8) :: Int 14:23:27 5 14:23:30 good. 14:23:34 itidus21: Pls look up Kolgomorov complexity 14:24:17 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 some portion of your king is taken :o 14:24:38 hmm 14:24:46 i suppose you need to know quite a bit more 14:25:05 oklopol, you need to preserve measure and not move through piece that you haven't captured, too. 14:25:06 elliott: What about good old paq (paq9a), is that available? 14:25:12 i'm not really fluent in functions on reals. 14:25:13 oh right 14:25:21 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 elliott: Your system sucks 14:25:39 Deewiant: Yep 14:25:43 `peek' is not a (visible) method of class `Storable' 14:25:59 i don't understand when everyone did so much research 14:25:59 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 while i wasted my life away trying to cope 14:26:18 -!- shachaf has joined. 14:26:27 oh I need Foreign.Storable I think 14:26:38 oklopol, it used to be, but then I altered the conditions to let you work around that. 14:27:01 Phantom_Hoover: and what are those conditions? 14:27:18 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 also i proved that you can do that 14:27:38 ah 14:27:39 Sets of zero measure are basically irrelevant, I think. 14:27:53 hmmm so now Square is: data Square = Square (Maybe Piece) (Maybe Loop) 14:27:56 right i do recall that small detail now 14:27:59 which is not a derivable Enum. 14:28:21 Since they can't make any significant capture, and they can be taken without restriction. 14:29:41 -!- iconmaster_ has joined. 14:29:49 so umm let's see what happens if i just move 1 down 14:30:05 yeah the problem is that Enum can't be derived like that. 14:30:10 oh. 14:30:39 then you win 14:30:41 * kallisti cracks knuckles and gets to instance writing 14:31:22 wait do you... 14:31:23 -!- cheater has quit (Ping timeout: 276 seconds). 14:31:26 Yay I've actually written a Haskell program that actually does something well! 14:31:35 yes, you do 14:31:40 elliott: help do I write enum instances sanely I'm afraid . 14:31:43 +how 14:31:46 Now for the tricky part.. 14:32:36 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 Phantom_Hoover: well, would you care to make your move? 14:34:07 Did you make yours? 14:34:14 yeah one down 14:34:35 well left 14:35:05 Yes, I win then, although strictly you're just not allowed to make that move. 14:35:28 true. 14:35:38 but we have just kings to that seems like a silly rule 14:35:52 how would one write instance (Enum a, Enum b) => (a, b) 14:35:56 er 14:35:59 how would one write instance (Enum a, Enum b) => Enum (a, b) 14:36:09 because i'm guessing a perfect game is infinite 14:38:46 elliott: I don't think this is as simple as you're claiming it to be. 14:38:53 or well, it's not now that I've changed the type. 14:39:16 but PieceType could never have Enum derived for it; 14:39:19 and now: 14:39:21 data Square = Square (Maybe Piece) (Maybe Loop) 14:39:28 w/e it's seriously not har 14:39:29 d 14:39:33 data Loop = Loop Direction LoopKind 14:39:41 you're getting hung up on some really trivial functions just because they're instance methods 14:39:54 it has nothing to do with instance methods. 14:41:37 * 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 er I mean product types specifically 14:42:37 What's the deal with multiline strings in Haskell? 14:42:46 ok then, how do do succ (3, True) using _only_ Enum methods 14:42:48 -!- cheater has joined. 14:42:53 *do you do 14:43:00 Maybe Loop has 1 + (8 * 2) enumerations, Maybe Piece has 1 + (2 * (5 + 8 + 8 * (1 + (8 * 8)))) enumerations 14:43:10 Ngevd: they suck, hth 14:43:38 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 oerjan: I suppose you would need Bounded also wouldn't you? 14:44:14 dude just use fromENums on the fields 14:44:29 followed by..... 14:45:04 blargh just pack it however, the whole point is to store everything in [0,256) in the end 14:45:06 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 although hmm 14:45:16 wait nm 14:45:33 kallisti: Bounded, Enum, Eq 14:45:38 is it really worth being able to compress a 8x8 grid into 64 bytes? 14:46:20 kallisti: If you ever want to write an AI, yes; anyway you're overcomplicating this massively 14:46:30 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 am I? 14:46:39 Then why are you asking me for advice 14:47:24 > (1 + (8 * 2)) * (1 + (2 * (5 + 8 + 8 * (1 + (8 * 8))))) 14:47:25 18139 14:47:38 > maxBound :: Word16 14:47:39 65535 14:47:43 Ngevd: you can do either line continuation with \n\ ... \ or you can use unlines on a list of strings 14:48:09 elliott: ah I see what you mean. How do I take bytes and pack them together? 14:48:19 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 So I can exploit a loophole in my school's ridiculously tight security 14:48:39 kallisti: Bitshifts and .|.? 14:48:43 IT security 14:48:45 the works. 14:48:47 *that 14:48:53 there's probably something with template haskell 14:48:59 > (1 + (2 * (5 + 8 + 8 * (1 + (8 * 8))))) 14:49:00 1067 14:49:18 hmm that's going to require more than a Word8 14:49:19 kallisti: Really, I'd just write all the cases out manually at the top level 14:49:23 ... 14:49:28 If it's so much bother 14:49:40 -!- cheater has quit (Quit: Ex-Chat). 14:49:41 that's basically the opposite of what I want to do. 14:49:50 Have fun 14:50:09 you're making this sound much easier than it actually is. 14:50:42 Because I've done similar things before and it was easy 14:50:59 sounds are easy even if you don't make them easy 14:51:04 that's why they are called sounds. 14:51:34 Ngevd: tight security, they don't allow data files? 14:51:45 Gregor: Where did the old rezzo agents repo go? 14:51:53 The one with my stuff in it :P 14:52:22 oerjan, they don't allow executable files 14:52:36 oerjan, except for some bizarre reason in .zip archives 14:52:48 Ngevd: well .zip it then? 14:53:08 oerjan, can't access files from within a zip 14:53:13 It's a weird system 14:53:22 ... 14:53:26 .....ugh 14:53:27 * oerjan leaves this to elliott 14:53:29 my brain 14:53:29 hurts. 14:53:43 * elliott leaves this to oerja 14:53:44 n 14:53:59 * oerjan infloops 14:54:06 Just trust me. 14:54:09 flashcards eh 14:54:18 You don't go to my school, you don't need to know why I need to do this 14:54:24 its probably best to think in terms of association forming time thresholds 14:54:44 so minimally complete definition for Enum is fromEnum toEnum right? 14:55:00 like.. expose self to one stimulus.. then to another 14:56:16 then again.. maybe not 14:56:44 a lot of learning is subtle 14:57:00 meanings of words are necessarily anticipated 14:57:11 you can't force the meanings 14:57:20 you can learn through anticipating the meaning 14:57:55 then.. you use the word.. and get corrected 14:58:08 i dont know 14:59:37 > 1067 - 16 14:59:38 1051 14:59:49 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 16 down, 1051 more to go. 15:00:31 actually I think that should be i not i+1 15:00:42 yes 15:00:53 also `div` 15:01:07 also... divmod 15:01:10 also... quotrem 15:01:51 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 oh good. 15:02:08 * kallisti is OCD about whitespace layout 15:02:28 and striking a balance between not having way too many lines and not condensing everything into one line 15:02:47 basically, the best way to learn a language is to read it 15:02:51 or speak it 15:03:00 err i mean listen to it 15:03:05 *54952 15:03:12 Less impressive, but still a lot 15:03:14 elliott: hi correct my math provide suggestions 15:03:24 reading may not be sufficient 15:03:25 hummmm 15:03:53 oh hmmm I could use Bounded I think. 15:04:13 ah 15:04:17 a formula! 15:05:04 Actually, do I really need the standalone version? 15:05:59 fromEnum (Loop d t) = fromEnum t * 8 + fromEnum d 15:05:59 toEnum i = Loop (toEnum d) (toEnum m) 15:06:00 where 15:06:00 (d,m) = i `quoteRem` 8 15:06:04 * kallisti suddenly remembers how to do math 15:06:12 so can binary lambda calculus be encoded as unary lambda calculus? 15:06:41 im guessing the only problem is leading zeros 15:06:56 Yes, but it would be stupid 15:07:11 actually I'm going to use let instead of where 15:07:13 Nah, just assume whatstisface 15:07:20 because I think let doesn't get as much love as where. :P 15:07:26 Binominal base 2 or something 15:07:31 Binary without zeroes 15:07:34 elliott: hi I learned how to do math 15:07:34 it wouldn't be stupid :D 15:08:11 though I'm pretty sure PieceInfo will be a number of special cases 15:08:24 kallisti: ok 15:08:39 kallisti: really you could autogenerate the enumeration stuff 15:08:45 .. 15:08:49 just generate a list of inhabitants with functor 15:08:49 this was kind of like 15:08:52 what I was asking for. 15:08:54 and use the indices 15:09:01 well you still need to manually write stuff 15:09:02 but 15:09:09 data T = A S U | B Q 15:09:11 you'd do 15:09:16 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 "list of inhabitates with functor" wat 15:09:28 oh you mean do list stuff.. 15:09:30 instance Elems T where elems = A <$> elems <*> elems <|> B <$> elems 15:09:48 then you can trivially define toEnum/fromEnum implemenetations for Elems things 15:10:19 wat 15:10:34 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 what does elems return 15:10:46 ^bounding 15:10:54 kallisti: [a] 15:11:01 class Elems a where elems :: [a] 15:11:04 oh hmmm 15:11:07 instance Elems Rank where elems = [R1, R2, ...] 15:11:10 right 15:11:20 instance (Elems a) => Elems (Maybe a) where elems = Nothing <|> Just <$> elems 15:11:25 > [1,2,3] <|> [4,5,6] 15:11:25 [1,2,3,4,5,6] 15:11:48 like for instance... you could hand someone a bucket of marbles and say "here is your program" 15:11:50 ah 15:11:51 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 I don't 15:12:15 well... it's not actually that easy for the toEnum case 15:12:20 but anyway 15:12:25 and just by adding or subtracting marbles from a bucket you can code 15:12:29 actually i think you can, hmm 15:12:32 i think it is pretty cool 15:12:32 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 +so much 15:13:19 or something 15:13:23 make that sentence make sense kthx 15:13:27 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 and allow the same simple Elems instances 15:14:04 well you could avoid the traversal overhead by using a different data structure 15:14:07 such as an array 15:14:08 or... vector. 15:14:12 better to parameterise on the structure 15:14:14 and no, that doesn't work 15:14:24 i'll get bored of this and stop implementing it if you keep proposing stupid alternatives :p 15:14:33 OKAY FINE WHATEVER 15:15:00 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 elliott: also note that I'm pretty sure Word16 is the word size I'll need for Storable 15:15:35 if that's relevant at all 15:15:40 don't think it is 15:15:51 kallisti: i'm pretty sure you could pack it into one byte but okay 15:16:19 sorry multiplication dawg 15:16:32 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 the main reason I can't do that is because there are 8 * 8 * 8 different kinds of portals. 15:17:46 which I can't avoid unless I remove the coordinate pair from the definition of PieceInfo 15:18:16 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 Hunt it down if it's deterministic; you can cache it in a memo table later. 15:19:06 it's just a coordinate to the other portal. 15:19:13 I guess that's deterministic? 15:19:19 I'm not sure what you mean by that. 15:20:00 yeah okay I'll take out the coordinate 15:20:03 the simplifies the storable stuff 15:20:14 *that 15:20:43 I can just store the association seperately. it's literally just a 4-element table. 15:21:24 okay that's much easier I could probably just handwrite this now. 15:21:41 the PieceInfo Enum is much simpler. basically 8 Arrows and 8 Portals and 1 of all the other pieces. 15:22:56 @hoogle interleave 15:22:56 package interleave 15:22:56 Graphics.Rendering.OpenGL.GL.VertexArrays data InterleavedArrays 15:22:57 Graphics.Rendering.OpenGL.GL.VertexArrays interleavedArrays :: InterleavedArrays -> Stride -> Ptr a -> IO () 15:23:05 @hoogle [a] -> [a] -> [a] 15:23:05 Prelude (++) :: [a] -> [a] -> [a] 15:23:05 Data.List (++) :: [a] -> [a] -> [a] 15:23:06 Data.List deleteFirstsBy :: (a -> a -> Bool) -> [a] -> [a] -> [a] 15:23:27 Control.Monad.Logic.Class I believe 15:23:38 :t interleave 15:23:39 forall (m :: * -> *) a. (MonadLogic m) => m a -> m a -> m a 15:26:15 kallisti: Anyway, turns out it's trivial 15:26:21 http://sprunge.us/IZVC or something 15:26:42 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 elliott: why Map and not array 15:27:48 Well, because arrays can;t be indexed by *a*s... 15:27:57 It'd work for the fromEnum case, but who cares. 15:28:04 Don't use a Vector by default. 15:29:20 elliott: how often does Storable require that conversion to happen. 15:29:42 Every single time you take an element out or put one in 15:29:47 So, every single operation 15:29:57 Unless you want to traverse a >thousand-element list each time? 15:30:15 Part 3487234 in the ongoing series "it's your algorithms". 15:31:07 elliott: ..I never suggested traversing a thousand element list each time? 15:31:26 Well, I presumed you were implying it was overengineering wrt "how often" 15:31:47 no I'm just wondering if it would be better to use an array in the fromEnum case 15:31:54 Oh 15:31:58 Probably irrelevant 15:32:08 Profile first, etc. 15:32:09 you mentioned it does some kind of memoization? how does that work. 15:32:19 It's not really. 15:32:33 It's just floating the shared data outside the lambda so that it's shared. 15:32:44 It's just related. 15:33:31 under what conditions does that occur. 15:33:37 When you do it. 15:33:43 >_> 15:34:11 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 are you sure about that? what do you think I don't understand? 15:34:49 I don't know, but you think seq has side-effects 15:34:57 So you clearly misunderstand /something/ 15:35:17 Everything is side-effectful at the GHC level. Observing a value mutates memory 15:35:20 I thought we discovered it was because I didn't use the same definition of side-effect 15:35:32 You might have discovered that 15:35:46 Unfortunately any definition of side-effect like that is contradictory with your observed viewpoints as Sgeo points out 15:37:09 I suppose seq could just be considered a language primitive. 15:37:14 Here we go again 15:37:16 -!- Ngevd has joined. 15:38:14 It has well-defined denotational semantics, and can be implemented operationally with no trouble at all (evidence: GHC) 15:38:31 Hello! 15:38:32 So it's as "special" as any other Prelude function or whatever 15:38:48 hmmmmmm 15:38:54 elliott, but can it be implemented without having implemented seq first? 15:39:13 null can be defined without null, just with pattern matching 15:39:34 Sgeo: Good luck trying to define the entirety of Haskell without relying on a few primitives. 15:40:24 Ints, Chars, (actually not Chars), IO stuff 15:40:29 Not sure what else needs primitives 15:40:33 seq :: a -> b -> b 15:40:33 -!- iconmaster has joined. 15:40:34 seq = let x = x in x 15:40:37 good prelude function 15:40:41 newtype Int = Int Bool Bool Bool ... thirty one Bools 15:40:48 kallisti: Oh snap, evidence by GHC implementation! 15:40:52 I can prove SO MUCH about Haskell in that way. 15:41:00 For instance, the function arrow (->) is impure, as evidenced by the definition of IO. 15:41:01 elliott: is that the actual implmenetation? 15:41:03 No. 15:41:08 Read the comment at the top. 15:41:34 so then it's not like "any ther Prelude function" 15:41:37 +o 15:41:38 newtype Bool = Bool (a -> a -> a) 15:41:40 Sgeo: Anyway, things like defining data constructors etc. are primitives; seq just happens to be a value 15:41:56 You could also implement seq in terms of some other primitive, say ($!) 15:42:16 kallisti: You're quoting GHC source code, your argument has no applicability to Haskell the language whatsoever in the first place. 15:42:25 elliott: what is my argument? 15:42:27 Isn't ($!) defined in terms of seq? 15:42:37 kallisti: I have no idea, it's too stupid to work out. 15:42:48 `log parts and the composites are 15:42:49 Ngevd: You could make ($!) the primitive and define seq as (id $!). 15:42:55 True 15:42:56 2012-01-07.txt:11:17:47: 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 if you think my arguing is "lol this is why seq has side effects" then you're wrong. 15:43:34 i realized that this is referring to the rules of lambda calculus contrasted with whole lambda calculus programs 15:44:28 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 kallisti: Int (+) is also implemented as a Primitive in GHC. 15:44:47 yes. 15:44:53 However you can implement (+) on Ints yourself. 15:45:05 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 not as efficiently though, right? 15:45:14 Oh! Efficiency! The definition of a language. 15:45:27 elliott: ....I'm not even making an argument about seq being a side-effect, dude. 15:45:35 Seriously, the fact that GHC defines this way does not mean that is somehow specially related to . 15:45:43 kallisti: You're the only person who's said "side-effect" in like the last 20 messages. 15:46:24 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 elliott: seq is a primitive of the language. therefore, it's not a side-effect. 15:46:33 God this is really stupid shut up about seq 15:48:03 such a number must exist :D 15:48:55 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 seq 15:49:19 Sgeo: Don't know/care, especially because it's irrelevant 15:49:30 Doubly especially because it'll encourage kallist 15:49:31 i 15:49:37 encourage me to do... what? 15:49:44 elliott, actually, I think my question is partially kallisti's point 15:49:44 I am not even arguing anything 15:49:47 Maybe. 15:50:17 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 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 therefore I'm wrong. 15:50:54 about everything 15:50:56 or something. 15:51:29 an argument where there was none. fun. I'm going to go do something else. 15:52:06 Good god. 15:58:07 !perl `ls 'stuff'` 15:58:10 ​/bin/ls: cannot access stuff: No such file or directory 15:58:19 `run perl -e '`ls 'stuff'`' 15:58:24 ls: cannot access stuff: No such file or directory 15:58:25 `run perl -e '`ls q(stuff)`' 15:58:28 sh: Syntax error: "(" unexpected 15:59:07 `run perl -e '`ls q/stuff/`' 15:59:11 ls: cannot access q/stuff/: No such file or directory 15:59:27 `run perl -e '`echo 'hi'`' 15:59:31 No output. 15:59:45 `run perl -e 'qx(echo q(hi))' 15:59:48 sh: Syntax error: "(" unexpected 15:59:51 ? 16:00:02 `run perl -e 'qx{echo q{hi}}' 16:00:05 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 so I've come to the conclusion 16:19:55 that I'm completely incapable of copypasting something into emacs. 16:20:36 I thought I knew how but it's not working :P 16:20:44 and... suddenly it works! 16:21:44 that I'm completely incapable of copypasting something into emacs. <-- middle mouse button? 16:21:51 if you are in X that is 16:22:20 I generally don't use the ctrl-v/ctrl-c buffer outside stuff like gimp 16:22:36 I have no idea how you access that in emacs 16:24:58 I don't even know how to /type/ in emacs 16:25:40 Ngevd, uh it is easy just hit the keys on your keyboard 16:26:40 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 (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 what are the benefits of levenshtein coding over regular binary coding? 16:31:07 Vorpal: you have to use C-y in emacs 16:31:10 but it wasn't working for some reason.. 16:31:14 kallisti, heh 16:31:43 or.... 16:31:46 C-y uses the same buffer as selected text in X 16:32:07 does levenshtein coding mean that in one series of 0s and 1s you can encode multiple integers? 16:32:28 thats amazing 16:42:26 it is? 16:42:59 -!- Ngevd has quit (Read error: Connection reset by peer). 16:45:23 also i don't think it means that 16:45:27 -!- Ngevd has joined. 16:46:17 itidus21: wat 16:46:33 !perl `echo 'hi'` 16:46:34 No output. 16:46:37 !perl print `echo 'hi'` 16:46:37 hi 16:47:07 coping from wiki 0101100 = 0 1 2? :D 16:47:19 [0][10][1100] = 0 1 2 16:48:41 0000 = [0][0][0][0] = 0 0 0 0 16:49:14 [10][10][10][10][0] = 1 1 1 1 0 16:49:14 bash really 16:49:15 really 16:49:20 really needs perl quote-like operators 16:49:24 but... perhaps what i am doing wrong is wording my statement 16:50:19 well herp derp yes, the levenshtein code is a code, so you can stick integers in a sequence and decode uniquely. 16:50:58 sorry about that 16:50:59 but you can also just encode sets of integers in an integer and use a single codeword 16:51:44 :-? 16:51:51 in fact it's even a prefix code, another such code is coding n to 0^n1 16:51:53 Not just any code, a prefix code. (Also why is "prefix code" and "prefix-free code" the same thing nurrrr?) 16:52:23 its weird how all of this is obvious to you guys 16:52:26 fizzie: please don't restate my lines. that doesn't make you sound smart. 16:52:40 You were just TOO FAST for me. 16:53:02 But that's all right, "it's no shame to be fast", like we say here in Finn land. 16:53:05 i mean you must have taken math as a hobby rather than a school thing 16:53:14 itidus21: i've had a lot of this stuff on courses. from the coding perspective and the combinatorics on words perspective. 16:53:24 math is my profession 16:53:39 not sure that's a word though 16:53:42 You could even go as far as to say oklopol eats math for breakfast. 16:53:59 profession is a word 16:54:06 I eat little hoops of wholegrain, covered in chocolate for breakfast 16:54:15 i'm just wondering if it's as general term for job as i think it is. 16:54:22 combinatorics however is probably not what you intended 16:54:28 but might be a word 16:54:32 no, i meant combinatorics on words 16:54:51 which has almost nothing to do with combinatorics 16:55:27 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 math doesn't require any sort of education 16:55:52 So it's just your occupation. 16:55:57 jobulation 16:56:13 Tribulation. 16:56:55 OED's definition just says you need to know some stuff, not get an education. 16:56:58 "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 "More widely: any occupation by which a person regularly earns a living." 16:57:22 well i suppose you need to know some stuff 16:58:00 itidus21: do you have a university degree yet? 16:58:10 no 16:58:25 have you considered getting a university degree0 16:58:27 ? 16:58:51 i am living in a weird kind of dire strait... 16:59:11 the world has defeated me from every angle 16:59:32 well i'm aware of that, i felt the question was orthogonal enough 16:59:57 success is mostly an illusion 16:59:57 fizzie: how many phd's do you have? 17:00:28 more time is spent discussing the rules of chess than playing chess 17:00:39 the actual pieces are like a distant memory 17:01:13 my mom is extraordinarily inefficient at walking up and down the passageway here at 4am 17:01:24 its like she takes the maximum walking path 17:01:54 well that's an np-complete problem so she might be smarter than you think. 17:03:00 well actually certainly not 17:03:28 well depends on what you mean by maximal 17:03:29 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 but maybe the edge problem is more natural 17:04:10 but the only reason this bothers me, is that my brothers hearing is too good.. 17:04:22 and everything makes him angry 17:04:37 i see, i see 17:04:47 i don't have brothers 17:04:48 and part of him blames my mom for all that is wrong in his life which he kind of admits once 17:05:13 has he considered blaming himself? 17:05:33 so.. to me.. its like when my mom makes noise, she is hitting a hornets nest with a stick 17:05:38 although she has the right to 17:05:49 well.. he bought 2 books.. 1 about anger, 1 about shame 17:06:01 shame? 17:06:02 so, he means well on some level 17:06:06 yup 17:06:12 why is he ashamed 17:06:23 i dunno.. and probably dangerous to ask him :D 17:06:37 awesome family you have there 17:06:45 nah its not so bad 17:06:49 if only you were 18 and could move away 17:06:55 okay 17:07:00 a lot of my problems is in me though 17:07:15 I've got a nice round number. 17:07:15 that i am basically the cause of my problems 17:07:32 i have trouble with everyone i meet since i was child 17:07:34 fizzie: which number? 17:07:45 -!- derdon has joined. 17:07:48 itidus21: is it because you keep telling them that you suck and they get tired of it? 17:08:01 have you considered letting them find out on their own? 17:08:17 -!- Ngevd has quit (Quit: Goodbye). 17:08:34 Zero, the roundest number. (Well, I suppose that's a matter of definition.) 17:09:04 It's true 17:09:15 You can't round it down to the nearest 10^n! 17:09:26 It's already all rounded! 17:09:41 and 1 isn't? 17:09:45 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 itidus21: you cannot stop it even with new people you meet? 17:10:41 my behaviour is basically uniform 17:10:43 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 i think i may be cursed 17:11:29 sounds likely. 17:12:17 i have become refuse of society 17:12:22 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 so i have a hunch i know how you feeel 17:12:34 *feel 17:13:33 the way it works is the weaker someone is, the more severely is the punishment if they stand up for themselves 17:13:40 what does it mean to be refuse of society 17:13:47 since in a very subtle way, it is like a class war 17:14:06 stand up for themselves? i have no idea how that concept applies to modern society. 17:16:21 oklopol: he means he's literally trash from society. 17:16:24 stand up to who? my family? my friends? my coworkers? 17:16:36 this is who i have to stand up to day to day? 17:16:43 how can it work? 17:16:49 yeah and i'm not sure what you mean by that 17:16:58 why should they be the enemy? 17:17:09 are they telling you to do things? will they hurt you if you don't? 17:17:37 how can someone stand up to everyone? 17:17:52 kallisti: like someone's poop that learned to talk? that would be impressive. 17:18:06 itidus21: what is "standing up to someone"? 17:18:33 i never quite understood 17:18:57 thats how society works... the ones in real trouble are the ones where their closest humans have turned against them 17:19:35 err, if someone turns against you, you walk away from them? 17:20:23 surely i can't be the only one 17:20:30 i bet you aren't 17:20:54 an undercurrent becomes established 17:21:14 well at least my dad wasn't abusive alcoholic 17:21:24 so.. i see that on tv shows 17:21:27 it is for some 17:21:48 he was in his own words( :-P ) perfect 17:22:05 :t Map.! 17:22:06 parse error on input `Map.!' 17:22:18 :t Map.(!) 17:22:19 Not in scope: data constructor `Map' 17:22:21 :t (Map.!) 17:22:22 Couldn't find qualified module. 17:23:02 but, when my father died.. i slowly learned the world is a very lonely place 17:23:11 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 if the world feels like a lonely place, your friends probably suck 17:28:36 yep 17:28:58 :-) it wasn't their fault 17:29:03 you should try kallisti for instance, he's a great friend 17:29:05 -!- sebbu has quit (Ping timeout: 244 seconds). 17:29:19 well true, so maybe you can let them live. 17:30:00 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 i do not know what else happened to him 17:30:51 and that still somehow magically affects his life? 17:31:01 * kallisti is the best friend ever. 17:31:01 i will never understand people 17:31:24 no.. i knew him in 2nd grade :P 17:31:40 oh okay. 17:33:33 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 i dunno the full story of him 17:34:26 second guy had .. endless stream of girlfriends.. then finally had a baby.. ended up leaving it apparently 17:34:45 i dunno 17:34:55 i have spent a long time with such weird people 17:35:37 and since i don't argue back, fight back.. eventually things always leads to abuse 17:35:58 physical abuse? 17:36:16 any sort 17:36:19 No; "FFS iti would you *please* shut up for once" abuse. 17:36:55 well your life certainly sounds interesting. 17:37:01 but you should really stop bragging about it 17:37:22 how do you expect to keep living our perfect lives after that. 17:37:41 i have to leave and be an asshole somewhere else, see you later :) 17:39:48 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 :t curry 17:40:01 forall a b c. ((a, b) -> c) -> a -> b -> c 17:40:12 :t uncurry 17:40:13 forall a b c. (a -> b -> c) -> (a, b) -> c 17:40:16 have you considered math, it's like programming but better 17:40:25 clearly they are the same thing 17:40:38 now.. you run along :D 17:40:41 you'd think 17:40:42 programming is more like a subset of math. 17:40:49 she has to brush her hair or something 17:40:53 the subset that's mostly concerned with computable things. 17:41:02 so i have another 20 min 17:41:08 ahhhh 17:41:10 women 17:42:36 so, theres combinatrics and lambda calculus right? 17:42:45 and they are effectively capable of the same things right? 17:43:00 um 17:43:04 ^combinatorics 17:43:19 combinatorics is like... counting things 17:44:03 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 women 17:44:12 so, theres combinatrics and lambda calculus right? 17:44:15 The Combinatrix. 17:44:21 :o 17:44:24 Phantom_Hoover: ... 17:44:42 thats probably what i was thinking 17:44:43 Combinatrix and Lambda Calculus. 17:45:37 "In the theory of computation, a diversity of mathematical models of computers have been developed." hmm.. 17:45:43 itidus21: combinatory logic and combinatoric are rather different things 17:45:44 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 *s 17:47:11 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 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 heh mugglative 17:48:16 so many fun words. 17:48:33 unfortunately i don't think that's an actual term in math 17:48:36 and blah isn't either 17:49:04 mugglative blah-theory 17:49:10 there is a concept called sex entropy though, have i mentioned 17:50:17 no. 17:50:26 sounds fun. 17:50:35 -!- sebbu2 has changed nick to sebbu. 18:09:16 -!- MSleep has changed nick to MDude. 18:17:22 @hoogle Ptr a -> IO a 18:17:22 Foreign.Storable peek :: Storable a => Ptr a -> IO a 18:17:22 Foreign.Marshal.Alloc free :: Ptr a -> IO () 18:17:22 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 @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 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 I've just had an idea for an esolang! 19:14:59 A mixture of lambda calculus and the Copenhagen interpretation of quantum mechanics! 19:15:48 BUT WITHOUT QUANTUM MECHANICS! 19:15:55 So, lambda calculus 19:16:13 Hmm... 19:16:20 It could be a functional extension to ORK... 19:18:12 There is a magic box called Trevor. 19:19:56 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 Trevor = const 19:20:44 :) 19:21:52 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 so what is a function? i feel like a jackass asking this again 19:43:52 Hello 19:44:01 is there any deep intuition of what a function is? 19:44:20 A function is a subroutine that returns a value 19:44:41 lol 19:44:55 hmm 19:45:07 In some languages, in other languages it is THE DIFFERENCE BETWEEN LIFE AND DEATH 19:45:20 so if you use church numerals to encode back and forth between arabic numerals and church numerals 19:45:44 Can you reprhase that? I don't quite get what you mean 19:45:48 can you use lambda calculus to write.. say.. ummm 19:45:53 well... 19:46:12 suppose you have some number like 555 19:46:18 and you want to square it 19:46:38 then you could find an encoding of 555 in lambda calculus 19:47:26 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 and then.. does there exist a lambda calculus expression for squaring a number.. which you could put next to your 555 19:48:11 That is the method of creating the Church numeral 555 that is the most simple 19:48:23 \n f.n (n f) 19:49:03 > let square = \n f -> n (n f) in square (ap (.) (join (,))) (+1) 0 19:49:03 Occurs check: cannot construct the infinite type: a = a -> b 19:49:15 Haskell doesn't like this 19:49:27 and.. then you take that result.. and convert it from a church numeral.. 19:49:40 back to arabic numerals 19:50:11 is such a thing possible for any function one might find in a library such as c's math.h? 19:50:44 With an appropriate representation for, eg, fractions, negative numbers, etc. 19:50:45 Yes 19:51:06 Of course, I know nothing about math.h, and very little about C 19:51:11 lol 19:51:16 hummmmm 19:52:44 Does anyone here play Sopio? 19:53:27 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 > ap (.) (join (.)) (+1) 0 19:55:07 3 19:55:10 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 but then again.... maybe it will prove to be otherwise 19:55:33 @pl (\x y -> z) 19:55:34 const (const z) 19:55:35 Yes, church numerals is unary, not very efficient 19:55:48 For large numbers 19:56:10 Hmm... 19:56:30 Now I'm going to make LC things for church lists of booleans 19:56:44 so, it seems each scheme has a unique strength to it 19:58:13 decimals are easy to compute with by hand 19:58:23 binary is easy to compute with for a computer 19:58:57 Decimals are only easy to us because we are used to them 19:59:11 And we can count on our hands 19:59:33 church can be performed by a computer and allows numbers to be used in lambda calculus 20:01:00 what i mean by performed is we are saved the burden by a computer 20:01:42 and i assume that almost always optimized into binary 20:05:14 -!- Phantom_Hoover has joined. 20:05:36 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 You're probably right 20:06:13 well.. its not just vs binary 20:06:22 Also, I'm going to suck at TF2 now. 20:06:23 Bye 20:06:27 Ngevd, I'm pretty sure I wouldn't be able to remember my telephone number in binary :P 20:06:30 so i got to thinking 20:06:50 there could be an operation on a number where you do something to a number and it's reverse 20:06:51 There's not so many good reasons to favour 10 over 16, though. 20:06:52 itidus21, anyway binary is useful for computers because it keeps the electronics simple. 20:07:06 fizzie, indeed. I'm not saying decimal is optimal 20:07:14 just that binary isn't for a human. 20:07:24 Vorpal: plurality of numeral encoding is revolting 20:07:28 60 is comparatively common among human civilizations 20:07:29 itidus21, eh? 20:07:32 itidus21, what? 20:07:39 Vorpal: plurality of numeral encoding is great 20:07:43 Ngevd, ah yes, the Babylonians used that, right? 20:07:50 Vorpal, so I believe 20:07:50 itidus21, you mean there are many bases? 20:07:54 itidus21, or what? 20:08:01 more than bases even 20:08:05 well sure 20:08:11 there are an infinite number of bases anyway 20:08:24 so anything else doesn't matter unless it is uncountable 20:08:25 i mean like say.. church numerals, electronic binary numerals, arabic decimal numerals 20:08:39 itidus21, why did you call it revolting? 20:08:49 because of the topic 20:08:54 Ngevd, anyway I think we should count using gray code. :D 20:09:20 godel numerals which i wouldnt know 20:09:51 itidus21, what is the topic then? 20:10:04 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 ah 20:10:30 -!- ais523 has joined. 20:10:34 I thought you meant because of the topic of the discssion 20:10:37 discussion* 20:10:40 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 rather than because of the channel topic 20:10:43 ais523, hi 20:10:50 yeah.. it was ambiguous and weird of me 20:11:04 hi 20:11:23 itidus21, also those definitions of func are incompatible with each other 20:11:28 I've actually spent most of the time since I was last online asleep 20:11:34 true.. 20:11:40 for a 24-hour period, I was awake for only about 3 hours or so in the middle 20:11:42 i don't know what to name them 20:11:45 and maybe a fewm inutes at each end 20:11:56 i don't know if such an operation is common 20:12:52 ais523, ouch 20:13:23 like ... func_blah1(12345) = 12345 + 54321; func_blah2(12345) = 12345 * 54321 20:13:32 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 ais523, yet it seems people prefer the thread approach? Why? 20:14:01 Vorpal: because it means that things that should be independent, actually are 20:14:12 or to put it another way, a round-robin scheduler written by hand is not ideal for every application 20:14:43 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 with an extra bit of info saying whether to do this operation 20:15:51 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 well, in that case you have an unusual use pattern, and your solution might actually be best 20:17:19 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 also turn based 20:18:25 http://sprunge.us/dDgO hi someone complain about this code. 20:18:41 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 async* 20:18:46 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 I'm still not sure if I want to use the (File, Rank) coordinate system. 20:20:29 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 Vorpal: hmm, that exists in Linux too 20:20:59 you can request a SIGIO when data's available 20:20:59 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 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 or func(a^b) = a^b * b^a 20:23:15 ais523, anyway for linux that sounds rather inefficient. Unless SIGIO has a payload saying which fd it was. 20:24:12 Vorpal: yep, it can have a payload 20:24:21 although you have to specifically request one, probably for backwards compatibility 20:24:26 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 it's certainly memory efficient. 20:26:07 -!- Zuu has quit (Ping timeout: 252 seconds). 20:26:31 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 (I have no idea what sort of systems the latter was meant for) 20:27:21 microwaves 20:28:52 something that doesn't have an OS. 20:28:58 hah 20:29:06 Erlang is basically a standalone mini-OS. 20:29:15 kallisti, might be for some sort of embedded target. Erlang runs on vxworks for example. 20:30:13 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 Haskell should get library support for that kind of stuff. 20:31:09 (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 kallisti, also hot-swapping currently executing code :P That might be more annoying in haskell. 20:32:00 I'm familiar with that one. 20:32:05 it takes a bit of effort to get that working. 20:32:23 their framework thing is kind of weird. 20:32:29 in erlang or in haskell? 20:32:36 erlang 20:32:41 you do need to provide code if the state representation changed 20:32:45 yes 20:32:55 obviously 20:33:13 Haskell solution: write perfect code that never needs to change 20:33:49 kallisti, but apart from that if you use the built in behaviours (such as gen_server) it is trivial 20:34:13 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 I couldn't really make sense of their documentation on those. 20:34:34 you just use the proc_lib module 20:34:39 I recally being very confused at the time of reading. 20:34:56 also hi everyone: complain about my Haskell 20:34:59 http://sprunge.us/dDgO 20:35:00 oh and sys I believe 20:35:09 kallisti, about gen_server? 20:35:10 oklopol: complain 20:35:24 Vorpal: the whole thing. I don't remember the name of it. they gave it some weird name. 20:35:29 kallisti, eh, basically you implement a callback module and gen_server provides the event loop and such. 20:35:30 their library thing. 20:35:49 kallisti, err they gave their db library a weird name, is that what you mean? 20:36:05 I think so. 20:36:09 kallisti, mnesia? 20:36:13 also hi everyone: complain about my Haskell 20:36:14 I never used it 20:36:15 but I recall gen_server being part of like some standard erlang pattern that had a weird name 20:36:19 or something. 20:37:04 Sgeo: I can only assume you're writing a huge reply about how terrible my code is. 20:37:07 this is good. 20:37:08 kallisti, well you generally put your gen_servers in a supervisor tree, to allow error-recovery if a process crashes. 20:37:14 kallisti, no, I'm not 20:37:15 but that isn't really weird 20:37:26 I thought people thought you were asking them to complain about Erlang 20:37:34 wat 20:37:38 how does that even happen 20:37:40 Sgeo, no? 20:38:30 it's currently the best portal chess implementation in the world. still in the early alpha stages. 20:38:37 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 kallisti, it is also the only one :P 20:39:05 Vorpal: I recall the line seperators being annoying, but I'm sure I'd get used to it. 20:39:11 oh that 20:39:20 yeah that annoyed me for like the first week or so 20:39:25 I'm used to it now 20:39:34 @src lines 20:39:34 Source not found. And you call yourself a Rocket Scientist! 20:40:11 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 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 the physical version of the game should use actual mirrors and penlights :P 20:46:31 except that nothing in the game actually corresponds to a mirror 20:46:39 Hello 20:46:43 oh right.. just portals 20:46:46 cool cool 20:47:07 something or other just disregard my comment 20:47:21 In that case, it should just use actual portals. 20:47:40 incidentally does a pen light create a beam as it bounces off a mirror? 20:48:14 pen laser might be the term 20:48:38 disregard that also......... 20:48:54 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 would it bounce off neatly like a >| ? 20:50:14 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 fizzie, heh 20:50:33 I don't recall lasers even being involved in any of the tasks. 20:50:34 yes like usual in mirrors 20:50:42 itidus21, ^ 20:50:58 itidus21, so you would get pretty much the same result as looking straight into a laser 20:51:04 itidus21, which is obviously bad 20:51:20 i meant looking on from the side 20:51:40 well you wouldn't see any beam anyway unless the air was dusty 20:51:51 Or if it's bright enough. 20:52:09 Well, okay, not if it's really non-dusty and non-humid. 20:52:14 fizzie, I don't think you can ever see a laser beam passing through a transparent medium? 20:52:15 ok suppose someone has just slammed a bag of flour on the ground yet remembered to keep the mirror clean 20:52:24 fizzie, maybe if it turns the air to plasma? 20:52:32 -!- oerjan has joined. 20:52:36 but then you have other problems 20:52:48 itidus21, eh. No idea 20:52:50 and somehow you bounce a laser off this mirror, through flour 20:52:57 do you think you would get a bounce? 20:52:58 "good luck" 20:53:00 Vorpal: Well, no, but "air" in most places isn't absolutely free of particles. 20:53:03 ok :D 20:53:27 fizzie, well yes, but is it usually enough to actually see the laser? 20:53:30 Vorpal: Anyway, it's got molecules in it. 20:53:41 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 this evening's morbid discovery: there is apparently a small bird hanging from the neighbor's flag. 20:53:49 fizzie, ooh, cool 20:53:51 ok i understand the point here.. light is only visible when it is reflected off something 20:54:28 "Such pointers, particularly in the green-light output range, are used as astronomical-object pointers for teaching purposes." 20:54:31 err rather 20:54:34 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 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 (sorry, i still don't have a camera.) 20:55:46 oerjan, what about your cell phone? 20:55:57 neither does that. 20:56:05 oerjan, also is the bird dead? 20:56:16 Or just "hanging out"? 20:56:30 Vorpal: deep frozen, if i judge by the sound effects of its hitting the flag pole. 20:56:40 oerjan, how does it stay up? 20:56:50 oerjan, rather than fall to the ground? 20:57:13 it looked like the end of the flag had twirled around it a bit 20:57:41 i guess its claws got stuck to it 20:57:55 ah 20:58:04 oerjan, so not a rope around the neck then? 20:58:25 it was a little hard to see in the dark, but it looked like a birdy shape 20:58:46 oerjan, I meant a rope around the neck of the bird... 20:58:46 tail and head visible 20:59:12 (hm hanging wouldn't work on birds, they could just hover to avoid it killing them) 20:59:13 no... i'd guess bumping into the flag pole would tend to do the killing 20:59:32 due to the wind 20:59:39 oerjan, I'm surprised, birds bumping into windows and such doesn't tend to kill them. Hm. 20:59:57 It doesn't? 20:59:58 Vorpal: i've definitely seen a bird killed by bumping into a window 21:00:01 doesn't tend to die* 21:00:07 Sometimes they do die from that. 21:00:25 in fact it was a pretty eerie omen when it happened, just before my mom died 21:00:51 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 oerjan, ouch 21:01:47 what is rönn in English hm 21:01:54 ah: https://en.wikipedia.org/wiki/Sorbus_aucuparia 21:02:00 Sgeo, usually those fruits ^ 21:02:34 very sour fruits. 21:02:36 "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 fizzie, hm 21:03:06 Certainly they don't *always* die from it. 21:03:20 fizzie, never seen a bird die from a window collision, probably does happen though. Maybe the Swedish birds are smarter? ;) 21:04:05 Vorpal: i'd assume it depends on the speed of the bird 21:04:20 So maybe the Swedish birds are just lazier. 21:04:22 if they're drunk, they probably don't do very high speed flying 21:04:40 oerjan: sure? drunk drivers often drive faster then non-drunk drivers 21:04:47 although sometimes they drive very slowly instead 21:04:59 ais523: yeah but they don't have to use their own muscle power :P 21:05:08 Drunk runners don't run so terribly fast, I don't think. 21:05:13 Or straight. 21:06:10 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 And iirc jackdaws are rather smart for being birds. 21:07:14 Vorpal: well i didn't _see_ it colliding, i heard a *bang* and found a dead bird afterwards 21:07:59 oerjan, well I never claimed to count actually seen collisions 21:08:08 err to only* 21:08:37 oerjan, I never found any other evidence either for such deadly collisions 21:08:53 has anyone complained about my Haskell yet? 21:08:55 http://sprunge.us/dDgO 21:11:06 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 fizzie, using a firefox addon for that works 21:11:49 customizegoogle iirc 21:11:55 "Meh." 21:11:57 does this mean birds would enter houses often if the windows weren't there? 21:12:16 The commonly accepted explanation is that it's the reflection that confuses them. 21:12:21 They think there's empty space ahead. 21:12:24 is this the sound of people complaining about my Haskell? 21:12:28 fizzie, that doesn't explain water 21:12:31 it seems oddly unlikely that. 21:12:34 -ly 21:12:37 werjiwejrojwetjwoerj owiejr oiwjertoijweoirjwoeitjoiwjeroijwetoijweoirjwoietjiowjer 21:12:46 kallisti, nobody cares? 21:12:55 Vorpal: maybe they think its water 21:12:57 kallisti: the complaints seem to suffer from an elliott deficiency 21:13:05 alas. 21:13:19 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 itidus21, usually birds doesn't try to fly straight into water like that though. Not unless they are like seagulls 21:13:37 (And rarely flat.) 21:13:38 fizzie, true 21:13:55 fizzie, on a calm day you can find flat ponds and such 21:14:20 when we invent proper force fields we can test how birds react to vertical water. 21:14:21 Well, yes. Still, not flat vertical ponds, for the most of the time. 21:14:27 indeed 21:14:34 oerjan: In the interests of science. 21:14:44 ok probably not water 21:14:49 fizzie: precisely! 21:15:08 fizzie, and waterfalls are usually not reflective hm 21:15:53 it is not for us to know 21:16:03 fizzie, anyway normal glass doesn't really let UV-light through right? 21:16:09 and iirc birds can see a bit into UV 21:16:20 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 so I guess it couldn't be that they see through it, but rather it must be the reflection 21:17:00 fizzie, I wonder if normal glass looks like a mirror in UV 21:17:05 Vorpal: it may be different shades of UV that's involved 21:17:06 Vorpal: yeah i have heard of such kind of senses.. specifically in some kind of magic shrimp 21:17:11 ais523, well yes 21:17:12 the ultraviolet range is much larger than the visible range 21:17:20 hm 21:17:22 and I'm moderately sure that at least near UV can get through glass 21:17:43 I just wonder how much of UV that birds can see 21:18:22 ais523, and yes I very much doubt that glass exactly matches the visible range of humans 21:19:28 Vorpal: among other things, it transmits green better than other colors 21:19:37 if you ever look at a sheet of glass edge-on, that will be reasonably obvious 21:19:43 well yes I know 21:19:45 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 ais523, looks like green with a slight blue tint 21:20:40 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 or I guess very thick layer of glass 21:21:13 -!- zzo38 has joined. 21:22:50 http://www.tate.org.uk/research/tateresearch/tatepapers/05spring/images/charman_fig2.gif -- 'a' is claimed to be standard window glass. 21:23:09 fizzie, and b and c? 21:23:38 > fromEnum (Just False) 21:23:39 No instance for (GHC.Enum.Enum (Data.Maybe.Maybe GHC.Bool.Bool)) 21:23:39 arising... 21:23:58 Vorpal: b is specifically "colourless" and "UV-absorbing" sort of glass; c is some sort of UV-absorbing acrylic. 21:24:14 and d is some sort of optimal? 21:24:21 And d is some sort of "ideal" UV filter, yes. 21:24:47 It's in context of UV protection for covered paintings. 21:24:53 ah 21:25:25 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 Let's stop lying about monads please 21:29:27 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 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 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 Something to complain if you happen to meet your own designer. 21:31:12 Giving all the good eyes to some stupid birds. 21:32:28 fizzie, well, I wouldn't want to change atm. It would mess up using monitors so badly. 21:32:32 http://www.webexhibits.org/causesofcolor/images/content/Absorption_peaksZ.jpg -- that's a bit larger. 21:33:02 if we ever meet aliens, they are going to find our color reproduction schemes hilarious 21:33:08 indeed 21:33:31 oerjan, and we would probably find the same about them 21:33:32 But with tetrachromatic vision they could sensibly use a 2x2 color filter pattern instead of going all RG/GB or so. 21:33:56 Three primaries is such an awkward number. 21:34:01 yes 21:34:15 fizzie, I doubt it is arranged like RGGB in our eyes though 21:34:29 fizzie, anyway can't you tile a plane with triangles iirc? 21:34:32 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 Of course it is always made approximate 21:35:19 Sure you can, but grids are much easier. 21:35:21 If you had a computer display that can change its wavelength then you could make better quality colors, probably 21:35:30 Maybe if we'd also go to triangular monitors? 21:35:33 fizzie, anyway can't you tile a plane with triangles iirc? 21:35:33 ....... 21:36:29 Vorpal: unless the aliens have eyes based on actual spectography 21:36:58 oerjan: Or maybe before we meet them we've just upgraded our eyes too. 21:37:07 Phantom_Hoover, what? 21:37:21 'iirc'. 21:37:22 Phantom_Hoover, it is obviously possible if you consider it. 21:37:33 This is not something you could trivially state to be correct. 21:38:04 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 Phantom_Hoover: now prove that you can tile the plane with _any_ shape of triangle >:) 21:38:32 oerjan, rotate it 180°, fit two sides together. 21:38:33 oerjan, that is patently obvious. A proof might take a bit of work though 21:38:45 Fit the resulting parallelograms into strips. 21:38:50 Fit the strips together. 21:38:54 oerjan: Can't you just take the equilateral triangle tiling and transform those triangles? 21:38:59 That too. 21:39:43 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 I seem to recall something about the "physics" of darkvision somewhere. 21:40:12 > logBase 2 64 21:40:12 6.0 21:40:22 zzo38, that got cut off 21:40:24 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 (which afaict is the same as what i was thinking of) 21:41:23 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 zzo38, ah 21:41:40 -!- Ngevd has joined. 21:42:15 Hello 21:43:25 Olé 21:47:00 -!- Zuu has joined. 21:52:47 > fromEnum False 21:52:48 0 21:53:22 -!- sebbu2 has changed nick to sebbu. 21:57:26 -!- Zuu has quit (Ping timeout: 252 seconds). 21:57:36 test = print (toEnum . fromEnum $ Square (Just (Piece White (Arrow North))) (Just (Loop North Bidirectional)) :: Square) 21:57:37 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 *PortalChess> test 21:57:47 Square Nothing Nothing 21:57:50 FFFFFFFFFUUUUUUUUUU 22:02:20 fizzie, hm I wonder why digital cameras use RGBG and such rather than triangular RGB sensors 22:02:36 fizzie: ok congruent but possibly mirrored 22:02:37 BECAUSE THEY LOVE GREEN 22:03:01 or wait 22:03:02 Vorpal: Possibly because people want to get rectangular images? 22:03:40 > quotRem 0 8 22:03:40 (0,0) 22:03:51 > quotRem 8 8 22:03:52 (1,0) 22:03:54 -!- Zuu has joined. 22:04:04 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 although i assume that's what it is 22:04:18 you get an uneven edge sure, but I don't see why that is a problem 22:04:52 oerjan, looks to me like the same way they are used in opengl kind of? 22:04:53 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 or is that what you don't grasp? 22:05:22 oerjan: I seem to be getting zeros something. Because my test case becomes Square Nothing Nothing 22:06:57 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 Vorpal: i'm just not very used to actually using them 22:07:36 oerjan, ah 22:08:22 oh I found it 22:08:24 I think 22:08:53 noep 22:09:06 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 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 fizzie: well yes, linear map = affine map fixing the origin 22:12:25 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 I guess that's a bit analoguous to "three types of cones and then the rods" sort of arrangement. 22:13:13 And there was that one with an "emerald" pixel. :p 22:13:30 (Which I think was named just because it sounds so good in PR literature.) 22:13:39 fizzie, hm 22:13:58 fizzie, so you mean some sort of extra colour humans can't see? 22:14:03 or well, not directly 22:14:12 > quotRem 2 8 22:14:12 (0,2) 22:14:21 > quotRem 10 8 22:14:21 (1,2) 22:14:25 kallisti: in your Enum PieceInfo, you have some toEnum x 's that should be toEnum m 22:14:38 oerjan: yes I spotted that, but it didn't fix anything.. 22:15:06 same output 22:15:10 so that case never happened 22:15:48 I'm guessing it's some minor mismatch of variables somewhere 22:15:56 but I'm tired and can't spot it. :P 22:16:52 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 Incidentally, I've sometimes wondered if any cameras, if you turn a "black-and-white" mode on, produces "double-resolution" images. 22:19:21 I seem to recall that dcraw has a flag for that. 22:19:54 "-d: Show the raw data as a grayscale image with no interpolation. Good for photographing black-and-white documents. 22:19:54 -D: Same as -d, but totally raw (no color scaling)." 22:19:59 Right, that small-d one. 22:21:22 kallisti: Enum Piece has a mismatch between fromEnum and toEnum, i think 22:21:25 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 fromEnum (Piece p i) = (fromEnum p * 21) + fromEnum i 22:26:39 toEnum i = let (d,m) = i `quotRem` 21 22:26:40 in Piece (toEnum d) (toEnum m) 22:26:44 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 oerjan: is the current definition 22:26:50 I think that one is correct. 22:27:05 fizzie, hm true 22:27:54 kallisti: yes that's what i thought 22:28:30 ...still broken. :P 22:28:31 i don't see any other Enum errors, although that's a horrible mess of compile time constants 22:28:38 and, indeed. 22:28:51 I could make bounded instances as well. 22:28:53 :t fromEnum 22:28:54 forall a. (Enum a) => a -> Int 22:28:57 hm 22:29:03 kallisti: you fixed that PieceInfo part too? 22:29:08 :t toEnum 22:29:09 forall a. (Enum a) => Int -> a 22:29:17 oerjan: yes. 22:30:10 @hoogle Piece 22:30:10 package path-pieces 22:30:11 package TimePiece 22:30:15 no... 22:30:19 @src Piece 22:30:19 Source not found. Sorry. 22:30:22 oh well 22:30:39 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 Vorpal: sheesh it's from kallisti's program 22:30:52 oerjan, oh 22:31:01 oerjan, WHY CAN'T HOOGLE INDEX ALL RELEVANT CODE! 22:31:23 fizzie, ah yes I heard about those too 22:31:29 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 kallisti: have you remembered to reload/recompile? >:) 22:31:59 ....yes 22:32:04 unless :l doesn't recompile 22:32:20 use :r just in case 22:32:41 Square Nothing Nothing 22:32:53 I'll try some different inputs 22:32:57 see if I can get something different. 22:32:58 kallisti: do you have a smaller breaking test case? 22:33:19 I can replace either of the two fields with a Nothing and it will still break like that 22:33:37 what happens if you convert a field by itself? 22:34:38 basically, give me the smallest breaking value whose parts don't break 22:34:45 TO THE SCIENCE LAB 22:34:50 WHERE WE EXPERIMENT IN /COMPUTER SCIENCE/ 22:35:20 kallisti, be careful of any lasers 22:35:31 oerjan: well sheesh now that you're forcing me to do thorough testing I can probably just find it myself. 22:35:49 viaInt x = (toEnum $ fromEnum x) `asTypeOf` x might be useful 22:36:13 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 ...oh 22:36:38 fizzie, nice 22:37:57 kallisti: you realize that would have been easier than trying to mentally check the code in the first place, right? 22:39:03 oerjan: but testing is tedious 22:39:23 * kallisti logic 22:39:53 -!- nooga has quit (Ping timeout: 240 seconds). 22:40:51 oerjan: it would appear that the smallest breaking test case is the one I started with. 22:41:00 the only one that messes up is the Square type 22:41:23 hmph 22:42:07 kallisti: can i get the actual fromEnum value of your test case? 22:42:22 fizzie, very cool indeed 22:42:36 fizzie, how are the sensors placed in human eyes? 22:42:51 oerjan: all these good ideas... where do they come from? :P 22:42:51 and about how many megapixels do human eyes produce? 22:43:10 Vorpal: I've seen some pictures somewhere; "rather messily", and the resolution depends very heavily on the angle. 22:43:17 hm okay 22:43:22 All in all, it's clear it hasn't been designed by an *engineer*. 22:43:26 heh 22:43:26 Probably an arts guy. 22:43:29 :D 22:43:38 oerjan: oh hmmm 434 22:44:00 > 434 `quotRem` 17 22:44:01 (25,9) 22:44:46 Vorpal: I mean, look at this stuff: http://www.phys.ufl.edu/~avery/course/3400/vision/rod_cone_distribution2.jpg 22:44:58 fizzie, so what about the average resolution? And what about the resolution near the center? 22:45:47 fizzie, so uh in dark humans see best towards the sides? 22:46:04 Yes. But note that it's not very much towards the sides. 22:46:08 Ten degrees isn't all that much. 22:46:15 hm 22:46:17 true 22:46:25 Also you don't really see any colors except right in the middle. 22:46:47 fizzie, there seem to be a few cones towards the sides, just very few 22:46:49 so hm 22:46:52 -!- iconmaster has quit (Read error: Connection reset by peer). 22:47:30 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 Apparently there's in total some 120 million rods and 6-7 million cones. 22:47:41 oerjan: I fear I will need more than a Word8 to store board squares. :P 22:48:15 fizzie, doesn't that work out to 120 MP for the first (if it was evenly distributed and so on?) 22:48:24 kallisti: btw when you said every subpart works correctly, does that include the Maybes? 22:48:40 oh.. 22:48:40 Vorpal: Yes, that's how many "pixels" there are. 22:48:43 didn't check those. 22:48:45 actually 22:48:46 forgot 22:48:52 fizzie, quite a good resolution 22:48:52 I bet they result in Nothings 22:48:57 or something 22:48:59 let's fine out 22:49:21 kallisti, sounds like a fine idea 22:49:42 kallisti: oh wait, found the bug :D 22:50:13 toEnum for Maybe misses the Just and so recurses down to Nothing 22:50:47 oh... 22:51:10 the joys of overloaded functions. 22:52:41 at least it bothered to terminate by accident 22:53:09 yep seems fine now. 22:53:33 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 fizzie, heh 22:54:05 It's an impressive sensor, sure, but it still feels quite haphazardly designed. I mean, with that blind spot and all. 22:54:17 fizzie, that would be one amazing monitor 22:54:38 probably would require a much better GPU if I wanted a reasonably large monitor as well 22:54:42 The blind spot is an especially good example since it's completely unnecessary. 22:55:00 fizzie, yes the nerves could just go straight back a bit instead first 22:55:05 -!- kallisti_ has joined. 22:55:25 Right, and they do in some species. 22:55:30 heh 22:56:18 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 Vorpal: I think they're summed up; that's part of the angular resolution calculations. 22:57:25 "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 heh 22:57:52 So at the edges you've got both sparser distribution and less nerves. 22:57:59 ouch 22:58:15 fizzie, they managed to keep the noise level down though 22:58:24 unless my brain is outsmarting me again 22:58:35 Brains are good at lying. 22:58:38 I mean, to themselves too. 22:58:47 well yes 22:59:11 fizzie, I wonder how the SNR of the eye compares to the SNR of professional cameras 22:59:46 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 Well, it does do averaging over time too. 23:02:06 > (21 * 2 + 1) * (8 * 2) 23:02:07 688 23:02:10 hm. 23:02:13 -!- augur has joined. 23:02:28 > (21 * 2 + 1) * (8 * 2 + 1) 23:02:28 731 23:02:32 there we go. 23:03:18 oerjan: really this is code that GHC could autogenerate for product types where the fields are Bounded and Enum 23:03:47 I think it would also be possible for sum types too 23:04:21 as long as they're bounded, yes 23:04:23 PieceInfo is a sum type, for example. it just calculates offsets 23:05:46 kallisti_: you could get autogeneration if you made your product types newtypes over tuples instead >:) 23:06:01 no thanks 23:06:21 are you actually suggesting what's considering bad practice in the Haskell community? shame on you. 23:06:27 *ed 23:07:30 well given that you cannot presently do generalized deriving for something with more than one field... 23:08:05 Square (Just (Piece (White, Arrow North))) (Just (Loop (Northwest, Unidirectional))) 23:08:09 looks good 23:08:10 maybe they could make that an extension 23:08:38 data Test ... = Test A B deriving (...) uses (A,B) to derive from 23:09:02 *would use 23:09:32 ah yes 23:09:43 that would be good 23:09:49 isn't there a way to derive typeclasses yourself? 23:09:52 maybe someone has already done this. 23:10:01 there's some template haskell stuff 23:12:20 one day I should use that for something. 23:12:24 and something based on autogenerating code, which you have to include in the program if not using template haskell 23:14:49 derivationParams :: String -> ([Type] -> (String -> Decl) -> FullDataDecl -> Either String [Decl]) -> Derivation 23:14:54 good type. for a bright future 23:15:12 also: no documentation 23:16:07 TYPES ARE ALL THE DOCUMENTATIN YOU NEED 23:16:29 * oerjan once again finds typo correction inappropriate 23:16:31 well the Either is a possible error message. 23:17:46 -!- Madoka-Kaname has quit (Ping timeout: 240 seconds). 23:20:21 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 ..what is this for. 23:22:48 for audio signals: Time -> Int and [(Time, Int)] are good 23:25:14 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 But I don't know exactly how the mathematical synthesis should be represented in this program 23:26:31 you can't just use an audio signal? 23:27:00 in PCM format? 23:27:15 kallisti_, seems a bit dumb for S3M at least (not sure what MML is) 23:27:41 kallisti_, from what I remember S3M is a tracker file format. Like .mod or such 23:28:31 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 It is not needed to know about these file formats to answer my question 23:32:45 zzo38, what is MML though? Another tracker format? 23:32:54 No, MML is music macro language 23:33:01 never heard of it 23:33:04 did you invent it? 23:33:08 No 23:33:27 But there are many variants of MML although some features are common in most of them 23:33:28 it doesn't sound like any actual synthesis is involed. but I don't know what MML does. 23:35:10 zzo38, MML looks like the thing that you can echo to the PC speaker device on FreeBSD to make it play 23:35:13 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 I wonder if it is the same 23:35:49 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 those are getting rarer 23:36:06 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 zzo38, looks like pretty much the same as PLAY in QBASIC according to wikipedia, plus some extensions 23:37:00 What extensions? 23:37:11 zzo38, I don't remember exactly. Check the man page? 23:37:19 I don't have FreeBSD 23:37:27 they have man pages on their websites 23:37:32 OK 23:37:52 I have written a PlayBP subroutine for use in QBASIC, which works the same as PLAY but using Bohlen-Pierce temperaments 23:38:52 zzo38, http://www.freebsd.org/cgi/man.cgi?query=spkr&sektion=4&apropos=0&manpath=FreeBSD+8.2-RELEASE 23:39:16 you can set articulation and such 23:39:37 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 http://www.reddit.com/r/math/comments/o6o0o/having_an_existential_math_crisis_help/ 23:41:52 It's itidus21! 23:47:33 Phantom_Hoover, heh 23:49:42 I'm afraid I don't really understand bitcoin 23:49:44 -!- Patashu has joined. 23:52:12 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 night 23:57:19 -!- DCliche has quit (Quit: SLEEP, GLORIOUS SLEEP). 23:58:27 > 6.5 * 5 23:58:28 32.5 23:59:13 ya found me 23:59:32 tidus is trying to nut out the meaning of SK 23:59:46 and he is pretty close 2012-01-08: 00:00:36 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 not for me 00:00:53 for most people maybe 00:01:22 anyway, i like this presented idea of SK as gardening 00:01:31 then you can see how SK(I) can be used to rewrite any lambda expression without variables 00:01:45 ive decided to pretend I doesn't exist 00:02:04 it complicates things too much 00:02:08 well I = SKK, for example 00:02:30 >:-) 00:02:45 so it's redundant. but it's logically necessary to use some form of it for the rewriting. 00:03:21 to handle \x . x 00:03:21 hmm.. bah.. i don't need lambda calculus 00:04:39 What good has lambda calculus ever done, huh? 00:06:19 a lot, but probably not enough to parody an entire monty python sketch. 00:06:26 What's Lambda Calculus ever done for me, eh? 00:06:29 Aw. 00:06:34 I'm going back to the warm, waiting arms of the Combinatrix. 00:07:28 yeah do the combinator bird shop sketch instead 00:07:30 oerjan: Are you sure lambda calculus wasn't involved when the aqueduct and sanitation were invented? 00:07:42 fizzie: well not _entirely_ sure 00:07:52 oerjan, this mockingbird is mocking me all the time! 00:07:53 -!- zzo38 has quit (Read error: Connection reset by peer). 00:08:24 it's not mocking, it's just diagonalizing 00:08:48 oerjan: Ooh, I just realized you must like the bird shop sketch because it involves fjords. 00:09:01 We call them firths here. 00:09:10 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 As exemplified by the Firth of Forth, the best-named thing ever. 00:09:46 Phantom_Hoover: that is a surprisingly good name, indeed 00:09:56 oerjan, look, my lad, I know mockery when I hear it and I am being mocked right now. 00:09:59 fizzie: actually i was thinking more of the cheese shop sketch here. do you have any owls? 00:11:18 Goodnigt 00:11:19 h 00:11:21 -!- Ngevd has quit (Quit: Goodbye). 00:13:54 * oerjan fjords for the pines 00:17:46 Fjording the river. 00:18:03 . 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 yay i can compute anything O.O 00:19:46 . o O ( Kab = a; K(ab) = K(ab); K(ab)c = (ab); ) 00:22:00 but i am pretty dumb so i couldn't do much more than what i just typed at this stage 00:28:45 . o O ( (((Sa)d)c) = ((ac)(dc)); ((aK)(dK))b = ((aK)(dK))b; ) 00:30:30 . 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 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 it's uncanny 01:33:37 either you will burn out soon like me 01:33:43 or you are simply stronger 01:34:52 also i don't understand how #haskell got so big anyway 01:36:15 argh it's up to 815 people 01:42:43 It seems like, unlike most language channels, #haskell contains a very high proportion of the active Haskell community. 01:43:35 how are you defining "Haskell community" in such a way that this isn't definitionally true 01:43:47 Vague handwavey nonsense. 01:44:08 i think the people who write core libraries and production software in Haskell are under-represented on IRC 01:44:33 Hmm. Yeah, you don't see a lot of GHC devs in there I don't think... 01:44:56 Or some of the more significant libraries. 01:45:14 And, actually, who in #haskell does notable production software in Haskell? :P 01:45:22 it's more fun to learn a little Haskell and talk about it all day 01:46:03 "Programming sucks. Knowledge about programming is awesome." or some such? 01:46:13 yeah there's some of that 01:46:40 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 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 > iterate(show.length&&&take 1<= Couldn't match expected type `(GHC.Base.String, [a])' 01:47:36 against infer... 01:48:00 > iterate((show.length&&&take 1)<= Couldn't match expected type `(GHC.Base.String, [a])' 01:48:01 against infer... 01:49:15 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 when you first take LSD, the trip is about the drug 01:51:04 it takes experience to understand that it's a tool which changes how your mind works 01:51:11 which can be applied to anything you can think about 01:51:49 > iterate((<**>[show.length,take 1]).group)"1" 01:51:50 Couldn't match expected type `GHC.Types.Char' 01:51:50 against inferred type... 01:53:11 :t (<**>[show.length,take 1]).group 01:53:11 [Char] -> [String] 01:54:27 > iterate(sequence[show.length,take 1]<= Couldn't match expected type `GHC.Types.Char' 01:54:28 against inferred type... 01:55:02 :t sequence[show.length,take 1]<= [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 :t (<**>[show.length,take 1]) 01:56:19 [[Char]] -> [String] 01:56:50 :t sequence[show.length,take 1] 01:56:51 [Char] -> [String] 02:00:41 :t flip 02:00:42 forall (f :: * -> *) a b. (Functor f) => f (a -> b) -> a -> f b 02:01:16 :t flip[show.length,take 1] 02:01:17 [Char] -> [String] 02:01:49 -!- Jafet has joined. 02:01:56 -!- zzo38 has joined. 02:03:04 @hoogle f (a -> f b) -> a -> f b 02:03:05 Prelude (=<<) :: Monad m => (a -> m b) -> m a -> m b 02:03:05 Control.Monad (=<<) :: Monad m => (a -> m b) -> m a -> m b 02:03:05 Prelude (>>=) :: Monad m => m a -> (a -> m b) -> m b 02:05:08 @hoogle f (a -> f b) -> f a -> f b 02:05:08 Prelude (=<<) :: Monad m => (a -> m b) -> m a -> m b 02:05:08 Control.Monad (=<<) :: Monad m => (a -> m b) -> m a -> m b 02:05:09 Prelude (>>=) :: Monad m => m a -> (a -> m b) -> m b 02:08:49 > iterate(join.flip[show.length,take 1]<= ["1","11","21","1211","111221","312211","13112221","1113213211","3113121113... 02:09:23 :t join.:flip 02:09:23 forall (m :: * -> *) a a1. (Monad m, Functor m) => m (a1 -> m a) -> a1 -> m a 02:09:47 heh 02:23:40 -!- Jafet1 has joined. 02:26:09 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 I wonder what it would be like if we still had dons's statistics on #haskell. 02:32:34 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 What's really amazing is how Cale is still at it. Cale might be the most patient person on IRC. 02:37:46 kmc: So you still take LSD? It's not just a phase? 02:37:55 Or maybe it is a phase, in the ordinary meaning of "phase". 02:40:15 shachaf, I haven't tripped in a while, but I'm planning to do so next month 02:40:32 i think most people who take psychedelics only do it a few times ever 02:40:44 so it's hard to say whether that's a "phase" 02:43:52 possibly it's best to take it regularly but infrequently 02:43:57 like once a year or once every few years 02:45:48 -!- MDude has joined. 02:47:32 kmc: If I did it, would I be like you? :-) 02:47:42 you're already like me 02:47:50 Oh. 02:47:51 at least, the things you say in #haskell are eerily like things I would say 02:48:01 Maybe it rubbed off. 02:48:19 The worst thing about IRC is IRC logs. 02:48:24 OK, the second-worst thing. 02:49:23 i mean what's "best" depends on what you're trying to get out of it in the first place 02:49:47 The worst thing about IRC is that it's all a complete waste of time. 02:50:05 #haskell has not been a waste of time, overall 02:50:13 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 i've learned quite a lot 02:50:24 but perhaps it would be a waste of time to continue 02:50:34 No, IRC log is good thng 02:51:50 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 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 yeah 02:52:11 I wondeer whether the same things apply to Scheme or not. 02:52:24 which things? 02:52:35 Well, I was trying to figure out which things they were. :-) 02:52:39 heh 02:52:42 Scheme is far simpler than Haskell 02:52:49 For example, does the type system make Haskell harder or easier to learn? 02:53:04 Reading Haskell code without type signatures is much more difficult in general. 02:53:36 But maybe types have a higher up-front cost which can discourage students. 02:53:41 harder, for a total beginner to programming, compared to a hypothetical similar-but-dynamically-typed language 02:53:56 one thing to keep in mind is that beginners are writing very small programs with very simple types 02:54:03 so they benefit less from static typing 02:54:15 I suppose that's true. 02:54:35 I still have the vague feeling that imperative languages are easier to learn. 02:54:40 Imperative programming, anyway. 02:54:46 Scheme is a fine imperative language 02:54:49 SICP gets into it pretty quickly 02:54:52 IP i mean 02:55:22 a language with very simple static types might be good for teaching 02:55:33 but haskell's has too many bells and whistles in this area 02:55:54 That's true. 02:55:59 Helium doesn't have type classes, I think. 02:56:00 type classes and overloaded literals and monomorphism restriction 02:56:01 right 02:56:19 a simplified teaching version of Haskell would be great, except that nobody will maintain tool support that's comparable to GHC 02:56:34 also GHC is pretty bad at explaining type errors 02:57:03 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 anyway if you want to teach intro programming, teach python or javascript 02:57:56 if you want to teach intro CS, use Scheme 02:59:42 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 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 kmc: Yes; that is why you need to learn assembly programming too. 03:00:40 You're best off teaching them physics. 03:00:57 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 zzo38, uh, assembly is not how the machine "really works" either 03:01:10 There is also LLVM which is much better designed than C in my opinion 03:01:20 it's another abstraction 03:01:33 the implementation of this abstraction is incredibly complex 03:01:42 but it's hard to observe or modify unless you work at Intel 03:01:47 so people mostly ignore it 03:02:00 Pointers and addresses and memory are also a big abstraction. 03:02:15 Yes everything mostly does. 03:02:43 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 It is why, to design computer that includes the book of full schematic diagrams and program codes printout 03:03:00 because C (and assembly) largely hide those things, 03:03:04 but then they come back to bite you 03:03:06 C is close to the abstract machine! 03:03:28 shachaf, it's not that either 03:03:34 C doesn't really hide caching. Any more than anything above the CPU level does. 03:03:45 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 shachaf, you saw the Linux bug I was talking about earlier? 03:04:31 kmc: This is because their idea of "machine" is the abstract machine that once upon a time was non-abstract. 03:04:36 Which one? The one with the undefined behavior? 03:04:49 yeah 03:05:34 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 here's one example http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commitdiff;h=3c8a9c63d5fd738c261bd0ceece04d9c8357ca13 03:06:46 the bug is that 'tun' can be NULL 03:06:48 kmc: That bug was neat, by the way. You should tell me when you put the slides for your talk up. 03:07:28 if a user maps a page at NULL they can control the value the kernel reads 03:07:38 it looks like this is not exploitable, because 'sk' is unused before the NULL check 03:07:55 but NULL dereference is Undefined Behavior and so the compiler is free to omit that check 03:08:03 which gcc did, hence the bug was exploitable for privilege escalation 03:08:27 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 shachaf, I will! 03:09:19 shachaf: Of course, their intuitions map to pre-ISO C, so the C abstract machine is irrelevant. :P 03:09:33 shachaf: Unfortunately for them, x86 is also an abstract machine. 03:10:04 It's abstract machines all the way down. 03:10:58 kmc: When is the talk? 03:11:11 Oh, Jan 27. 03:13:17 Oh, and Veinor is doing a Haskell class. 03:18:15 '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 that one? 03:19:36 That would seem to be the one. 03:20:00 that claim seems kinda completely false 03:20:03 Haskell is best they do programming and mathematical reasoning in dealing with computer program 03:20:24 For other thing, other programming language might be best, it is one reason why, they have many programming languages 03:20:56 Haskell is far from the best language if you want to prove things about your programs 03:21:15 kmc: Yes, you are probably correct about that. 03:21:30 what examples are there of 'reasoning about code by machines' in Haskell 03:21:45 I imagine that's referring to type checking or something. 03:21:55 Haskell is a very compromisey language if you take e.g. Agda into account. 03:21:55 weak 03:22:03 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 kmc: Equational reasoning that the optimizer can do? 03:22:33 I don't know, I didn't write it. 03:22:44 it seems like a vastly overblown claim that will leave people disappointed 03:22:52 i mean it's an approach i see a lot 03:23:25 "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 Is that a _|_ character? 03:23:51 yes 03:24:00 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 A lot of claims about Haskell are overstated. 03:24:37 Haskell is great but "wealth of static analysis tools" is not its strong point 03:24:55 certain things fit very naturally into the type system 03:25:00 but for anything else it's an uphill battle 03:25:07 To be honest, I don't understand why a lot of people like Haskell so much. 03:25:14 shachaf, it's better than Java! 03:25:26 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 the strongest praise a programming language could get 03:25:38 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 shachaf, well, I think you know why I like Haskell, because I gave a talk about it :) 03:26:13 it's a bit different from the party line 03:26:46 kmc: My statement was ambiguous. 03:27:08 "There exists a large set of people such that I don't why any of its members like Haskell so much." 03:27:16 right 03:27:37 There similarly exists a large set of people who dislike C++ for completely bogus reasons. 03:27:38 which set is that 03:27:41 hehe 03:28:03 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 i think Haskell is a pragmatic language with a lot of well-chosen tradeoffs, and a good implementation 03:29:18 which is a bit different from "Haskell is best because it enforces total ideological purity" 03:29:22 or "Haskell is best because it has the most math" 03:29:51 both of which are factually untrue, anyway 03:30:01 but they are standard reasons given by beginners 03:31:48 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 premature optimization 03:33:51 and my opinion that Haskell is "practical" is conditional on the fact that I already know it well 03:34:49 i think you could probably get 80% of the benefit in a language that's 20% as hard to learn 03:37:34 misconceptions are more like premature optimizations, rather than premature generalizations 03:37:49 maybe that language is OCaml, or F#, or Clojure 03:37:52 maybe it doesn't exist yet 03:38:20 -!- iamcal has quit (Remote host closed the connection). 03:42:20 we start with something general and then optimize it 03:43:28 or misoptimize it 03:44:14 . 03:47:08 I need to go to one of NYC/Washington D.C./Los Angeles in the next few months. 03:47:33 why? 03:47:41 Finnish passport. 03:47:50 cool 03:47:54 It would be best to get it before my birthday in July. 03:47:56 well, LA is probably the cheapest for you to get to 03:48:03 but NYC and DC are vastly superior cities 03:48:55 -!- pikhq has quit (Read error: Operation timed out). 03:49:03 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 it's true! 03:49:15 Also I have relatives there. 03:49:22 I guess I have relatives in San Diego too. 03:50:02 San Diego is pretty far from LA 03:50:07 but you know that 03:50:17 Boston is pretty far from NYC. 03:50:31 oh, you have relatives in boston? 03:50:52 Yes. Although I was referring to my relatives in NYC. 03:51:01 But I could visit both! 03:52:29 Anyway, I could drive to Los Angeles. 03:52:35 Do you feel less like me suddenly, kmc? 03:52:40 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 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 16:30:25: what are the benefits of levenshtein coding over regular binary coding? 05:33:21 elliott: You have 1 new message. '/msg lambdabot @messages' to read it. 05:33:27 itidus21: What is "regular binary coding"? 05:33:52 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 kind of lookup code? 05:33:56 kallisti_: Ix depends on Enum, you moron. 05:41:24 16:58:00: itidus21: do you have a university degree yet? 05:41:24 16:58:10: no 05:41:24 16:58:25: have you considered getting a university degree0 05:41:24 16:58:27: ? 05:41:24 16:58:51: i am living in a weird kind of dire strait... 05:41:24 16:59:11: the world has defeated me from every angle 05:41:26 16:59:32: well i'm aware of that, i felt the question was orthogonal enough 05:41:28 16:59:57: success is mostly an illusion 05:41:30 oklopol: i just want to say you're great 06:01:14 elliott: Do you have a university degree yet? 06:03:31 shachaf: Nope. 06:05:41 Have you considered getting a university degree0 06:05:45 ? 06:18:09 :P 06:22:09 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 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 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 Have you considered getting a something else other than a university degree? 06:51:56 ais523: thanks for deleting that page of spa, 06:52:13 I typo when I type "spam" so much 06:52:26 I was thinking about automating it, but that'd involve learning GreaseMonkey because Esolang doesn't have working user scripts 06:52:34 ais523: can you protect the main page, pls? 06:52:41 there was a complaint on the talk page, and it seems a new wave are targetting it specifically 06:52:45 *wave of spambots 06:52:47 I will if it continues 06:52:58 OK, but this is the second or third day 06:53:06 wouldn't semi-protection work? 06:53:13 one of them hit NetHackWiki's main page a while ago, which is the only spam it's had in ages 06:53:47 theory: Timwi is controlling the spambots 06:54:01 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 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 ok done now what 07:24:35 Another possibility, is prevent Google from indexing it. 07:25:22 -!- Jafet1 has joined. 07:26:53 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 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 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 shachaf: They had a marker up, but I don't think Wikia was happy about it. 07:42:20 IIRC it was just on the main page. 07:42:27 Wikia said they'd remove it after a while. 07:42:44 shachaf: s/added advertisements/progressively redesigned the theme to be more and more terrible while adding more advertisements each time/ 07:42:54 It's a common experience for Wikia users. 07:43:00 The same happened to the most popular WoW wiki, to my understanding. 07:43:18 elliott: Right, I was abbreviating. 07:43:38 My favourite thing about Wikia's theme is the part where every external link has an interstitial ad added to it. 07:43:43 And of course the Wikia pages are way higher ins earch results. 07:43:48 elliott: Oh, yes, now I remember. 07:43:52 I'd suppressed it. :-( 07:44:01 They should add it to internal links too. 07:44:03 MORE PROFIT 07:44:12 Creatures Wiki still has the sane theme 07:44:50 Uh 07:45:00 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 INFINITE PROFIT 07:46:28 shachaf: The "Skip this Ad" button should have an interstitial ad. 07:46:35 elliott: GENIUS 07:46:50 I would never be able to sit through the full 30 seconds without clicking that button. 07:46:56 http://ideone.com/AJZRX is there a way to do this without wrapping in a type? 07:47:04 http://images4.wikia.nocookie.net/__spotlights/images/6d7325c4c94e26518f560e075330aab2.jpg Apparently Bation was overlooked? 07:47:06 *Bastion 07:47:51 Sgeo: 07:48:02 http://stackoverflow.com/questions/8739741/higher-ranked-and-impredicative-types 07:48:16 Sgeo: Why do you use that paste site, by the way? 07:48:18 It's horrible 07:48:25 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 shachaf: We need mauke's paste-copier bot in here. 07:48:45 Maybe I'll write one. 07:48:52 Maybe I'll write a bot that just dumps every URL to sprunge. 07:50:11 elliott: So does UHC support inferring existential types? 07:50:19 That would be a great trick. 07:50:23 x = ... 07:50:27 x :: exists a. a 07:50:35 I've written a universal type inferencer! 07:51:05 What's wrong with IdeOne? 07:51:24 shachaf: I somewhat doubt it. 07:51:43 Sgeo: For one, it's a pastebin with *ads*. 07:51:56 And a Tweet button. 07:52:01 And a "Login with Facebook" button. 07:52:17 For two, curl -F 'sprunge=<-' http://sprunge.us 07:52:25 Actually I count 8 social networking devices on that page. 07:52:26 And it takes a long time to load. 07:52:32 Did I mention how my Internet connection is very slow? 07:52:41 Also 07:52:41 language:Haskell (ghc-6.8.2) 07:52:46 Pretty much all web pages on the Internet today load "sequentially" in some weird way. 07:52:50 which came out in 2007. 07:53:01 And this weird way causes the content to wait on the ads. 07:53:14 Also the syntax highlighting is hideous, especially for strings. 07:53:34 http://codepad.org/taphdoQk 07:53:37 Not the most informative 07:53:42 Ooh, it gets better. 07:53:43 "All Rights Reserved." 07:53:45 --footer 07:53:52 ++footer; 07:53:56 I guess claim rights to your pastes. 07:54:15 Sgeo: Seriously though, it doesn't get better than sprunge. 07:54:20 who we are 07:54:20 We are highly qualified academics with Ph.D. 07:54:21 We specialize in research and development. 07:54:21 We direct your business towards innovation. 07:54:34 --http://sphere-research.com/en/ as linked from footer of ideone 07:54:46 They have a Ph.D. between them, collectively. 07:54:52 I think sprunge is better, so I wrote a sprunge.cmd file to do that too 07:55:06 Wow, they're the people behind that http://www.spoj.pl/ thing. 07:55:12 zzo38: I am incredibly unsurprised you think sprunge is better. 07:55:18 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 It seems very zzo-esque, except it's also very anyone-who-does-command-lines friendly. 07:55:35 shachaf: Finally someone to nurse philosophy back to health. 07:55:49 pikhq, can't run code in sprunge 07:55:51 Ph.N. 07:56:10 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 elliott: Does your Ph.D. institution also give out Ph.N.s? 07:56:15 Esp. since it's obvious. 07:56:18 Sgeo: No, but ghci <(curl http://sprunge.us/foo) does that just fine. 07:56:43 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 delusions of the night 07:57:23 Sgeo: GHC 7.4 has top-level declarations in GHCi. 07:57:52 * Sgeo doesn't have GHC 7.4 07:57:54 Sgeo: Use a better shell. 07:58:06 Sgeo: Alternatively, that's why you use Emacs. 07:58:19 MORE LIKE EWWWMACS 07:58:21 GET IT 07:58:26 Can GHCi parse a module declaration? 07:58:26 I should switch back to Emacs for Haskell stuff 07:58:29 C-x C-f foo.hs data Foo = Foo C-x C-s C-c C-l :t undefined :: Foo 07:58:37 Oh, you need C-x C-o before that :t. 07:58:40 jEdit thinks that ' always means the rest of the token is a string 07:58:51 Who the heck uses jEdit? 07:59:14 I think even Slava doesn't use it anymore. 07:59:34 He also doesn't use Factor anymore, I believe. 08:00:17 shachaf: Oh, doesn't he? 08:00:23 He seemed pretty into it a year or two ago. 08:00:29 noobs, i have GHC 7.5 08:00:38 http://factor-language.blogspot.com/ has been dead for a while, though. 08:00:43 kmc: I have GHC 7.0. :-( 08:00:47 me too 08:00:54 You're 7% more modern than I am. 08:00:58 I have 7.0.*3*! 08:01:02 wow 08:01:09 It's .0.3 better. 08:01:11 I may have been wrong. 08:01:12 The Glorious Glasgow Haskell Compilation System, version 7.0.3 08:01:22 elliott, it must be hard to turn the crank on the side 08:01:32 elliott: That's what I heard. 08:01:37 I think Arch are waiting for 7.4 to update for, uh, stability. 08:01:45 no really, I have a GHC that reports its version as 7.5.blah 08:01:46 Arch "/usr/bin/python is python3" Linux. 08:01:58 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 build it from git 08:02:40 you know you want to 08:02:43 That's so much work. 08:02:47 not really 08:02:52 Well, it takes ages. 08:02:55 right 08:02:56 I used to build GHC from darcs. 08:03:01 I had dozens of versions installed. 08:03:02 it's a lot of work for your computer; not so much for you 08:03:12 GHC needs a build bot. 08:03:14 kmc: Remember the deal with the crank on the side? 08:03:16 I want to use GHC nightlies. 08:03:18 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 cause they won't 08:03:29 elliott, GHC has a buildbot, but I don't know if the binaries are posted anywhere 08:03:46 kmc: Remember when GHC moved from a hideous Makefile system to a slightly better hideous autotools+Makefile system? 08:03:51 no 08:03:56 Wait, didn't that happen? 08:04:02 I distinctly recall that it not being autotools a year back or so. 08:04:04 maybe, but why would I remember it 08:04:08 kmc is amnesiac 08:04:14 elliott is elephantine 08:04:15 Because GHC building folklore, man! 08:04:18 make may be "hideous" but it supports -j 08:04:36 The Makefiles themselves were the hideous part. Although make is too. 08:04:56 -j isn't exactly hard. 08:05:07 cabal doesn't have it yet 08:05:47 * elliott has a plan for a cabal wrapper that builds in parallel. 08:05:51 it's been done 08:06:06 (for building different packages in parallel; not for the modules in a single package) 08:06:08 Yeah, but I've never seen one on Hackage, and I don't know anybody who uses one :P 08:06:11 kmc: The latter is what I meant. 08:06:14 ok 08:06:17 The former is an orthogonal issue that I don't care about much. 08:06:24 kmc: Just because cabal sucks doesn't make -j hard. *If* you're doing dependencies in even a vaguely sane way. 08:06:33 make -j is theoretically uninteresting, therefore Haskell already supports it 08:06:38 and it's your fault for not writing it 08:06:42 * shachaf orthogonizes over the issue. 08:06:47 Well GHC is kinda build system antagonistic 08:06:52 Multiple output files, no full separate compilation 08:07:18 (I mean, heck, redo does it, and the build logic there is in shell scripts.) 08:07:38 Isn't it Python 08:07:45 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 elliott: Yes, but you tell it what to do with shell scripts. 08:07:55 kmc: Developer. 08:08:01 ok 08:08:03 i don't disagree 08:08:05 why did you bring it up? 08:08:24 "make may be 'hideous' but it supports -j" 08:08:34 right 08:08:47 meaning that GHC doing things differently from other haskell packages has at least one major advantage 08:08:51 that's all i meant by it 08:08:54 Okay. 08:09:07 * elliott didn't realise kmc thought I was comparing it to using Cabal. 08:09:16 i didn't really 08:09:20 I doubt Cabal could even build GHC. Maybe with a massive custom Setup.hs thing. 08:09:54 does Cabal have support for Make-based builds? 08:09:58 Ish. 08:10:09 http://hackage.haskell.org/packages/archive/Cabal/1.10.2.0/doc/html/Distribution-Make.html 08:10:18 That's cheating :P 08:10:20 "Perhaps at some point we should stop pretending that it works." 08:10:31 Cabal-1.10.2.0: A framework for packaging Haskell software 08:10:37 "Cabal isn't a package manager, it's a build system!" 08:10:39 "But it's terrible at that too." 08:10:41 haha 08:10:44 "It's a framework for packaging!" 08:10:57 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 next you'll be asking for regexes and stack backtraces 08:11:09 fucking java monkeys 08:11:12 elliott: Still better than what C's got. 08:11:13 (barely) 08:11:19 kmc: Java monkeys like regexps/ 08:11:20 ? 08:11:47 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 scsh's sexp regexp stuff would be interesting to mimic. 08:12:31 A quasiquoter that turns a regexp into a parser would probably be the most useful thing, if TH wasn't terrible. 08:13:00 i'd settle for just a regex library with a simple concrete API 08:13:05 in fact there are several on hackage 08:13:21 The worst thing about the Haskell regexp libs is the hideous typeclass hack most of them are based on. 08:13:25 but i can't find them amongst all the other regex-compat-posix-new-lite-pcre 08:13:28 It should be illegal. 08:13:38 regex-compat-posix-new-lite-pcre-0.1: NO REALLY USE THIS ONE THE OTHERS SUCK 08:13:59 if someone uploaded a good regex lib and used that as the cabal synopsis I would hug them 08:15:01 I assign not-elliott to do it. 08:15:25 i think translating regexps into first-class parsers is probably bad for performance 08:15:37 kmc: Monadic parsers, sure 08:15:48 What if you turned regexp syntax into http://hackage.haskell.org/package/regex-applicative parsers? 08:15:48 even applicative CFG parsers 08:16:08 elliott, of course, would come back with @ in 100 years. 08:16:33 elliott, might be nice 08:16:42 kmc: I think the better complaint there is "it's difficult to optimise Haskell EDSLs" 08:16:46 it's... yeah 08:16:55 which sucks, but is probably inherent 08:17:07 arrows seem to have the best opportunities there but you have to use arrows 08:17:16 arrows suck because you can't optimize 'arr' 08:17:33 that too 08:17:38 thus generalised arrows 08:17:45 an EVEN LARGER TYPECLASS! 08:17:55 i'll be interested to see what iPwn have come up with, if their shit ever sees the light of day 08:18:21 "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 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 they're using a custom preprocessor and some bleeding-edge GHC features to do better arrowized FRP 08:19:12 i don't know much about it 08:19:37 Waitwaitwait, they're working on FRP so they can do an iPhone game? 08:19:43 yes 08:19:52 Hasn't game development driven FRP for like half a decade by now? 08:19:54 I heard that they got some sucker to port GHC to Android. 08:19:55 research in arrowized FRP with a custom preprocessor 08:19:57 Are they mad or awesome? I dunno. 08:20:03 ask Cale about it 08:20:19 their game is like 2 years late 08:20:37 so i'm gonna go with "not awesome" 08:20:45 even if it's great research i can't possibly imagine how it makes business sense 08:20:51 Do people put two years of work into an iPhone game ever? 08:20:54 kmc: Business sense? You're talking about Haskellers. 08:21:04 elliott, yeah... 08:21:19 elliott: Hey, some Haskellers have business sense! Those are the people who don't use Haskell for their business. 08:21:41 Or presumably the ones using it for finance. 08:22:10 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 Certainly when you're working on open problems for the purpose of mundane, mundane programs, you've got no business sense. :) 08:22:25 i think using Haskell for an iPhone game is not completely crazy, but they seem to be doing it wrong 08:22:48 kmc: It's the "working on major open problems in theoretical computer science" bit that is completely nuts. 08:22:52 right 08:23:00 zzo38: What about Barrier Arrows? You mustn't forget those. 08:23:03 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 elliott: Yup. 08:23:21 pikhq: I don't think FRP is considered a /major/ open problem :P 08:23:25 the developers of the platform games N and N+ are a bit nuts also 08:23:27 shachaf: I don't know what those are 08:23:32 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 Mm, LTL. 08:24:30 i have fond memories of LTL and SPIN 08:24:31 hmm 08:24:47 elliott: I'm only quoting kmc on that one. 08:24:47 I went to this one talk about model checking once. 08:24:51 :) 08:24:52 Actually I went to it twice. 08:24:58 Actually I went to it once and it went to me once. 08:25:03 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 heh 08:25:23 elliott: Does @ have games? 08:25:24 * elliott can't remember what the game was going to be any more. 08:25:27 right, some things do not make business sense but are justified by broader concerns 08:25:31 like "this is what i want to do" 08:25:32 shachaf: Who needs games when @ is as fun as it is?! 08:25:44 my impression was that the ipwn guys thought they were making business sense 08:25:55 @ peace and @ war... 08:25:58 kmc: It's the Paul Graham stuff, isn't it? 08:26:02 What is FRP? 08:26:12 elliott, ? 08:26:15 "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 functional reactive programming 08:26:29 zzo38: Functional Reactive Programming; an alternate paradigm for IO in a purely-functional-ish language. 08:26:32 (such as Haskell) 08:26:36 FRP isn't really about IO. 08:26:52 elliott, maybe. PG also says there are nontechnical competitive advantages of using weird languages 08:26:57 which I think is a more solid claim 08:27:02 kmc: I think that's what I was saying. 08:27:10 Can you show me the mathematical structures for reactives? 08:27:28 zzo38: type Behavior a = Time -> a; type Event a = [(Time,a)] 08:27:43 zzo38: Those are lies. Now you can start on the open problem of FRP: finding out definitions that aren't lies. 08:27:52 elliott: Step 1: "Behaviour" 08:28:00 Correct! 08:28:19 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 Step 2: "Eveunt" 08:28:33 Which is at least not complete incoherent nonsense. :) 08:28:35 you're mixing several PG metaphors 08:28:48 kmc: Not true, I didn't mention painting. 08:29:16 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 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 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 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 Because you'll just spend all your time in IO writing callbacks. 08:30:37 dunno, Haskell is still a pretty good language 08:30:38 kmc: I wonder why that keeps happening. Do you try to delete a word with ^W? 08:30:45 i forgot why 08:30:56 and you get a nontechnical advantage from hiring haskellers 08:30:57 kmc: It is, but it's not significantly better at imperative programming than most other languages. 08:31:03 The lack of pointers is nice, of course. 08:31:17 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 Objective C, not C++. 08:31:29 i think it is very common to write rendering in C or C++ and game logic in Lua 08:31:30 (I gather people write the games in C++ and glue it with Objective-C++.) 08:31:32 pikhq: ^ 08:31:35 Objective-C is way too slow. 08:31:36 Oh, okay. 08:31:45 which is kind of like writing rendering in C and writing game logic in Haskell 08:31:46 It's all the safety of C with all the speed of unoptimised Smalltalk. 08:31:52 which is what they were doing 08:32:06 getting Lua working is a lot less of a pain 08:32:08 Objective-C is a strict superset of C, so you can write a plain C program in Objective-C, too. 08:32:20 kmc: Rendering in C seems an odd choice. Isn't the iPhone all shadery these days? 08:32:21 hiring Lua programmers is not much of a competitive advantage; it's pretty standard in the game industry 08:32:28 i'm sure there were shaders too 08:32:36 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 zzo38: Yeah, but Objective-C++ is supported trivially on the platform, and industry tends to prefer C++ over C. 08:32:40 I guess GLSL counts as C. 08:32:44 what i mean is that you make OpenGL calls from a thread which doesn't need garbage collection 08:32:44 Sort of. 08:32:46 TRIVIAL 08:32:48 kmc: right 08:33:02 Wasn't GHC getting a parallel collector? 08:33:05 Or am I thinking concurrent. 08:33:07 Non-pausing. 08:33:11 it's in a branch 08:33:11 pikhq: Then you can program plain C++ in Objective-C++ if you want to do so 08:33:47 i think PG may be right about Lisp and ViaWeb, but note that there were many fewer options back then 08:34:00 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 (gcj?) 08:34:04 his competitors were writing webapps in C++ or pre-modern Perl 08:34:13 nothing resembling a "web framework" would exist for another decade 08:34:15 pikhq: Er, isn't the iPhone clang these days? 08:34:25 elliott: Oh, right, so it probably is. 08:34:27 I mean, OS X is, so I can't imagine the iPhone isn't too. 08:34:42 Which leaves you with C, Objective-C, C++, Objective-C++. 08:34:43 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 Which is also the set of languages most anyone would actually *give a shit about* in GCC. 08:35:02 but also they had good timing and won the lottery etc 08:35:19 (seriously, who uses Fortran? GCJ? D?) 08:35:30 kmc: didn't pg say viaweb took off because of their crazy programming interface thing 08:35:34 most of the advice PG has about doing a startup is not technical 08:35:39 which is probably correct 08:35:44 though his advice is biased and self-serving 08:35:53 I think PG extrapolates way too much for his sample size. 08:36:07 "You should do startups! Here, we've got a totally awesome service that is the BEST EVER for it!" 08:36:11 But yeah, "How to Win the Lottery" wouldn't be a very popular article. 08:36:26 today there are many reasonable, popular languages and frameworks for web programming 08:36:43 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 (in the technical sense) 08:37:20 it might be a security advantage though :) 08:37:26 sure 08:37:29 startups don't care about security 08:37:33 Yeah... Web dev has had at least enough sensibility to stop with C/C++. 08:37:36 yep :p 08:37:41 Though they're still on PHP and Ruby. :P 08:37:47 pikhq: http://www.webtoolkit.eu/wt 08:38:24 WHY GOD WHY 08:39:10 ksplice cared about security because we had the ability to automatically root hundreds of thousands of Linux machines 08:39:19 even then, I suspect others in a similar situation would not care 08:39:27 pikhq: To be fair, he wrote "you should do startups" way before he started investing in them. 08:39:45 shachaf, you should play the lottery! one time i played the lottery and won the jackpot! 08:40:01 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 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 Not where he talks about how startups in general are awesome. 08:40:37 it's all self-serving, even when he's not directly talking about YC 08:40:42 kmc: Sure, I was only responding to pikhq's specific statement. 08:40:51 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 that way you'll be willing to give away equity for minimum wage 08:41:25 if people graduate college and work a couple jobs before doing a startup, they don't need YC as much 08:41:33 they have savings and they have industry connections 08:42:12 And will probably need less of the advice YC could give (they do give advice, right?) 08:42:27 yeah 08:42:51 advice: make lots of money 08:43:17 Advice: steal from Gates 08:43:31 hence disparaging the corporate work environment 08:43:38 "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 Oh man, Jeff Atwood writing about Paul Graham! 08:43:55 i know right 08:43:56 I can't think of anything more enjoyable. 08:44:26 here, Spolsky is PG's partner in crime 08:44:31 dunno about Atwood 08:44:39 haha, and referencing slamming spolsky in the second paragraph 08:44:50 Spolsky wants you to think that every company besides Fog Creek is a soul-sucking cubicle mill 08:44:55 I wonder if Spolsky tried to get SO written in that custom language 08:45:00 because that's the core of their corporate identity 08:45:34 "we're going to make a software company which is unlike 1994 Microsoft" 08:46:03 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 Does Fog Creek make anything? 08:46:58 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 also https://trello.com/, an organization / collaboration tool 08:48:31 and a few other things 08:49:00 if you want to spend 80 minutes cringing, watch http://www.projectaardvark.com/movie/ 08:49:11 which is about some interns developing one of their other products 08:49:45 80 minutes of cringing? I can't think of anything I want more. 08:52:52 who thought that would be a good idea 08:53:21 elliott: have I ever mentioned that you're a jerk? 08:53:49 I always figured it went without saying 08:54:18 kallisti_: Often 08:58:58 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 it is more pleasant on the eyes rotated 09:01:17 good graphic 09:01:45 None of the other pictures on that page are rotated. 09:02:06 shachaf: I've wondered about that thing too. 09:02:16 "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 Oh yeah, ropes are so non-notable. 09:03:06 why is it rotated? why is it jpeg? why what's up with everything being off center and angled wrong? 09:03:14 so many questions. the most mysterious image. 09:03:33 I just realised that I'm a JPG snob. 09:03:37 When did that happen? 09:03:39 monqy: ok the investigatin begins 09:04:54 shachaf: I don't even like the idea of using JPEGs for photos. 09:05:04 * elliott biggest jpeg snob 09:05:05 Meng Yao introduced the rotated rope on 03:25, 25 April 2011 09:05:31 his edit increased the document from about 3kb to 9kb 09:06:41 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 Rotated rope. Rope. 09:08:01 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 Should there even be a mirror? 09:09:21 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 The edit is the best part. 09:09:29 meng yao included his rope diagram 8 times in his wiki edit :-D 09:09:47 itidus21: there are multiple diagrams 09:09:58 -!- Ngevd has joined. 09:10:01 Hello! 09:10:05 ok ok its not exactly the same 09:10:47 as to why he rotated it... i think that is a real mystery 09:11:22 and why it's jpeg and why it's generally wonky 09:11:25 many real mysteries 09:11:53 elliott: lol. one bad idea to another. 09:12:08 perhaps he is boycotting SVG 09:13:39 elliott: So I read every word in that sentence once and didn't manage to piece it together. 09:13:53 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 I read it a few times and still don't get it 09:15:43 `shaWhich sentence? 09:15:47 shachaf: 09:15:55 ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: shaWhich: not found 09:16:04 @src foldl 09:16:04 foldl f z [] = z 09:16:04 foldl f z (x:xs) = foldl f (f z x) xs 09:16:11 Right. 09:16:20 elliott: The edit. 09:16:52 shachaf: It's technically multiple sentences. :p 09:18:09 shachaf: Am I a bad person if I don't really like RWH? 09:18:15 * elliott feels guilty. 09:18:57 elliott: I haven't read RWH. 09:19:18 * elliott hasn't read all of it. 09:19:35 kmc says that the chapters on FFI and STM are good. 09:19:43 But all the code snippets are ugly imperative blobs. 09:19:45 I haven't even read those. 09:19:51 Also it's really outdated but I can't really blame them for that. 09:19:54 elliott: That's Real-World for you! 09:20:05 elliott: I'm sure you could find room in your heart to blame them for being outdated. 09:20:20 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 I HEARD THEY'RE COMMIES. 09:21:04 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 the problem is that it would still have to be written in a quirky style. 09:22:43 LYAH isn't really. 09:22:51 lyah2: the real world no jokes allowed 09:22:59 Although w(p)gtr kind of desensitised me to that sort of stuff permanently. 09:23:09 "see, monads are just monoids in the category of endofunctors. Pretty simple, huh? " 09:23:09 elliott: I don't like LYAH much either. 09:23:12 Not that I've read it. 09:23:33 I like it because 09:23:37 it's how I learned Haskell. 09:23:40 initially. 09:23:43 But people occasionally come into #haskell, misled by wrong sentences in it. 09:23:57 shachaf: Hmm, like what? 09:24:03 shachaf: It's not bad, it's just very, very simplistic. 09:24:21 It ends with monads. 09:24:25 pikhq: *zippers 09:24:30 elliott: Bah 09:24:40 if only we could teach newbies every excrutiatingly technically correct detail of everything without scaring them away. 09:24:45 elliott: I don't remember. 09:24:46 Monads-as-containers or something. 09:24:54 * elliott would write a Haskell tutorial, but nobody would read it. 09:25:00 I'd read it! 09:25:04 Well. 09:25:10 I'd read it to the same degree I've read LYAH and RWH. 09:25:11 elliott: you would just spam equations at the reader and be like "okay this makes perfect sense now" 09:25:17 That's a pretty good honour, isn't it? 09:25:32 "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 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 [...] 09:25:34 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 (>>=) :: (Monad m) => m a -> (a -> m b) -> m b 09:25:40 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 shachaf: Looks pretty far away from monads-as-containers to me. 09:25:58 monads-as-fancy-values 09:26:22 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 EVERYBODY 09:27:05 elliott: I don't remember. 09:27:17 -!- kallisti_ has changed nick to kallisti. 09:27:24 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 THere is also join, and that doesn't mention join 09:37:42 sure it does. 09:37:46 it mentions >>= 09:37:53 zzo38: join is not in the Monad typeclass 09:37:56 :> 09:38:03 I'm sure it's mentioned id at some point 09:38:05 elliott: I know it is not in the Monad typeclass but it should be 09:38:12 elliott: If we're arguing *that* way, it didn't mention fail. 09:38:14 ANYONE WITH A BRAIN would know that join is (>>= id) :> 09:38:21 fail is one of the essential nutrients for any Haskell monad. 09:39:26 shachaf: It does show fail and implement it in its examples, actually. 09:39:33 Though it probably: shouldn't. 09:39:43 zzo38: Well, LYAH is a Haskell tutorial, not a Haskell-as-it-should-be tutorial. 09:40:54 But you can't learn monads properly unless you know about fmap and join as well, and their mathematical relation to >>= 09:41:13 zzo38: It does teach functors and applicative functors before monads. 09:41:19 "learn monads" should never be your goal. 09:41:28 zzo38: that's what monad tutorials are for 09:41:55 (>>=) = (8===D) 09:42:00 shachaf: Not necessarily. What if you're learning category theory? :) 09:42:30 _ === _ = (>>=) 09:42:50 monqy: ah yes good old const (const (>>=)) 09:43:05 my favourite 09:43:05 the best of all functions 09:43:16 no wait, not as good as the totem pole. 09:43:43 the best of all functions is the McCarthy 91 function 09:44:11 kmc: What about the man or boy not-a-function? 09:44:26 @let best n | n > 100 = n-10 | otherwise = best (best (n+11)) 09:44:27 Defined. 09:44:30 > best 50 09:44:32 91 09:44:38 > best 91 09:44:39 91 09:44:40 > fix best 09:44:43 mueval-core: Time limit exceeded 09:44:45 fail 09:44:48 > fail 09:44:49 Overlapping instances for GHC.Show.Show (GHC.Base.String -> m a) 09:44:50 arising... 09:44:59 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 > fix (>>=) 09:45:06 Occurs check: cannot construct the infinite type: 09:45:06 m = (->) (a -> m b) 09:45:11 > fix bеst 09:45:13 91 09:45:16 :t fij oin 09:45:16 kmc: It was just a bit slow, that's all. 09:45:16 Not in scope: `fij' 09:45:17 Not in scope: `oin' 09:45:19 :t fix join 09:45:20 Occurs check: cannot construct the infinite type: a = m a 09:45:20 Expected type: m (m a) 09:45:20 Inferred type: m a 09:45:56 Check in the appropriate box for boy or girl 09:45:58 wondering will it ever stop and who invented this world 09:46:10 Hi, welcome to big burger can i take your order? 09:46:25 hi 09:46:29 Someone broke kmc! 09:46:40 hi 09:46:47 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 hi 09:47:16 sequencing 09:47:23 sequencing 09:52:23 And with (,) monad, join will make the monoid composition 09:59:29 -!- ais523 has quit (Remote host closed the connection). 09:59:33 Speaking of (,) 09:59:40 @let best n = tell [n] >> if (n > 100) then return (n-10) else best (n+11) >>= best 09:59:41 :13:0: 09:59:41 Multiple declarations of `L.best' 09:59:41 Declared at: @let bestest n = tell [n] >> if (n > 100) then return (n-10) else bestest (n+11) >>= bestest 09:59:54 Defined. 09:59:59 > runWriter (bestest 91) 10:00:01 (91,[91,102,92,103,93,104,94,105,95,106,96,107,97,108,98,109,99,110,100,111... 10:00:11 > runWriter (bestest 89) 10:00:13 (91,[89,100,111,101,91,102,92,103,93,104,94,105,95,106,96,107,97,108,98,109... 10:00:20 Thanks, lambdabot. 10:02:38 Thambdabot. 10:02:41 -!- sebbu2 has joined. 10:02:47 -!- sebbu2 has quit (Changing host). 10:02:47 -!- sebbu2 has joined. 10:02:52 Thanks, Hanks. Thanks. 10:03:12 "Here is how John McCarthy may have written this function in Lisp, the language he invented:" 10:03:32 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 shachaf: There's a reason it's called Common Lisp! 10:10:57 I... completely forget why. 10:14:32 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 shachaf, "Lisp" doesn't mean "Common Lisp" 10:18:16 shachaf, it means "whatever vaguely Lisp-like language most supports the point I'm currently trying to make" 10:19:11 kmc: Using "defun" and "t"? 10:19:18 for example "Lisp is a statically-typed language with pattern matching" 10:19:53 That sounds like a fun game. 10:20:02 Sadly I must go to sleep. 10:20:09 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 sadly but truly 10:20:28 Pattern matching? 10:20:29 kmc: Wait, I thought Haskell had a monopoly on that technique? 10:20:29 Lisp? 10:21:03 Phantom_Hoover: Tons of Lisps have pattern matching. 10:21:06 Heck, destructuring-bind is in CL. 10:21:37 Huh. 10:21:47 Pattern matching is just a special case of unification, man. 10:22:18 "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 "Lisp is a mature language with sophisticated implementations" => Common Lisp 10:22:42 kmc: _The Little Schemer_ is simpler than SICP for this purpose. 10:22:52 "Lisp is webscale, in the cloud" => Clojure 10:23:42 * shachaf wonders what kmc will say about Arc 10:24:21 mumble mumble hackers and painters 10:25:37 Did you know there are people who still care about Arc? 10:25:46 Astonishing. 10:25:50 kmc: R5RS really shouldn't have mutation, though. 10:25:54 At least not set-car!/cdr!. 10:26:00 set! I can bear. 10:26:24 sigh 10:26:27 been fighting with this recently 10:26:34 to get some Scheme code to work in Racket 10:26:43 kmc: #lang r5rs? 10:26:46 Or whatever the syntax is. 10:26:49 doesn't do everything I want 10:26:51 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 so, it seems weird to use pairs also as reference cells 10:27:25 although it was still PLT Scheme then 10:27:43 but there's probably some benefit in having reference cells, distinct from mutable environments 10:27:48 but i'll have to think about what that might be 10:27:48 yes, true 10:27:59 kmc: it's a legacy from lisp implementations of ye olden days, I think 10:28:03 sure 10:28:05 where even implementation structures were made out of cons cells 10:28:13 I know picolisp still does everything like that 10:28:21 also I have no actual evidence old implementations were like that 10:28:24 "what, you don't do everything inside a metacircular evaluator" 10:28:34 "how do you write language extensions?!?" 10:29:19 kmc: Is this for your educational thing? 10:29:35 i don't know what you mean 10:29:44 Zombie 6.001 is http://web.mit.edu/alexmv/6.S184/ 10:29:46 You were talking about something earlier. 10:29:46 i'm helping teach it 10:29:50 Ah. Yes, that. 10:30:23 That looks like a fun class thing. 10:30:28 yep 10:30:32 you should follow along 10:30:50 How does one do that? 10:30:58 Do I have to move to Boston? 10:31:06 * elliott closes some tabs so he can see the favicons again. 10:31:10 i expect lecture slides and assignments will be posted 10:32:26 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 (but it's not posted yet) 10:33:09 What's project 3? 10:33:23 a bunch of extensions to the metacircular evaluator 10:33:27 including an interactive debugger 10:33:45 Ah, a debugger. 10:35:08 I haven't actually read SICP. I probably should. 10:35:29 i've not read it cover to cover 10:35:36 but i think i've read most parts of it at some point or another 10:36:39 OK, you've convinced me. I'll follow along. 10:36:57 You should send me a reminder when it starts, if you remember. :-) 10:37:00 sure 10:37:02 it starts on Monday 10:37:05 er, Tuesday 10:37:12 I suddenly realise I've never written a debugger. 10:37:14 * kmc keeps forgetting that Tuesday isn't Monday 10:37:17 (Probably because I don't like debuggers.) 10:37:20 Oh. 10:37:36 elliott: Write a C debugger in Haskell for me. 10:37:51 And make it like gdb except satisfying whatever mysterious criteria a debugger must satisfy for me to like it. 10:39:02 Where are the slides etc. going to be posted? 10:39:03 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 Prorgam! 10:39:18 shachaf, for zombie 6.001? at the URL i just linked, I think 10:39:41 * kmc is new to this 10:39:54 OK. I'll keep a tab open. 10:40:09 will try to remind you 10:40:16 Hopefully I remember to reload it on Tuesday. 10:40:25 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 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 elliott: That would be a tragedy. 10:41:09 the best way is to run a browser which crashes a lot 10:41:12 This collection of tabs has been building up for about a year. 10:41:17 My browser crashes but recovers. 10:41:27 :t fromRational 10:41:28 forall a. (Fractional a) => Rational -> a 10:41:40 @hoogle Floating a => a -> Float 10:41:40 Prelude acos :: Floating a => a -> a 10:41:41 Prelude acosh :: Floating a => a -> a 10:41:41 Prelude asin :: Floating a => a -> a 10:41:43 Oh, right. 10:41:47 @hoogle Double -> Float 10:41:48 Unsafe.Coerce unsafeCoerce :: a -> b 10:41:48 Control.OldException throwDyn :: Typeable exception => exception -> b 10:41:48 Control.DeepSeq ($!!) :: NFData a => (a -> b) -> a -> b 10:41:51 lmao 10:41:59 haha 10:42:01 what the fuck 10:42:13 @hoogle (RealFloat a) => a -> b 10:42:13 Unsafe.Coerce unsafeCoerce :: a -> b 10:42:13 Prelude isDenormalized :: RealFloat a => a -> Bool 10:42:13 Prelude isIEEE :: RealFloat a => a -> Bool 10:42:16 I forget if RealFloat is a thing. 10:42:17 Yes, it is. 10:42:18 @hoogle (RealFloat a) => a -> Float 10:42:18 Prelude significand :: RealFloat a => a -> a 10:42:19 Prelude id :: a -> a 10:42:19 Data.Function id :: a -> a 10:42:22 @hoogle (RealFrac a) => a -> Float 10:42:22 Prelude id :: a -> a 10:42:22 Data.Function id :: a -> a 10:42:23 GHC.Exts breakpoint :: a -> a 10:42:26 Oh, come on! 10:42:29 @hoogle /msg 10:42:29 Parse error: 10:42:29 :t Control.OldException.throwDyn :: Double -> Float 10:42:30 /msg 10:42:30 ^ 10:42:30 Double -> Float 10:42:37 > Control.OldException.throwDyn 3.0 10:42:38 Not in scope: `Control.OldException.throwDyn' 10:43:10 That's a fun type. 10:43:20 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 :t realToFrac 10:43:30 forall a b. (Real a, Fractional b) => a -> b 10:43:32 oh right 10:43:34 :t realToFrac :: Float -> Double 10:43:35 Float -> Double 10:43:37 I knew that existed, I just forgot its name 10:43:38 and type 10:44:22 This is the best typeclass: 10:44:25 @src Real 10:44:25 class (Num a, Ord a) => Real a where 10:44:25 toRational :: a -> Rational 10:44:41 class F a where { f :: a } 10:45:57 kmc: Haskell should get rid of value declarations. 10:45:57 Maybe I should move to Boston for a month. 10:46:05 You could just use a newtype record and an instance. 10:46:18 mhm 10:46:22 shachaf, which month? 10:46:34 -!- Ngevd has joined. 10:46:52 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 Anyway, I was going to sleep. 11:00:07 -!- nooga has joined. 11:00:32 shachaf: Hi. 11:00:41 elliott: Thanks. 11:01:53 shachaf: Did I wake you up? 11:02:03 thelliott 11:02:47 Thanks, kmc. 11:03:38 Stumped you there, didn't I. 11:03:48 no 11:04:37 Oh. 11:04:49 Anyway, I'm going to sleep. 11:04:57 good night, shachaf 11:05:03 gochaf 11:19:56 -!- azaq23 has joined. 11:26:09 Hello 11:39:29 class Comonoid a where { ytpme :: a -> (); dneppa :: a -> (a,a) } 11:39:44 no.... 11:40:03 what laws does it follow 11:42:16 The inverse of the monoid laws, duh. 11:42:40 help 11:43:51 Come on, monqy, it's just comonads extended from endofunctors. 11:44:50 !perl use v5.10; say scalar caller; say eval "scalar caller"; 11:44:53 ​\ main 11:45:20 hi perl 11:45:22 Evil scalar caller. 11:46:10 `run echo 'scalar caller' > blah.pl; perl -e 'print do "blah.pl"'; rm blah.pl 11:46:13 main 11:46:34 `run echo 'scalar caller' > blah.pl; perl -e 'package Foo; print do "blah.pl"'; rm blah.pl 11:46:38 Foo 11:47:12 hm 11:48:13 I /think/ I can use this... 11:48:24 to write code that can reload itself. 11:48:51 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 no.... 11:53:27 what laws does it follow 11:54:07 monqy: i er 11:54:18 monqy: i don't know 11:54:22 :( 11:54:32 Come on, monqy, it's just comonads extended from endofunctors. 11:54:43 Phantom_Hoover: Not really, you'd need a 11:54:56 class SortaCategory (~>) one (*) 11:54:58 or whatever. 11:55:03 *id 11:55:19 ytpme :: id ~> one; dneppa :: id ~> id*id 11:55:33 oh hmmmm that won't always work I think.... 11:56:07 if I write new code that removes a method, the reload won't hide that method. 11:56:17 but it can redefine and add methods no problem. 11:57:14 `run echo '$x' > blah.pl; perl -e 'local $x = 5; print do "blah.pl"'; rm blah.pl 11:57:17 5 11:57:30 `run echo '$x' > blah.pl; perl -e 'my $x = 5; print do "blah.pl"'; rm blah.pl 11:57:33 No output. 11:57:43 awwww yeah. 11:57:56 I can do so many evil things with that trick. 11:58:00 Phantom_Hoover: (What is a comonoid really?) 11:58:08 Oh, it's a monoid in the opposite category. 11:58:17 Yes. 11:58:21 And the opposite category is just flipping all the arrows. 11:58:32 So, um... what's the comonoid equivalent of Monoid? 11:59:25 Comonoid. 11:59:28 :) 12:00:33 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 The exact same monoid? 12:01:06 Q.E.D. 12:02:52 `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 3 12:03:18 oh that's so good... 12:03:46 why kallisti why................ 12:03:57 monqy: to have an IRC bot that never needs to be shutdown ever. 12:05:42 `cat blah.pl 12:05:45 package X; our $x = 3 12:05:57 oh 12:06:19 `run rm blah.pl 12:06:22 No output. 12:06:50 it's not without flaws though. I can't redefine lexical variables at the top-level this way. 12:07:03 perhaps that is for the best 12:07:03 because... well, they're lexical. 12:07:43 but most top-level variables are going to be package scope or dynamic scope anyway. 12:08:37 now for something fun... 12:12:04 `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 No output. 12:12:12 hm 12:12:18 oh right 12:12:28 I can't recursively require things like that. 12:12:41 `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 No output. 12:13:05 `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 X.pmX.pm 12:15:32 `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 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 lol 12:16:10 -!- Zuu has quit (Ping timeout: 252 seconds). 12:16:20 apparently not very ambiguous because it did exactly what I wanted. :P 12:16:51 `run echo "main = print \"test\"" 12:16:54 main = print "test" 12:17:03 Hmm 12:17:10 I can't remember what I was doing with that 12:17:15 me neither. 12:18:05 `run echo "main = print \"test\"" > test.hs; runhaskell test.hs 12:18:13 ​"test" 12:18:25 `rm test.hs 12:18:29 No output. 12:19:34 http://search.cpan.org/~sprout/Sub-Delete-1.00002/lib/Sub/Delete.pm 12:19:41 I could maybe use this if I need to delete subs. 12:20:08 undef ⊂ works kinda 12:20:39 or, hmmm... 12:20:52 I could completely destroy the symbol table before I reload. lol. 12:22:02 gah does java not have a built in rounding function that rounds away from zero in case of .5 12:22:37 lolMath.round? 12:22:42 kallisti, from the docs of Math.round it seems to always round up? So -0.5 would end up as 0? 12:22:44 oops lol virus 12:22:57 oh that's... weird. maybe they're wrong. 12:23:09 maybe they mean "rounds up" in terms of absolute value. 12:23:12 hm perhaps 12:23:23 no REPR for java so a bit annoying to test such 12:23:52 read eval print read 12:23:57 it just exits after the second read 12:24:03 useful(tm) 12:25:04 nonsense. it's just as simple as public class Test { public static void main(String[] argv) { ... } 12:25:05 at least it pays attention 12:25:19 not like those dirty EEPLs 12:25:59 and then System.out.println(Math.round(-0.5)) assuming you imported Math 12:26:04 so. easy. 12:26:20 elliott, typo :P 12:26:29 elliott, but I guess I could justify it as read eval print repeat 12:26:35 or something 12:26:39 wait no deleting the symbol is probably a bad idea oh wait nevermind that's a great idea. 12:28:28 `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 WOAH 12:28:39 oh, no. 12:28:41 not a good idea. :P 12:28:53 `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 WOAH 12:29:08 subroutines get some kind of magic namespace 12:29:10 ????? 12:29:14 no. 12:30:03 `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 2 12:30:17 uh 12:35:16 `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 Global symbol "$x" requires explicit package name at -e line 1. \ Execution of -e aborted due to compilation errors. 12:35:37 `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 52 12:36:35 hmmm I spoke too soon. 12:37:16 `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 32 12:37:33 okay so. for future reference: don't try to delete symbol tables 12:37:38 weird things will happen. 12:40:03 `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 directly, x=5, y=2 \ evally, x=3, y= 12:40:16 fizzie: ah because of compilation 12:41:04 http://stackoverflow.com/questions/4623556/symbol-table-deleting-entries-question 12:41:06 according to this 12:41:51 It's a reasonable theory. 12:42:49 (Though you should of course give equal time to the "intelligent variable" theory, too.) 12:43:02 I haven't studied that one. 12:43:06 are variables sentient in perl? 12:43:15 It's something like that, yes. 12:43:54 so unless all the code I execute afterwards is part of an eval, my symbol table deletions take no effect. 12:45:29 http://cpansearch.perl.org/src/SPROUT/Sub-Delete-1.00002/lib/Sub/Delete.pm 12:45:39 I wonder what that magical looking subroutine at the top does. 12:46:17 magic 12:47:35 my $glob = *$globname; # autovivify the glob in case future perl 12:47:39 you never know when future perl might happen. 12:49:02 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 oh god what is this. 12:49:29 =>== 1 ??????? 12:49:49 REALLY greater than or equal to. 12:51:59 `run perl -e '1 =>== 2' 12:52:02 syntax error at -e line 1, near "=>==" \ Execution of -e aborted due to compilation errors. 12:52:09 It must be some kind of real magic. 12:52:19 oh wait... 12:52:22 it could be either... 12:52:24 = >= = 12:52:27 => == 12:52:29 or ... 12:52:30 what 12:52:35 what does that even mean 12:53:11 I like the use of ' there too 12:53:20 !perl my $x = 3; print Intervals'SvREFCNT \$x 12:53:21 No output. 12:53:36 oh this code doesn't use strict; 12:53:40 Internals, not Intervals. 12:53:47 !perl my $x = 3; print Internals'SvREFCNT \$x 12:53:48 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 !perl my $x = 3; print Internals'SvREFCNT $x 12:53:57 1 12:54:06 not very surprising. 12:55:07 !perl my $x = 3; print Internals'SvREFCNT $x =>== 1 12:55:07 1 12:55:18 !perl my $x = 3; print Internals'SvREFCNT $x => == 1 12:55:19 1 12:55:22 !perl my $x = 3; print Internals'SvREFCNT $x = >== 1 12:55:23 syntax error at /tmp/input.7967 line 1, near "= >=" \ Execution of /tmp/input.7967 aborted due to compilation errors. 12:55:33 oh hmmm 12:55:37 I wonder what the comma does. 12:55:42 !perl my $x = 3; print Internals'SvREFCNT $x , == 1 12:55:43 1 12:56:02 nothing? 12:56:08 maybe it's to disambiguate something? 12:56:21 !perl my $x = 3; print Internals'SvREFCNT $x, 1 12:56:21 1Attempt to free unreferenced scalar: SV 0x7f56d20d4a30, Perl interpreter: 0x7f56d20b3010. 12:56:24 The bestest. 12:56:28 !perl my $x = 3; print Internals'SvREFCNT $x == 1 12:56:29 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 ah 12:56:48 it's to prevent that 12:57:05 instead of, you know, using parentheses. 12:57:12 =>== lololololol 12:58:46 a regular comma would have been much clearer 12:58:53 !perl print abs -4 =>== 42 12:58:54 4 12:59:10 maybe it's some weird idiom I've never seen? 12:59:51 ....wat 12:59:56 oh 12:59:57 yes 13:00:28 =>== is to == as and is to && 13:01:07 :t randoms 13:01:08 forall g a. (Random a, RandomGen g) => g -> [a] 13:01:22 but yeally I'd use ,== or , == or (most likely) parentheses 13:01:57 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 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 `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 WOAH 13:08:08 `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 WOAH 13:08:15 hm, well, nevermind 13:08:23 I'll just... not try to delete symbol tables. 13:09:14 `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 WOAH 13:09:30 `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 WOAH 13:09:35 :( 13:10:30 I'm not sure why it suddenly doesn't work because I add that symbol table line 13:10:40 `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 SHADOOSH 13:11:24 fizzie: just how sentient are variables in Perl exactly. 13:12:19 `run perl -e 'package X; our $x = 3; %X:: = (); our $x = 4; print $x' 13:12:22 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 `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 WOAH 13:15:02 HackEgo: you sound so impressed 13:15:14 I don't understand at all... 13:16:07 `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 WOAH 13:16:25 * Sgeo should write a hello Template Haskell program or something 13:16:35 Hello, Template World! 13:17:00 Don't like the notion of needing a separate module though 13:17:03 fizzie: can you make sense of this. 13:19:32 I'm not entirely sure I want to. 13:19:53 kallisti: perhaps you should add -w ? 13:19:59 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 TH is a pain because it messes up the compiler control flow. 13:20:19 Thus the restrictions. 13:20:43 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 oerjan: I'm trying to write code that can reload itself. 13:21:16 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 and now I'm encountering weirdness with Perl and its symbol table. 13:21:50 specifically %X:: = (); doesn't appear to do what you would expect. 13:22:10 Then you must simply expect something else. 13:22:17 "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 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 in fact, if I write %X:: = (); before the do, then that's exactly what happens. 13:23:32 but if I remove that line, then the do redefines symbols as expected. 13:24:51 `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 WOAH 13:26:07 `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 WOAH 13:26:26 `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 WOAH 13:26:33 okay, I give up. :P 13:27:01 You could just forget about the symbol tables and use coderefs you manage manually. 13:28:02 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 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 well, "subtle" 13:30:12 Whee! 13:30:13 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 what parts are confusing 13:31:30 `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 hi 13:31:51 if I undefine subroutines that way it works fine, so... yes that's an option. 13:31:52 I forget what does what and what does what except that the constructors don't and the lowercasey functioney things do 13:32:15 `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 new!new! 13:32:24 `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 old!old! 13:32:32 monqy, yeah, I'm starting to think that's the rule of thumb 13:32:33 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 Also didn't realize that [d|..] did a list of the things, and not a single one 13:33:00 I initially tried to sequence the thing 13:33:04 `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 hi 13:33:09 Sgeo: You're always meant to use the functions. 13:33:15 As opposed to the constructors directly. 13:33:24 TH sucks, by the way. 13:33:26 Except when pattern matching? 13:33:28 No shit. 13:33:31 fizzie: so I could loop through the symbol table and undef all the variables maybe? 13:33:45 How does TH suck? 13:33:58 Sgeo: it will quickly become apparent 13:34:11 Sgeo: unless you're really bad at noticing bad things 13:34:13 I have 3 choices here: Use TH, write a program to output Haskell code, or go insane. 13:34:15 monqy: No it won't, he likes Active Worlds. 13:34:24 elliott: I was thinking more station v3 but that works too 13:34:28 Sgeo: Pick (d) Don't do whatever bad thing you're trying to do. 13:34:39 Sgeo: code generation is cool. write a perl script. 13:34:43 there aren't any th alternatives are there :( 13:34:48 cpp doesnt count 13:34:51 Sgeo: I write all of my Haskell in perl. 13:34:53 Sgeo: Anyway: http://www.reddit.com/r/haskell/comments/nny43/readargs_for_quick_argument_parsing/c3apz9x?context=1 13:35:02 Sgeo: Most people avoid TH for basically those reasons./ 13:35:04 *no / 13:35:18 Deriving lenses is the main TH usecase these days :P 13:36:00 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 Sgeo: what bad thing are you trying to do , anyway 13:37:28 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 monqy: don't don't say that he'll tell us 13:37:49 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 fizzie: no that can't break. 13:39:25 but that's not really an issue 13:39:36 all the old coderefs get redefined anyway. 13:39:38 Sgeo: automate? 13:39:53 monqy, as opposed to writing out countless definitions by hand. 13:39:58 (the coderefs in my program are in the bot command table, which will get redefined during the hotswap) 13:41:37 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 I'll zero basically everything. I don't want old package-scope variables to be visible either. 13:50:20 Would it be better for me to write a program to write the Haskell code instead? 13:50:35 Sgeo: it would be pretty easy I'd thin. if it's sufficiently boring. 13:51:08 why are you doing what you are doing in the way you are doing it 13:51:16 and why are you doing what you are doing 13:51:19 Sgeo: If you can't avoid whatever you're doing, then yes. 13:51:29 Sgeo: If your needs are simple enough, use {-# LANGUAGE CPP #-} instead. 13:52:15 `run perl -e 'package X; our ($x, $y, $z) = 1..3; print %X::' 13:52:18 y*X::yx*X::xz*X::z 13:54:14 `run perl -e 'package X; our ($x, $y, $z) = 1..3; $X::{x}{SCALAR} = undef; print $x' 13:54:17 1 13:54:17 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 it sounds like he's doing some hard core code generation 13:54:38 `run perl -e 'package X; use strict; our ($x, $y, $z) = 1..3; $X::{x}{SCALAR} = undef; print $x' 13:54:42 1 13:54:49 Vorpal: can you think of any better alternatives? 13:54:56 kallisti, using erlang? ;P 13:55:00 nope. 13:55:05 unless you have a good perl-to-erlang translator. 13:55:49 I remember a MUD codebase I used to maintain used... execl? or something? 13:56:15 it somehow magically transferred sockets. I didn't really understand it. 13:56:40 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 (gen_server and such abstracts that away) 13:57:15 kallisti, eh when you exec existing file descriptors aren't closed. 13:57:35 unless you specifically set some flag on the fd using fcntl iirc 13:57:52 kallisti, so that is why they hang around 13:57:54 are sockets... file descriptors? 13:58:04 kallisti, obviously, what did you think they were? 13:58:18 I'm thinking of bash file descriptors I think. is that the same thing? 13:58:48 like fds as in open() or such 13:58:56 not sure what you mean with bash fds 13:59:02 the numbered ones. 13:59:17 that is what everything uses on *nix? 13:59:23 so why bash specifically 13:59:24 I see. 13:59:34 FILE* is just a wrapper around fds 13:59:43 because I don't fully understand file descriptors. 13:59:48 how are the numbers assigned? 13:59:58 by the programmer or the OS? 14:00:04 right 14:00:06 I meant 14:00:13 what algorithm is followed by the OS. 14:00:14 if any. 14:00:28 kallisti, probably "next unused" I would guess 14:00:35 you can of course move a fd and such 14:00:36 fds get reused immediately 14:00:39 did that in cfunge 14:00:49 so I guess they use a free-list or w/e 14:00:55 in other words could I do something 3>&1 and have some file in my program assigned to STDOUT? 14:01:01 elliott, does POSIX say that or is it just how it works on Linux? 14:01:03 unless you specifically set some flag on the fd using fcntl iirc 14:01:08 At open() time too; O_CLOEXEC. 14:01:13 oh right 14:01:14 Vorpal: POSIX says nothing about it afaik. 14:01:20 right 14:02:01 kallisti, not entirely sure what bash does there in terms of which syscalls 14:02:16 kallisti, I would guess it calls dup(3)? 14:02:24 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 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 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 kallisti, if you inspect a struct FILE it will, amongst other things, contain a field for the fd 14:03:22 So when dup'ing it's always the "smallest free". 14:03:24 there will be various flags and buffer things and so on too 14:03:25 At least on POSIX. 14:03:37 elliott: this may come as a shock but I don't know much about syscalls. 14:03:43 or C. 14:03:45 Does POSIX actually specify that stdio must be implemented as a wrapper around fd stuff? 14:03:46 "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 fizzie, I used dup2() in cfunge iirc to move some fd about for PERL 14:03:49 Same for 'open'. 14:03:53 Obviously a conforming C can implement fopen() without file descriptors. 14:04:04 s/about/around/ 14:04:12 so uh... is 3>&1 a bad idea? 14:04:30 kallisti: Not if you want to redirect fd 3 to stdout. 14:04:31 So the "lowest number that's not in use" is in fact in POSIX. 14:04:34 elliott, indeed 14:04:42 elliott: I'm guessing there's a way to specify that fd 3 is, then. 14:04:42 elliott, I just meant how it is done on *nix 14:04:52 elliott: otherwise you're at the mercy of the OS. 14:04:54 kallisti: What? 14:05:01 Is what? 14:05:03 Oh. 14:05:04 elliott: POSIX includes fileno(), so there sort-of has to be some correspondence between FILE*s and file descriptors. 14:05:15 kallisti: The program can just 14:05:18 write(3, ..., ...); 14:05:25 fizzie, indeed, I assumed he meant for non-*nix 14:05:27 kallisti: The shell opens fd 3. 14:05:29 *creates 14:05:31 By duping 1 onto it. 14:05:55 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 fizzie: Yes, but is the fd specified to refer to the same file? :p 14:06:08 "The fileno() function shall return the integer file descriptor associated with the stream pointed to by stream." 14:06:11 elliott: it always does that? or is that a result of the 3>&1 bit? 14:06:20 kallisti: That's because you told it you want an fd 3 going somewhere. 14:06:24 The standard fds are just 0, 1, 2. 14:06:25 or C. <-- oh, I assumed you were familiar with C when I tried to describe the concept above. 14:06:31 kallisti: You can't allocate fd 3 without pointing it somewhere. 14:06:37 fizzie, ah 14:06:38 i.e. another fd or a file or a socket or whatever. 14:06:53 elliott: so a regular open call can't assign fd 3 to something? 14:07:22 Not if it's already open. 14:07:35 kallisti: open(2) chooses which FD to give you. 14:07:46 kallisti: If you want it somewhere else, you need to dup2(2) it. 14:07:47 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 *dup2(3), apparently. 14:07:59 elliott, I believe that is dup2(3) 14:08:01 snap 14:08:02 Wait, no. 14:08:04 dup2(2). 14:08:13 At least "man 2 dup2" produces my glibc man page. 14:08:19 elliott, man 3p dup2 too 14:08:20 man 3 dup2 produces the POSIX manpage. 14:08:23 Right. 14:08:23 In 3P. 14:08:44 elliott, I often wondered what the point of the 2/3 separation was 14:09:11 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 2 is system calls, 3 is libc functions? 14:09:32 kallisti: If you do 3>&1, 3 is open by the time your program starts. 14:09:40 kallisti: Therefore it won't be used by any files you open in the program. 14:09:46 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 ah right it's dup'd from fd 1 14:09:59 olsner: Yes, although the system call man pages come from glibc, and document the glibc wrappers around them too. 14:10:01 or fd 0 possibly? 14:10:09 elliott, indeed 14:10:23 Vorpal: Presumably the point is taht you can look in section 2 to find all the system primitives. 14:10:25 If you say 3>&1, it's fd 1 which it dups into 3. That's what the "&1" part means. 14:10:25 *that 14:10:30 Back when people actually cared about sections. 14:10:35 Vorpal: for dup3 I do have two manpages 14:10:38 |dup2 14:10:42 *dup2 14:10:44 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 Nowadays sections are just to disambiguate program/libc/system-doc. :p 14:10:50 olsner, well one is the 3p copied-from-POSIX one 14:10:52 at least for me 14:11:23 fizzie: aaaah I see. 14:11:38 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 elliott, so we could basically drop everything except 1,3,3p,5 and 7? 14:12:00 for some reason I thought things like 2>&1 reassigned fd 1 to 2, not the other way around. 14:12:08 elliott, it isn't like section 8 for example is very well defined 14:12:33 hm I guess section 4 is useful too but I can't ever remember using that 14:12:36 Vorpal: Were I designing man today, I would drop the numeric sections. 14:12:41 (I'm looking at man man atm) 14:12:44 "man coreutils/ls", "man libc/wtf". 14:12:52 "man foo" would just do */foo and prompt if it's ambiguous. 14:12:52 well yes 14:13:02 * kallisti knows nothing about sections 14:13:04 that is indeed a lot more sensible 14:13:09 kallisti, try man man 14:13:10 in fact sections seems like a terrible way to organize namespaces of things. 14:13:15 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 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 Vorpal: I've seen them, but haven't taken the time to commit numbers to sections in memory. 14:13:27 kallisti: It originates because man pages were originally a printed manual. 14:13:32 Then they invented On-Line help. 14:13:32 elliott, you can edit /etc/man.conf to set search order 14:13:40 elliott, or /etc/mandb.conf on some systems 14:13:42 Vorpal: It doesn't bother me that much. :p 14:13:53 or even manpath.config on ubuntu 14:13:53 Vorpal: But I'd call 7 "linux". 14:13:57 And 2 "syscall". 14:14:09 Probably syscall/foo would just symlink to libc/foo. 14:14:13 elliott, I'd call 2 "glibc-mostly" 14:14:24 Are there 2 manpages not from glibc? 14:14:28 I think I've seen some bare-bones ones. 14:14:53 elliott, I seen a few from glibc saying that glibc doesn't provide a wrapper for it 14:15:01 or maybe not from glibc hm 14:15:10 ioctl_list(2) is probably not from glibc. 14:15:12 elliott, man futex for example 14:15:46 btw my manpath.config contains SECTION1 n l 8 3 2 3posix 3pm 3perl 5 4 9 6 7 14:16:02 I believe I moved some stuff around. Might have been on a different system 14:16:06 Vorpal: Well 14:16:08 COLOPHON 14:16:08 This page is part of release 3.35 of the Linux man-pages project. A 14:16:08 description of the project, and information about reporting bugs, can be 14:16:08 found at http://man7.org/linux/man-pages/. 14:16:15 elliott, so not glibc indeed 14:16:22 Vorpal: That's the case for all glibc manpages, though. 14:16:30 It's just that they describe glibc functions. 14:16:38 So they're glibc man pages. 14:16:41 hm 14:16:50 indeed 14:16:55 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 Must be great fun keeping it in sync. 14:17:06 heh 14:17:06 At least libc's API doesn't change much. 14:17:20 The Linux man-pages project 14:17:20 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 2: System calls, documenting the system calls provided by the Linux kernel. 14:17:20 3: Library functions, documenting the functions provided by the standard C library (with particular focus on glibc, the GNU C library). 14:17:20 4: Devices, which documents details of various devices, most of which reside in /dev. 14:17:22 5: Files, which describes various file formats, and includes proc(5), which documents the /proc file system. 14:17:25 7: Overviews, conventions, and miscellaneous. 14:17:27 (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 hm 14:18:14 elliott, it must be annoying when a new C or POSIX version is released and gets supported in glibc 14:18:29 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 Vorpal: That's like 3 functions at the rate those two pieces of crap move. 14:18:56 POSIX is updated more frequently than C too and it is larger. 14:19:01 Does glibc even bother to track POSIX these days? 14:19:13 elliott, or the other way around you mean? ;P 14:19:17 What did POSIX 2008 even add, anyway? 14:19:21 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 elliott, mostly stuff from glibc iirc. Some stuff from other libcs too 14:19:46 olsner: They should stop publishing drafts and annoucning things and whatnot. 14:19:48 Would be much more fun. 14:19:57 "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 elliott, I believe it was like 20-30 new functions though 14:20:02 C99 -> twelve years pass -> "Surprise, motherfuckers! Here's C11!" 14:20:10 :D 14:20:33 elliott, and MSVC is still on C89 14:20:39 "Also while we were at it, we made a NetHack 4 too." 14:20:41 MSVC is also still in C89. 14:20:44 that is like over 20 years old 14:20:46 Er. 14:20:48 *89 14:20:52 KINDA RUINED MY JOKE THERE, C. 14:21:03 hah 14:21:07 Vorpal: In fact, it's over 22.9 years old. 14:21:11 MSVC doesn't do any of the added stuff in C90? 14:21:16 elliott, right 14:21:20 Well, if it was published in January. 14:21:23 Which it probably wasn't. 14:21:24 iirc, commas at the end of enums was added in C90 14:21:32 olsner, err maybe 14:21:36 olsner: But... but gcc says they're the same! 14:21:44 GUYS DO YOU REMEMBER THAT TIME WE FOUND A PRINTED COPY OF C94 14:21:51 olsner, I'm surprised they differ though 14:21:56 elliott, we did? 14:22:03 C94, wth did that contain 14:22:04 http://en.wikipedia.org/wiki/C_(programming_language) doesn't even mention C94. 14:22:04 C94? 14:22:06 I know it existed 14:22:12 but I don't know what was new 14:22:14 Vorpal: I think it was never officially standardised, or something? 14:22:22 ah 14:22:24 But it was a printed copy or PDF for like 30 quid. 14:22:29 heh 14:22:30 I totally regret not buying it. 14:22:32 Souvenir. 14:22:40 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 hmm, so C90 vs C89 has only the changes that ISO did while giving the ANSI standard an ISO number 14:23:09 fizzie: I'm disappointed C99 didn't get sometimes referred to as C100. 14:23:33 C00 the mysterious 14:23:43 elliott: ANSI could've released a C100 that was essentially ISO C99 except with a different name. For symmetry. 14:23:50 elliott, if C keeps going they are going to have to time it to unused years in future centuries 14:24:02 and that only works for 100 versions 14:24:08 after that they are screwed 14:24:16 Vorpal: This is why you use Befunge numbering(tm). 14:24:24 well yes 14:24:26 AKA 19100 numbering. 14:25:00 will C have died off by then 14:25:12 monqy, hopefully yes, probably not 14:25:26 elliott, I still think that timing releases is a far funnier solution :P 14:25:27 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 fizzie, well yes 14:26:35 fizzie, I would think there will be a C25 or so rather than C34 14:26:50 maybe 14:26:52 heh, looks like C has/had a limit of 15 nested levels of compound statements 14:27:06 olsner, heh? 14:27:10 olsner: Noooooooooooooooooooooooooooooo 14:27:11 probably it's just saying that compiler must support at least 15 levels, but anyway 14:27:24 All of the limits are just "at least this" guarantees. 14:27:25 maybe future C will use fruits instead of numbers 14:27:32 Also they've written in a really weird way. 14:27:39 fizzie, are they? 14:27:44 monqy: yes, then you'll need to support at least banana nested levels 14:28:06 http://stackoverflow.com/questions/8520673/installing-postgresql-on-qnx-neutrino 14:28:09 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 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 I've never quite "gotten" that "at least one program" rule. 14:28:59 elliott, is it better or worse than people using vxworks? 14:29:14 fizzie, heh 14:29:45 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 or what 14:30:04 -!- Taneb has quit (Quit: Goodbye). 14:30:43 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 I mean, it did translate at least one program that contained at least one instance of every one of the limits. 14:31:05 fizzie, well there is that too 14:31:12 (12 pointer declarators is one of the limits.) 14:31:23 fizzie, but it doesn't even have to support int ************a; int ************b; in the same program 14:31:27 which is just silly 14:31:31 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 At *least* one? 14:31:46 Is there only one such conforming C program? 14:31:48 I don't know if it's any sillier than just not supporting int ************b at all. 14:31:56 elliott, that is what we are discussing 14:32:05 fizzie, is that from C99 or C11? 14:32:06 elliott: It's also implementation-dependant which one it is. 14:32:14 Vorpal: C99, but IIRC it's unchanged in C11. 14:32:15 It seems like the standard already obligates the implementation to translate all conforming programs. 14:32:23 So the limits are arguably null. 14:32:59 what was the thing in perl you can use to run commands with options, but without opening up a whle shell? 14:33:11 elliott, ah but afaik the definition of a conforming program is one that can be handled by such a conforming implementation 14:33:20 was it the piped open? 14:33:21 (given the limit description) 14:34:09 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 kallisti, is that like pipe(), fork(), dup2() and exec() in C? If so, then yes 14:34:32 (Just that 'system' of course doesn't capture any output, while a pipe-open does.) 14:34:37 fizzie: ah okay good. 14:34:38 (well execl or whatever) 14:34:39 Vorpal: I... somewhat doubt it. 14:34:49 That means "conforming implementation" is circular. 14:35:31 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 "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 Oh, so it was about metacharacters, not spaces, and it does space-splitting by itself. Well, anyway. 14:36:16 Providing a list will never execute a shell. 14:36:33 so wait the list form can still create a shell? 14:36:41 No. 14:36:43 "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 Vorpal: I... don't think that makes much sense. 14:36:44 Providing a list will never execute a shell. 14:36:44 so wait the list form can still create a shell? 14:36:45 lol 14:36:55 oh 14:36:59 :) 14:37:10 elliott, of course not 14:37:18 elliott, but then, nor does gets()! 14:37:22 Vorpal: That's gone now. 14:37:26 They replaced it with a safe version. 14:37:31 elliott, yes but only in C11 14:37:36 I think it's hideously unfair; gets was awesome. 14:37:36 which is absurdly long 14:37:47 I mean, can we have one easy-to-use, ridiculous function in C? 14:37:49 Just one? 14:37:56 One function to remind you the language you're using is utterly terrible. 14:38:39 "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 fizzie: oh but system doesn't give me the stdout 14:39:01 I have to use open for that. 14:39:02 I think. 14:39:28 fizzie, wow 14:39:35 kallisti: Well, right, but the '|-' and '-|' opens have the same behaviour. If I recall correctly. 14:39:40 fizzie: That's amazing. 14:39:47 fizzie: What... what does that even end up meaning. 14:40:08 fizzie: Hmm. 14:40:15 fizzie: That means that you can write a C compiler that accepts any string of bytse. 14:40:16 bytes 14:40:23 elliott, it means it is a C standard 14:40:30 fizzie: As long as it correctly compiles every strictly conforming program, every string of bytes becomes a conforming C program. 14:40:39 Someone get on that? 14:41:05 elliott, there is the minimum implementation limit thing too 14:41:22 elliott, which is defined elsewhere by the spec (the "at least one" bit) 14:41:38 That's just limiting the strictly conforming programs set further. 14:41:44 What fizzie said. 14:41:46 well yes 14:42:02 You could troll comp.lang.c with this. 14:42:02 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 elliott, is that still alive? 14:42:10 "I have a conforming C program that isn't working: int main(;;)qw;4{};/;{" 14:42:26 Comp.lang.c people quite often remember to put that "strictly" in, from what I've seen. 14:42:32 Vorpal: Do Usenet groups ever "die"? 14:43:07 elliott, well I haven't seen any message on alt.lang.intercal for almost a year by now 14:43:13 or at least half a year 14:43:20 Vorpal: Dude... 14:43:24 That's INTERCAL. 14:43:29 Oh, I see. 14:43:34 Vorpal: alt.lang.intercal always goes that slowly. 14:43:44 elliott, fair enough 14:43:49 Vorpal: It at least gets a post every April. 14:43:51 what a sad group 14:43:56 well okay 14:46:08 fizzie: is there a way to get stderr with the list form of piped open? 14:46:37 kallisti: IPC::Open3 might help. 14:49:20 fizzie, what if you want to deal with more than 3 fds 14:49:42 (what if you want to redirect any fd the program opens to go through your own program?) 14:49:45 oh crap, capital c's all over the screen 14:50:00 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 Vorpal: For "opens during the execution", I don't see how you can redirect those at all. 14:50:28 fizzie, it is obviously easy to do so. Just use ptrace 14:50:36 Obviously nonportable, too. 14:50:41 fizzie, or LD_PRELOAD probably 14:50:48 Won't catch syscalls. 14:50:50 I didn't say portable 14:51:00 fizzie, well indeed, most programs don't use them directly 14:51:06 unless they are statically linked 14:51:10 but ptrace would work 14:51:18 itidus21: FSVO all, screen. 14:51:35 fizzie, it is obviously easy to do so. Just use ptrace 14:51:47 I don't think that works. 14:51:55 You still can't force the program to dup2 without fucking about with its memory. 14:51:58 i get scared when theres a language i could almost get away with coding in being discussed here 14:52:02 elliott, that is easy as in "conceptually easy" not "easy to implement" 14:52:19 elliott, anyway gdb manages to insert calls into a process if you write call foo 14:52:22 Vorpal: Well, you could also write a kernel module or whatever. 14:52:26 elliott, indeed 14:52:28 Yes, so does weboflies. 14:52:33 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 ned, just be all "well so sad, your program wasn't the one program". 14:52:34 Your suggestions are pretty stupid though. 14:52:39 elliott, indeed 14:52:45 fizzie: :D 14:52:57 fizzie: Excellent use of bold. 14:53:24 fizzie, :D 14:54:17 fizzie: Actually... 14:54:24 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 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 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 elliott, no it says they shouldn't exceed said limits. It doesn't say they aren't allowed to use less? 14:56:05 Vorpal: What? 14:56:13 oh hm, nvm 14:56:32 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 C sure is confusingly worded 14:57:15 fizzie: They might have just wanted to avoid a scary universal quantification. :p 14:57:45 -!- oerjan has quit (Quit: Later). 14:57:46 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 *reason? 14:58:27 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 `words --canadian 9001 14:59:04 HackEgo: hi 14:59:06 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 elliott, this was probably worded like that back in 1989 or so 14:59:34 elliott, and no one bothered to change it 14:59:51 so hm probably of compilers used back then? 15:00:26 Vorpal: I was asking in general. 15:00:40 good question 15:02:45 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 comp.std.c has some overlap, though. 15:03:06 well that explains a lot 15:03:18 fizzie: I don't like the idea of a public international standards committee nobody knows the membership of. 15:03:40 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 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 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 !perl $, = ' '; print "hi"; print "hello"; 15:05:10 hihello 15:05:14 !perl $, = ' '; print "hi",; print "hello"; 15:05:14 hihello 15:05:16 L( 15:05:17 I guess theoretically speaking you could speak there if you want to influence the standard. 15:05:26 It probably won't do anything, but that's what it's for. 15:05:46 fizzie: http://groups.google.com/group/comp.std.c/browse_thread/thread/d0fd9bfc89647b4a 15:05:53 fizzie: Standard lawyers! THESE ARE MY PEOPLE. 15:09:01 "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 `fetch http://sprunge.us/SERK 15:09:13 2012-01-08 15:09:12 URL:http://sprunge.us/SERK [4539] -> "SERK" [1] 15:09:27 reminds me of the ents determining after a few days that the hobbits are probably not orcs 15:09:29 `run mv SERK bin/words.pl; chmod +x bin/words.pl 15:09:32 No output. 15:09:39 `words --help 15:09:43 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 no bad 15:09:50 `ls 15:09:53 Mineso \ X.pm \ Y.pm \ bin \ canary \ karma \ lib \ main \ min.sh \ paste \ quotes \ share \ typetest.hs \ wisdom 15:10:04 `run rm X.pm Y.pm 15:10:06 No output. 15:10:19 oh 15:10:25 `run mv bin/words.pl bin/words 15:10:28 No output. 15:10:33 `words 50 15:10:36 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 `run rm Mineso typetest.sh main.sh 15:10:47 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 `run rm -r Mineso min.sh typetest.sh 15:11:05 `run rm -r Mineso min.sh typetest.hs 15:11:05 rm: cannot remove `typetest.sh': No such file or directory 15:11:06 FUCK!!! 15:11:08 No output. 15:11:12 `ls 15:11:16 bin \ canary \ karma \ lib \ main \ paste \ quotes \ share \ wisdom 15:12:04 `run perl -pi -e 's#Data#share/WordData#' bin/words 15:12:07 No output. 15:12:10 `words 15:12:14 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 `ls share 15:12:40 WordData \ awesome \ units.dat 15:12:56 `ls share/WordData 15:12:59 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 >_> 15:13:08 hackgeo shoiuld totally coloured output 15:13:28 yes 15:13:41 Is hackgeo Sgeo's cousin? 15:13:43 `ls --colour=yes 15:13:44 I am great confused 15:13:46 ls: unrecognized option '--colour=yes' \ Try `ls --help' for more information. 15:13:51 eh 15:13:57 `words 15:14:00 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 `ls --color=yes 15:14:07 ​.[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 aww 15:14:12 Gregor: I'm noticing a distinct lack of Math::Random::MT::Perl 15:14:28 Gregor: Don't install it. 15:14:49 oh.. 15:15:01 Is hackgeo Sgeo's cousin? 15:15:01 wat 15:15:09 hackgeo shoiuld totally coloured output 15:15:09 elliott, typo 15:15:43 `run perl -pi -e 's#^.*chdir.*$##' bin/words 15:15:46 No output. 15:15:53 I whshhould typo more ofrten maybe this will happen agaion 15:16:01 [[ 15:16:02 [...] 15:16:02 > As far as I know, variables of type "size_t" are guaranteed to be of 15:16:02 > sufficient precision to represent the size of any object. 15:16:02 [...] 15:16:02 The standard doesn't state that explicitly, and I argue that it 15:16:02 : parse error on input `,' 15:16:03 can't find file: L.hs 15:16:04 doesn't imply it. 15:16:06 It says that the sizeof operator yields a result of type size_t. 15:16:08 It also says that the "*" operator applied to two operands of type 15:16:10 int yields a result of type int; that doesn't imply that the result 15:16:12 will always fit in an int. I suggest that the sizeof operator can 15:16:14 overflow, and if it does, the behavior is undefined. 15:16:16 ]] 15:16:18 fizzie: This is beautiful. 15:16:20 monqy: hi 15:16:25 elliott: hi 15:16:29 `run perl -pi -e 's#^.*\bwarn\b$##' bin/words 15:16:32 No output. 15:16:33 `words 15:16:37 Optional module Math::Random::MT::Perl not found. \ wiektripuur 15:16:56 `run perl -pi -e 's#^.*\bwarn\b.*$##' bin/words 15:17:00 No output. 15:17:01 `words 15:17:06 sulf 15:17:09 `words --help 15:17:13 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 `words --list 15:17:37 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 `words 900 -o 289347898974892734238947923742389423 15:18:27 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 oh I forgot the thing. 15:18:56 ...what was the thing again. 15:19:01 ah yes 15:20:06 sizeof overflow sounds 15:20:09 beautiefulye 15:21:49 elliott: interesting 15:21:52 monqy: you're overdoing the typos a little :P 15:22:03 `run perl -pi -e 's#GetOptions#@ARGV = split /\s+/, \$ARGV[0] if \@ARGV == 1;$&#' bin/words 15:22:07 No output. 15:22:07 i have trouble helping it 15:22:10 fizzie: Could I convince you to op a single-purpose bot? 15:22:13 `words --eng-all 9001 15:22:17 syntax error at /hackenv/bin/words line 111, near "=" \ Execution of /hackenv/bin/words aborted due to compilation errors. 15:22:21 uh oh 15:22:35 turns out perl is not a valid substitute for a text editor. 15:23:15 kallisti, just edit it locally and `fetch a new one? 15:23:33 too easy. 15:24:02 kallisti: You're just inferior. 15:24:02 `fetch http://sprunge.us/KHIN 15:24:05 2012-01-08 15:24:05 URL:http://sprunge.us/KHIN [4599] -> "KHIN" [1] 15:24:05 I fixed scripts with sed all the time. 15:24:30 `run chmod +x KHIN; mv KHIN bin/words 15:24:34 No output. 15:24:35 `words --eng-all 5000000 15:24:38 can't open share/WordData/EngAll: No such file or directory at /hackenv/bin/words line 104 15:24:50 elliott, wow, sizeof overflowing 15:24:57 elliott, that is so absurd 15:25:02 `fetch http://sprunge.us/VHhP 15:25:04 2012-01-08 15:25:03 URL:http://sprunge.us/VHhP [4600] -> "VHhP" [1] 15:25:17 `run chmod +x VHhP; mv VHhP bin/words 15:25:20 No output. 15:25:22 `words --eng-all 5000000 15:25:26 more like they forgot to put in the standard the bit about size_t always being big enough 15:25:29 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 fizzie: HMPH 15:25:44 (and/or all objects and types being small enough) 15:26:06 shropsych 15:26:12 elliott, hm does sizeof overflowing allow infinite memory? And does that make C TC then? 15:26:28 Vorpal: I doubt it; \infty doesn't "overflow" to anything. 15:26:47 anyone wants to implement an interpreter for my language? 15:26:55 is it a good language 15:26:57 hmm, if size_t doesn't have to be unsigned, I think it could be arbitrary-precision 15:27:09 atrapado: Wait, aren't you one of those people who were in here years ago? 15:27:16 elliott, hm true 15:27:18 or if sizeof(x) = 1 for all x 15:27:29 yes, i was 15:27:31 olsner: no, CHAR_BIT is required of freestanding implementations 15:27:45 atrapado, which language? 15:27:49 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 i define a minimal turing complete language 15:28:13 elliott: hmm, but didn't we conclude that this only affected unsigned types? 15:28:14 atrapado: Naww, `pastelogs says 2007, I meant the REAL old days. But hi :P <-- what? 2005? 15:28:24 i think tc 15:28:28 Vorpal: 2002-2004. 15:28:32 elliott, ah 15:28:32 minimal? 15:28:52 only 3 or 4 elements 15:29:02 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 I'm bad at making my programs simultaneously have data files and also being current-directory agnostic. 15:29:15 olsner: I think we waxed philosophical about what sizeof's value actually meant. 15:29:25 I don't recall. 15:29:37 kallisti, huh? 15:30:05 kallisti, if you don't mind portability look at /proc/self/exe 15:30:29 well, in Perl I use $0 15:30:31 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 Vorpal: Have you heard of argv[0]. 15:30:42 I think unsigned types need to wrap at 2^n, where n is possible related to sizeof and CHAR_BIT 15:30:43 elliott, argv[0] has the issue that it might be anything 15:30:47 elliott, at least in C 15:30:50 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 elliott, not sure about perl 15:30:58 Vorpal: /proc/self/exe will also point to `which perl`, duh. 15:31:02 elliott, hm true 15:31:13 but... negative sizeof, hmm 15:31:22 olsner: Right, but by having sizeof return something you're still declaring that it fits into that many chars. 15:31:38 olsner: i.e. you can put it in a char array of that size and convert it back. 15:31:55 olsner: And by defining CHAR_BIT you're declaring that that many bools can uniquely identify a character. 15:32:05 So there's no real way around it, AFAICT. 15:32:35 The only argument there is what CHAR_BIT really means, IMO. 15:33:50 and sizeof still has a (constant) maximum value, because everything else has, so that's no solution to sizeof overflow anyway 15:34:21 is it possible to allow structs and arrays to have sizeof 1? 15:34:46 char n[2] can't fit into a char unless char is countably infinite. 15:34:53 Which it can't be, as we've established. 15:34:59 So, no. 15:35:08 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 Vorpal: Well, that's just perverse. 15:36:07 elliott: because of CHAR_BIT? 15:36:09 Who the hell uses ternary? 15:36:11 olsner: Yse. 15:36:12 Yes. 15:36:19 elliott, a few systems have used that 15:36:24 fizzie: What's the actual definition of CHAR_BIT? 15:36:25 Vorpal: It was a joke. 15:36:30 elliott, oh 15:37:30 Hey, the musl guy is on SO. 15:37:33 fizzie: What's the actual definition of CHAR_BIT? <-- are you using fizzie as a search engine of the C standard? 15:38:22 Vorpal: Yes. 15:38:28 well, i will explain the language definion later, well 2 languages really 15:38:57 elliott, he tends to be very good at such things 15:39:08 atrapado, is it on the wiki? 15:39:13 no 15:39:19 why not? 15:39:37 it is very simple 15:39:44 i can explain here 15:40:00 well that won't be as each to find for people in the future 15:40:03 Lots of languages on the wiki are very simple 15:40:11 ok 15:40:32 i will consider the wiki 15:40:44 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 no it is not a clone 15:41:34 atrapado, did you manage to break SHA256, then? 15:41:41 hehe 15:41:52 not even md5 15:42:00 but i developed a model 15:42:29 A model of what? 15:42:42 MD5 was broken ages ago. 15:43:11 of md5 or other algorithm with logical and add operarions 15:44:10 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 yikes, I didn't know it was that bad 15:44:22 -!- atrapado has quit (Read error: Connection reset by peer). 15:46:45 Is that 2^20.96 time? 15:47:54 -!- atrapado has joined. 15:48:16 elliott: "number of bits for smallest object that is not a bit-field". 15:48:38 sorry, batery was low 15:50:20 fizzie: What does "number of bits" even mean? :/ 15:50:21 olsner: Yes. 15:52:00 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 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 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 (Typos mine.) 16:06:27 The 'n' for unsigned types is not related to sizeof, though, since (non-char) arithmetic types can have padding bits. 16:07:02 damn, and objects need to be representable as a series of *unsigned* chars 16:07:23 (Where the "n" was the [0 ... 2^n-1] value range for unsigned types.) 16:09:07 hmm, *except perhaps the bit with the highest position.* - so the highest bit is allowed to be anything? 16:09:49 That's just a footnote, and they are non-normative, IIRC. 16:09:58 It's just defining "pure binary" there. 16:10:35 pff, "pure binary" could mean anything! 16:10:37 There's another place which explicitly defines what the value bits mean in unsigned integer types. 16:11:21 "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 `which log 16:12:40 ​/hackenv/bin/log 16:12:41 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 (In other words, two's-complement, one's-complement, or sign-magnitude.) 16:13:01 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 "Tit". 16:13:31 I believe it is actually trit 16:13:45 "Trit" is more common, sure. 16:14:08 fizzie: argh, so C mandates binary representations? :( 16:14:34 is that new from C99 though? maybe C90 is better 16:14:39 olsner, I complained about that earlier today 16:14:47 (the exclusion of ternary) 16:14:55 C90 isn't (IIRC) any better when it comes to unsigned integers. 16:15:02 Signed integers are allowed more latitude. 16:15:30 fizzie, anyway all modern systems uses two-complement for signed integers afaik 16:17:24 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 9 is a perfectly suitable value for CHAR_BIT, after all. 16:18:14 Well, unless you want to be all POSIXy. 16:21:13 check SumaMoito in the wiki for the languages i mentioned 16:21:57 fizzie: but it does limit the range of signed integers to some fixed number of bits, which is the boring part 16:21:58 The 'n' for unsigned types is not related to sizeof, though, since (non-char) arithmetic types can have padding bits. 16:22:00 fizzie: Ah. 16:22:09 fizzie: Didn't we conclude that nothing stopped you packing data into those padding bits? 16:22:51 fizzie: Incidentally, I had to cite the as-if rule a day or two ago! 16:22:59 I didn't realise people ever actually had to do that. 16:23:06 I feel like a real standards lawyer. 16:23:18 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 (E.g. one of the padding bits can be a hardware-mandated parity bit.) 16:24:25 fizzie: Well, we don't care about portability guarantees. 16:24:52 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 "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 Unpredictability 16:26:28 Cache pollution 16:26:28 Time spent walking all memory" 16:26:32 pikhq: I don't like musl any more. :( 16:26:46 "Reference counting is clean and elegant" I double don't like it! 16:27:23 if only it were @ 16:27:26 elliott: well if you just keep calling malloc(n) :D 16:27:41 itidus21: No. 16:27:44 Pointers have a defined size. 16:27:48 That size must be finite. 16:27:54 oh i see 16:29:00 well ain't that a bitch 16:29:33 fizzie: So, theoretically you could have an unsigned integer whose value is in the padding bits? 16:29:58 Erm, signed. 16:29:59 Argh. 16:30:07 fizzie: I've lost track of the argument. 16:30:13 or in a single arbitrary-precision padding bit 16:31:00 olsner: The padding bits are still bits that show up in the unsigned char[n] object representation. 16:31:26 (What does an "arbitrary-precision bit" even mean?) 16:31:45 something that's called a "bit" but has infinite data 16:31:56 fizzie: Well, you can be really sure of the precision of your 0s and 1s. 16:31:59 They're... crisp. 16:32:01 High-fidelity. 16:32:03 All thanks to Monster Cable. 16:32:15 lol 16:32:22 thanks monster cable 16:33:52 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 the best way to store bits is as pebbles 16:37:01 elliott, take a look at the wiki: SumaMoito 16:37:16 "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 Worst. Marketing. Ever. 16:38:01 atrapado: The only difference between Z1 and Z2 is the wraparound value? 16:38:20 It just looks like brainfuck with variables instead of a tape and no IO to me. :p 16:38:31 is the value that you get when decrement 0 16:38:32 I don't think it's TC. 16:38:57 Because you always condition on the same variable in a loop. 16:38:59 i am sure they are tc, mostly 16:39:06 Brainfuck with only balanced loops is not TC. 16:39:07 So... 16:39:17 atrapado: You can be as sure as you like, that doesn't change the theory. 16:39:26 you can have many variables and loops 16:39:48 i saw a proof some day 16:39:51 atrapado: You can have many variables and loops in lots of sub-TC languages. 16:39:57 for z2 16:40:13 Okay. Show the proof? 16:40:17 It might be erroneous, after all... 16:40:24 is the true value of TC that TC means compatible with LC? 16:40:25 in computer science grade 16:40:50 atrapado: Err, you aren't the author of these languages? 16:40:56 well show me a computation that can not be done 16:41:04 and that LC means you can derive mathematical proofs by the code 16:41:06 atrapado: Burden of proof... 16:41:22 i am the author of 2 of these lsnguages 16:41:41 atrapado: Here's a thing that can't be done: a BF->SumaMoito-Z1 compiler. 16:41:56 As I said, the loop structure is too weak. 16:42:00 no 16:42:01 If you want to show it TC, show the compiler. 16:42:09 and that esoteric programmers primary goal is to make programming useful for mathematical proofs 16:42:34 atrapado: No what? 16:42:45 i implemented a compiler for one of these languages 16:42:57 A compiler from what to what? 16:42:57 atrapado, you invented that crap? 16:43:01 you can add sub div... 16:43:11 rude... 16:43:18 atrapado: The arithmetic isn't the problem. 16:43:20 The control flow is. 16:43:27 compiler from the language to c++ 16:43:33 no 16:43:37 nest them 16:43:42 Well, that doesn't prove anything; you can compile sub-TC languages to C++. 16:43:47 atrapado: OK, let me put it this way. 16:43:51 yes elliott 16:43:57 Brainfuck with only balanced loops is *proven* sub-Turing-complete. 16:44:10 In brainfuck, you *have* to be able to vary the cell you condition on for it to be TC. 16:44:17 Your language is essentially BF with variables instead of cells. 16:44:20 >:-) 16:44:23 But your loop structure is over a constant variable. 16:44:29 You cannot change what you loop over in the loop itself. 16:44:35 yes 16:44:35 Therefore, it is most likely sub-TC. 16:44:46 it is hard but is possible 16:44:46 By analogy with the fact that balanced brainfuck is sub-TC. 16:44:47 elliott, you can swap two variables, can't you? 16:44:59 Phantom_Hoover: Weell... 16:45:00 -!- Ngevd has joined. 16:45:08 Phantom_Hoover: I suppose so, with a third variable. 16:45:22 Hello 16:45:22 Phantom_Hoover: But a loop can only swap two fixed variables. 16:45:55 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 Hmm, it /seems/ like an MRM would be a worthwhile avenue. 16:46:26 i am not mathematician 16:46:29 SumaMoito-Z1 and -Z2 are, I think, Turing Complete 16:46:32 Phantom_Hoover: MRM? 16:46:38 atrapado: Nor am I, what's your point? 16:46:40 Minsky register machine? 16:46:41 Isomorphic to a Minsky Machine 16:46:43 Phantom_Hoover: Ah. 16:46:48 Ngevd: I don't think so. 16:46:52 to show the proof 16:46:53 It's the loop structure still. 16:46:57 Well, not isomorphic, but 16:47:00 atrapado: Proving it TC is trivial; you just have to write a compiler from a TC language to it. 16:47:03 I'm not really sure how MRMs work, so I can't say. 16:47:10 atrapado: For instance something very simple like boolfuck or as Phantom_Hoover said a Minsky machine. 16:47:58 I think I could translate any Minsky Machine with n registers to a SumaMoito program with n+1 variables 16:48:09 i did not see a computation that can not be done with the languages 16:48:32 atrapado: Proof by lack of imagination is a common but invalid method :) 16:48:41 yes i see 16:49:07 How are Minsky Machines numerally notated? 16:49:57 what happens in z2 if you decrement a zero variable 16:50:08 Hmm, OK, Minsky machines might work. 16:50:09 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 stays the same 16:50:15 monqy, it stays 0 16:50:19 But I dunno. 16:50:23 Ngevd: unimaginitive 16:50:23 BCT looks implementable too. 16:50:24 You need an "if". 16:50:30 I'm not convinced the "while" there can do an "if". 16:50:45 yes it can do 16:50:54 atrapado: Not necessarily in the way required. 16:50:56 itidus21: what 16:50:59 elliott, have a 3rd variable stuck at 0? 16:51:12 i mean, is sumamoito not a form of computation? :D 16:51:17 Wait, hang on 16:51:17 what 16:51:19 You can do 16:51:20 temp = foo 16:51:23 is it not? 16:51:26 while (foo) { ...; foo = 0 } 16:51:27 foo = temp 16:51:34 But that means the whole thing _cannot_ change foo at all in any way 16:51:36 hehehe 16:51:38 Hmm 16:51:39 temp = foo 16:51:48 while (foo) { ...; /* sets add */; foo = 0 } 16:51:48 foo = temp 16:51:50 -!- variable has changed nick to consrt. 16:51:51 -!- consrt has changed nick to const. 16:51:59 /* foo += add */ 16:52:00 while (a) { a-; b+; code }; while (b) { code } seems like it'd work as an if-else. 16:52:02 That could work if you can do addition. 16:52:07 why can't a TC do sumamoito i wonder.. perhaps due to some limitation of the power of a TC 16:52:10 well strictly speaking there is no = 16:52:16 You can even restore a int the else loop. 16:52:17 itidus21: what 16:52:18 atrapado: It was pseudocode 16:52:21 ok 16:52:35 yeah.. TC is overhyped 16:52:36 Phantom_Hoover: Erm, that only works if a is either 0 or 1. 16:52:42 Which is not the case with an MRM. 16:52:52 itidus21: I think you misinterpreted something 16:52:56 elliott, erm, right. 16:53:20 monqy: probably 16:53:23 yeah.. 16:53:33 -!- Zuu has joined. 16:53:41 If you replace code with while (c) {code; c-} and then put c+ outside the loop? 16:53:52 And set c to 1 beforehand. 16:53:54 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 itidus21: if that clears anything up 16:54:07 ohhh 16:54:11 yes that helps 16:54:19 :( 16:54:36 my misinterpretation was more exciting 16:54:49 Phantom_Hoover: b+; while (a) { whentrue; while (a) { a- }; b- } while (b) { whenfalse } 16:54:51 itidus21, you want something like Gravity 16:54:54 don't worry there's still plenty of fun stuff you can't do 16:54:56 Phantom_Hoover: The problem is that, with an MRM, you have to test whether it's zero /without clobbering it/. 16:55:05 Which is impossible, because you only have a while loop on a fixed variable. 16:55:08 So you have to copy it elsewhere. 16:55:13 no 16:55:16 Yes; where's the problem with that/ 16:55:23 Phantom_Hoover: Because the operation is to decrement it. 16:55:35 while a a- b+ c+ ??? 16:56:01 copy 16:56:06 Ngevd: i do not quite enjoy not being educated in maths... it takes a lot of the fun out of esolangs 16:56:15 itidus21, :P 16:56:21 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 That's "if a>0, decrement a, else ...". 16:57:07 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 every time i hit a mathematical notation it is like a toll gate 16:57:39 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 itidus21: Ignorance is bliss, they say. 16:57:44 Phantom_Hoover: There's no =. 16:57:52 they do. and in my experience.. it has proven true 16:57:56 Anyway, I'm not sure what that is meant to do. 16:57:58 elliott, that's shorthand for initialisation, duh. 16:58:04 itidus21: It generally rings true for the ignorant, yes. 16:58:11 can be emulated, the = 16:58:12 Phantom_Hoover: What's your thing meant to do that mine doesn't? 16:58:19 That's meant to be a straight if-then-else. 16:58:23 Ah. 16:59:40 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 There's my if/then/else. 16:59:59 Phantom_Hoover: Now the main problem is: you need a set of declarations for each variable you condition on. 17:00:04 But I think it /might/ be enough to do an MRM. 17:00:26 elliott, there are no limits for variable declaration though, so that's OK, isn't it? 17:00:36 Phantom_Hoover: Well... this thing can't nest. 17:00:39 no limits 17:00:39 if you guys saw my initial budding efforts at language design in the past it might be vomit inducing 17:00:47 If you put an if/then/else inside an if/then/else, the outer loop's state gets fucked up. 17:00:51 hehehehe 17:00:58 Phantom_Hoover: That's problematic, because there's no other way to do control flow other than nesting in this thing. 17:01:05 So you need to find a way to "unroll" everything at the top level. 17:01:10 I don't think that's possible. 17:01:23 can nest 17:01:29 atrapado: I know they can nest. 17:01:36 Can't you just assign a unique set of variables to each if construct? 17:01:39 I understand the language. 17:01:45 ok 17:01:46 Phantom_Hoover: Well, yes. 17:02:14 I know how to implement unsafeCoerce# in pure Haskell! let x = x in x 17:02:17 ^^joke 17:02:20 ^^joke 17:02:23 aplause 17:02:35 cheers echo far and wide 17:02:38 for sgeos 17:02:38 joke 17:02:42 Phantom_Hoover: a++; b++; if (a>0) { a--; } else { ... }; if (b>0) { b--; } else { ... } is a TC MRM, right? 17:02:42 If I didn't say joke, some of you would think I was being serious 17:02:48 Phantom_Hoover: Where ... is part of the instruction. 17:02:50 Er, let me rephrase that. 17:02:52 atrapado, what happens if you do something like "a; a+; a;"? 17:02:56 INC_A = a++ 17:02:59 INC_B = b++ 17:03:01 elliott, you expect me to know a thing like that?? 17:03:07 A{...} = if (a>) { a-- } else { ... } 17:03:09 argh 17:03:10 *>) 17:03:11 *>0 17:03:14 well it should not compile, ngevd 17:03:16 B{...} = if (b>0) { b-- } else { ... } 17:03:27 Phantom_Hoover: Well, just confirm whether my understanding of what http://esoteric.voxelperfect.net/wiki/Minsky_machine says is correct. :p 17:03:28 I think we have enough for all the normal arithmetic tools, though, so BCT looks achievable. 17:03:44 Phantom_Hoover: I'm just not convinced that a structural nested thing like that is enough to accomplish a "state transition". 17:04:16 Phantom_Hoover: Structured programming languages require powerful enough control structures to not be sub-TC, after all. 17:04:22 goto is significantly more flexible. 17:04:45 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 elliott, 'state transition' meaning 'switching to a different set of code', essentially? 17:04:56 Phantom_Hoover: Wait, obviously what I said wasn't enough. 17:05:00 Because there's no looping. 17:05:06 So yeah, 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 just isn't enough on its own to accomplish the control. 17:05:32 is there anything preventing a real easy reduction to balanced-loops bf 17:05:54 -!- augur has joined. 17:06:10 monqy, balanced loops infinite cell size, no 17:06:17 Didn't this whole thing start because balanced-loops is sub-TC? 17:06:28 hence the mention 17:06:31 Only if the cells are finite in size 17:11:15 if (a) {code}; -> while (a) { code; while (a) a-; } 17:11:35 We passed that point a long, long time ago. 17:11:50 ok just remembering 17:12:21 That's not sufficient in itself, because you can't do an else. 17:12:34 else is if not a 17:13:11 but you zeroed a at the end??? 17:13:13 How do you implement not? 17:13:19 that too 17:13:20 And what monqy said. 17:13:21 copy it 17:13:36 Copy what? 17:13:42 a to b 17:13:42 Oh, right. 17:13:52 This is kind of moot, because we've demonstrated that if-then-else is possible; see above. 17:14:09 another formulation 17:14:20 monqy: I think it's easy, yes, because you always know how far away you are from another variable. 17:14:28 But I'm not *quite* sure. 17:14:47 I'm erring on the side of the control flow being too weak. 17:16:21 a=1 while (b) { a = 0 ; B- } this is not 17:17:28 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 Phantom_Hoover: I'm not sure that's enough. 17:18:24 Balanced BF has that. 17:18:44 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 You can keep a variable called "check" in the while and just swap the value of check around 17:19:46 you can do logical and of two variables, and other connectives 17:19:49 I'm really not sure of that. 17:19:54 Never mind 17:20:00 Phantom_Hoover: Sure of what? 17:20:36 OK, so wait, can we assume that it's possible to implement the appropriate arithmetic functions to manipulate (appropriately-framed) bitstreams? 17:22:34 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 with add sub mult and div and loops maybe? 17:23:56 Yes; I'm confident that what we have is enough for those. 17:24:00 OK, so wait, can we assume that it's possible to implement the appropriate arithmetic functions to manipulate (appropriately-framed) bitstreams? 17:24:03 Phantom_Hoover: I'm sceptical. 17:24:21 Phantom_Hoover: Well, *2 is easy enough. 17:24:30 %2 as well. 17:24:37 I guess +1 is too. 17:24:47 /2? 17:24:55 Well, let's try it? 17:25:03 Phantom_Hoover: Can it be put(s,b) btw. 17:25:12 Yes, OK. 17:25:31 put(s,0) = { s'; while (s) { s'+; s'+; s- }; while (s') { s+; s'- } } 17:25:39 put(s,1) = { put(s,0); s+ } 17:25:57 Phantom_Hoover: Also take(s,b) to put it in b. 17:26:10 OK. 17:26:14 http://esolangs.org/wiki/Brainfuck_algorithms#x_.3D_x_.2F_y 17:26:21 while(b != zero) {b-;} while(a != zero){a-; a-; b+;} 17:26:21 Shhh. 17:26:45 Are we still talking about SumaMoito? 17:26:45 Phantom_Hoover: OK, divmod is quite tricky. 17:26:49 Ngevd: Yes. 17:26:52 -Z1. 17:27:01 Phantom_Hoover: It relies on overflow behaviour. 17:27:06 Phantom_Hoover: Actually, we could just do div and mod separately. 17:27:20 Phantom_Hoover: /2 is tricky. 17:27:27 while (s) { s-; s-; d+ } doesn't work. 17:27:33 Actually, it works in -Z2. 17:27:43 But isn't -Z1 the one we're considering? 17:27:45 The code I wrote there is the turns b into the ceiling of a/2 17:27:46 It's the simplest. 17:27:59 -Z2 17:28:06 -n 17:28:17 Proving one of them TC would be good enough for now, surely? 17:28:31 Could we do %2 in -z1? 17:28:39 Phantom_Hoover: Well, OK. 17:28:56 while (s) { s-; s-; d+ } 17:28:58 That's /2. 17:29:06 %2 is harder. 17:29:13 Well, we don't need d, actually. 17:29:17 while (s) { s-; s- } # obvious 17:29:19 Wait. 17:29:23 No, we do need d. 17:29:37 while (s) { s'+; s-; s- }; while (s') { s+; s'- } 17:29:45 The problem now is getting the remainder. 17:29:49 Ah, wait! 17:29:58 while (s) {s -; if(d){d-}{d+}} 17:30:05 while (s) { s'+; s-; if (s) { r+ } else { s- } }; while (s') { s+; s'- } 17:30:10 Ngevd: Ah, yes. 17:30:19 while (s) { s'+; s-; if (s) { s'-; r+ } else { s- } }; while (s') { s+; s'- } 17:30:31 Phantom_Hoover: OK, rewrite that with your if-then-else. 17:31:30 Ngevd, elliott, Phantom_Hoover, the Turing-Completeness people. 17:31:53 elliott, do I have to? 17:32:02 Can't we just say it's possible and leave it at that? 17:32:07 Wait, no, it's... 17:32:17 take(s,b) = { while (s) { s'+; s-; if (s) { s'- } else { b+; s- } }; while (s') { s+; s'- } } 17:32:18 Right? 17:32:24 As in, the remainder is on the other branch. 17:32:58 Phantom_Hoover: OK, let's assume it's possible. 17:33:02 Continue, sir. 17:35:07 So, we have +1, *2, /2, %2 17:35:36 :t break 17:35:37 forall a. (a -> Bool) -> [a] -> ([a], [a]) 17:35:43 > break (== '=') "a=b=c" 17:35:44 ("a","=b=c") 17:36:13 one difficult but possible thing is abs(A-B) in 3 langs 17:36:33 > braek (== '=') "a" 17:36:34 Not in scope: `braek' 17:36:37 > break (== '=') "a" 17:36:38 ("a","") 17:38:16 :t lookup 17:38:17 forall a b. (Eq a) => a -> [(a, b)] -> Maybe b 17:39:49 Right then. p = ; d = ; 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 Phantom_Hoover: Does that handle the "cyclic" part? 17:43:11 You mean the "program string cycles" part? 17:43:20 He does 17:43:52 If so, take(p,b); put(p,b); reappends instructions. 17:44:00 -!- Ngevd has quit (Quit: Goodbye). 17:44:59 Right. 17:45:09 OK, I guess it's TC then. 17:45:31 :) 17:47:26 another language? today is a good day 17:47:34 Phantom_Hoover: Better question: What's the minimum number of variables for it to be TC? 17:47:54 Phantom_Hoover: I can't tell from yours because you don't define most of your damn variables. 17:48:12 "Generic is a WIP language made by Tailcalled in a way that makes many concepts from Category Theory easy to define." 17:48:31 6? 17:48:37 Oh dear. 17:49:22 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 :( 17:53:32 Never forget about scanl, it's always waiting to jump on you when you least expect it. 17:53:32 Phantom_Hoover: So should I read Mac Lane. 17:53:57 :t replicateM 17:53:58 forall (m :: * -> *) a. (Monad m) => Int -> m a -> m [a] 17:54:10 :t scanl 17:54:11 forall a b. (a -> b -> a) -> a -> [b] -> [a] 17:54:16 > replicateM 3 "abc" 17:54:17 ["aaa","aab","aac","aba","abb","abc","aca","acb","acc","baa","bab","bac","b... 17:54:46 > replicateM_ 3 "abc" 17:54:47 [(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),()... 17:55:00 @src replicateM 17:55:00 replicateM n x = sequence (replicate n x) 17:55:27 @replicateM_ 17:55:27 Unknown command, try @list 17:55:34 @src replicateM_ 17:55:34 replicateM_ n x = sequence_ (replicate n x) 17:58:34 @src sequence 17:58:34 sequence [] = return [] 17:58:35 sequence (x:xs) = do v <- x; vs <- sequence xs; return (v:vs) 17:58:35 -- OR: sequence = foldr (liftM2 (:)) (return []) 18:00:54 Phantom_Hoover: So should I read Mac Lane. 18:01:20 Well, if you don't get put off by the examples being pretty obscure. 18:01:25 Obscure howso? 18:01:45 Maths. 18:02:16 They're generally either topological, set-theoretical or group-theoretical. 18:02:29 Phantom_Hoover: They should use practical examples instead, like counting change. 18:03:20 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 Well, OK, more than ~0 group theory. 18:06:21 Like, he defines and explains natural transformations in half a page, and then gives examples for the next two. 18:07:17 Phantom_Hoover: How far in did you get? 18:07:40 We should READ MAC LANE TOGETHER (N.B. this would be the most harrowing experience of your entire life). 18:07:40 Right now, '5. Monics, Epis and Zeros'. 18:08:28 Phantom_Hoover: Those are monomorphisms and epimorphisms! I know this because Wikipedia says so. 18:08:30 *Epics, presumably. 18:08:38 What chapter is that in? 18:08:40 Nope, it says Epis here. 18:08:45 It's not one of the chapters on http://en.wikipedia.org/wiki/Categories_for_the_Working_Mathematician, at least. 18:08:52 Phantom_Hoover: Heh, a typo I guess. 18:09:04 1. 18:09:06 -!- Ngevd has joined. 18:09:24 ('Mon' is obviously a popular syllable in category theory.) 18:09:36 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 Hello 18:09:58 Where are we up to? 18:10:10 Ngevd: Oh god. 18:10:14 Chapter 1, section 5. 18:10:25 Phantom_Hoover: *Chapter 0 section 0 18:10:34 we can have a mac lane party 18:10:39 elliott, you didn't even read the Amazon preview?? 18:10:44 monqy, friendship mac lane 18:10:49 Phantom_Hoover: I read the first few pages? Wait, did you actually BUY it? 18:10:54 hahahaha 18:10:54 no 18:10:55 Oh, pyrated. 18:11:03 I resent the implication. 18:11:11 im not cool enough for pyracy 18:11:17 OK maybe a Mac Lane party wouldn't be such a completely terrible idea? 18:11:19 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 BUT only cool people are invited (cool people are Phantom_Hoover and elliott). 18:11:46 We can all be objects and when we talk to each other they'll be morphisms 18:11:50 i need peer pressure for the mac lanes to sink in 18:11:52 (monqy is instead coole) 18:11:58 corollary: we're all insane 18:12:15 Or Sgeo, I suppose. 18:12:29 Sgeo what. 18:12:35 What is the wolrd coming to? 18:12:39 we're all sgeo 18:12:52 ALSO: overly fond of Chinese whispers. 18:13:00 Phantom_Hoover: I have no idea what you are saying. 18:13:33 elliott, obviously we all talk to ourselves, thus we're all really lonely and pathetic, thus Sgeo (sorry Sgeo). 18:13:39 Phantom_Hoover: Ah. 18:13:48 Where does Chinese whispers come into it. 18:14:12 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 It doesn't make sense otherwise. 18:16:23 I still don't know what's going on 18:16:40 Ngevd: death. 18:16:55 Death, the concept, the event, or the personification? 18:17:04 Every. 18:17:15 Ngevd, death, the category. 18:17:33 terribly sorrey but i've lost your will to live 18:17:37 (You're an object, if you kill someone it's an arrow.) 18:17:46 (Suicide is rife.) 18:17:48 I'm just going to stare into my working ( :-] ) Haskell program 18:18:06 whats a :-] 18:18:12 Robot smile. 18:18:20 also: stare into?? 18:18:24 Yes 18:18:30 does it stare back into you 18:18:33 No 18:18:38 I'm not that good a programmer 18:18:58 put an eye or two in the comments 18:19:01 you can be stare friends 18:19:32 There's a function called "isElementHaha" 18:20:14 put a mouth or two in the comments 18:20:19 you can be laugh friends 18:21:13 Dammit, monqy, now I'm thinking about AI 18:21:17 Also, dinnertime 18:21:18 Bye 18:21:19 -!- Ngevd has quit (Quit: Goodbye). 18:32:54 `logs (?:test) 18:32:57 ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: logs: not found 18:32:58 `log (?:test) 18:33:06 is this PCRE or....? 18:33:20 2010-12-13.txt:22:15:12: Anyone fancy thrashing this guy at his own programming contest? http://skybuck.org/BoxifyMe 18:33:39 ah yes 18:37:52 no 18:37:54 grep -P 18:43:43 weidest smiley ever 18:43:47 -!- Ngevd has joined. 18:43:50 Hello! 18:43:59 http://hpaste.org/56263 18:45:03 "both :: (a->b) -> (a,a) -> (b,b) 18:45:03 " 18:45:19 Phantom_Hoover: What of it? 18:45:21 Wait, the whitespace there is fine. 18:45:33 Well, there should be a space around the (->). 18:45:43 I think I have that thing where my sense of scale goes mad 18:45:48 Compiles fine 18:47:15 Phantom_Hoover: wat 18:47:22 I'm joking. 18:47:39 I thought there were two spaces somewhere. 18:50:06 "kallisti: Sounds RSIish." <-- here is something sitting in my input buffer. I have no idea what it means. 18:51:26 Sounds rsish. 18:51:35 Gregor: Probably kallisti complaining about his fatigue? 18:51:39 Is fatigue the word. 18:52:14 http://skybuck.org/BoxifyMe/ why aren't books written like this 18:53:25 good writing 18:53:38 Hey, I recall the BoxifyMe thing from comp.lang.c. 18:54:17 elliott: no complaining about muscle cramps in hands. 18:54:22 WebSplat time! 18:54:26 Gregor: you suggested that it may be repetitive strain injury 18:54:33 Oh yeah 18:54:40 kallisti: That's what I meant. 18:54:52 I already told kallisti it's probably either the beginnings of RSI and carpal tunnel and to consult a doctor :P 18:59:36 elliott: indeed 18:59:45 elliott: what's a good example of a comparison on CReals that doesn't terminate? 19:00:23 x == x 19:00:33 The loss of Havenworks is one of the great tragedies of our time. 19:00:50 What're CReals? 19:00:58 > 2 == 2 :: CReal 19:00:58 Couldn't match expected type `Data.Number.CReal.CReal' 19:00:59 against infe... 19:01:03 > 2 == (2 :: CReal) 19:01:03 True 19:01:05 Phantom_Hoover: Computable reals. 19:01:13 kallisti: That CReal just compares the first 200 digits or so. 19:01:20 It's evil. 19:01:25 gross 19:01:30 > pi :: CReal 19:01:31 3.1415926535897932384626433832795028841972 19:01:32 Same as show. 19:01:48 > (pi :: CReal) == (pi :: CReal) + (1/100000000000000) 19:01:49 False 19:01:52 > (pi :: CReal) == (pi :: CReal) + (1/10000000000000000) 19:01:53 False 19:01:55 > (pi :: CReal) == (pi :: CReal) + (1/10000000000000000000000000000000) 19:01:55 False 19:02:00 Okay, maybe it's doing something fancier. 19:02:02 But I don't know what. 19:02:07 @src pi 19:02:07 Source not found. Just try something else. 19:02:07 Phantom_Hoover: I think someone saved Havenworks. 19:02:19 Phantom_Hoover: Class method. 19:02:20 @src Floating 19:02:20 class (Fractional a) => Floating a where 19:02:21 pi :: a 19:02:21 exp, log, sqrt, sin, cos, tan :: a -> a 19:02:21 asin, acos, atan, sinh, cosh, tanh, asinh, acosh, atanh :: a -> a 19:02:21 (**), logBase :: a -> a -> a 19:02:26 -!- oklofok has joined. 19:02:34 elliott, I know, but I couldn't think of a better place to look. 19:02:56 Phantom_Hoover: Ugh; the Wayback Machine won't show Havenworks because the robots.txt request times out. 19:02:56 > (pi :: CReal) == (pi :: CReal) + ((1 :: CReal)/(10**400)) 19:02:57 True 19:03:07 ...despite the fact that http://havenworks.com/robots.txt loads... 19:03:30 instance Eq CReal where 19:03:30 x == y = s' (digitsToBits digits) == 0 where (CR s') = x-y 19:03:41 digitsToBits :: Int -> Int 19:03:41 digitsToBits d = ceiling (fromIntegral d * (logBase 2.0 10.0 :: Double)) + 4 19:03:54 digits :: Int 19:03:54 digits = 40 19:03:55 Havenworks... is that the site with Computer Stupidities? 19:04:08 No, it's not. 19:04:13 That's Rinkworks. 19:05:02 -!- oklopol has quit (Ping timeout: 255 seconds). 19:05:41 Disturbed that fizzie knows this. 19:06:23 How is that disturbing? 19:06:35 @hoogle var 19:06:35 Language.Haskell.TH.Syntax VarE :: Name -> Exp 19:06:36 Language.Haskell.TH VarE :: Name -> Exp 19:06:36 Language.Haskell.TH.Lib varE :: Name -> ExpQ 19:07:39 It's an old(ish) site, I think. 19:07:50 I've used their Fantasy Name Generator for my Diablo II characters. :p 19:16:35 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 `welcome anders 19:18:59 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 > sqrt 50 19:20:30 7.0710678118654755 19:20:32 ah I see 19:20:36 I forgot num includes abs 19:21:01 which requires sqrt for complex numbers. 19:22:04 > signum (2 :+ 2) 19:22:05 0.7071067811865475 :+ 0.7071067811865475 19:22:07 Hokay. 19:22:19 fizzie: It's sort of positive! 19:23:12 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 oh wait everything requires real number stuff 19:24:03 multiplication and division uses cosine. 19:24:15 and sine 19:25:22 Huh? (a+bi)*(c+di) = (ac-bd) + (bc+ad)i. 19:34:21 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 oklofok: While I, being such a square, obvious do. 19:38:26 i guess you could say these are complex issues XDXDXD 19:40:32 fizzie: polar form is just cartesian stuff with more trig. 19:40:36 * kallisti mathematician 19:40:55 it's an abstraction over sine and cosine. 19:40:57 so.. 19:41:00 yeah 19:41:17 okay you win 19:41:31 fizzie: are you in turku, wanna have a beer? 19:42:21 I don't beer :( :/ :\ and I don't Turku either. :( :/ :\ 19:43:10 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 I don't touch that Turku stuff. 19:43:19 Not being in Turku hasn't been a big problem so far. 19:43:37 `fetch http://sprunge.us/iKNC 19:43:40 2012-01-08 19:43:40 URL:http://sprunge.us/iKNC [395] -> "iKNC" [1] 19:43:57 fizzie, but what about all the friends you could have in Turku? 19:44:01 `run ghc -O2 -o bin/searchlog iKNC 19:44:08 target `iKNC' is not a module name or a source file 19:44:29 `run mv iKNC searchlog.hs; ghc -O2 -o bin/searchlog searchlog.hs; chmod +x bin/searchlog 19:44:45 >_> 19:44:46 kallisti: that thing is useless 19:44:49 ​[1 of 1] Compiling Main ( searchlog.hs, searchlog.o ) \ Linking bin/searchlog ... 19:44:55 elliott: it is? 19:45:08 well, it could be. I haven't tested it yet. 19:45:21 Also, it's broken. 19:45:39 > permutations ["some", "words"] 19:45:43 [["some","words"],["words","some"]] 19:45:55 elliott: it is? 19:46:00 Yes. 19:46:03 oh indeed. 19:46:06 one sec 19:47:51 `fetch http://sprunge.us/REKU 19:47:53 2012-01-08 19:47:53 URL:http://sprunge.us/REKU [441] -> "REKU" [1] 19:48:07 `run mv REKU searchlog.hs; ghc -O2 -o bin/searchlog searchlog.hs; chmod +x bin/searchlog 19:48:12 No output. 19:48:32 `searchlog elliott dicks 19:48:40 :0 19:48:53 elliott: how is it broken? I doubt we saw the same brokenness 19:49:05 No output. 19:49:21 oh I see... 19:49:39 it also doesn't pipe stdout correctly 19:49:43 :t join . map words 19:49:43 [String] -> [String] 19:49:51 :t concatMap words 19:49:52 [String] -> [String] 19:50:07 Does looking fondly upon m4 make me a deviant? 19:50:18 Phantom_Hoover: Only slightly. 19:50:18 kallisti: 19:50:22 I don't know enough about m4 to answer 19:50:22 createProcess (proc "/hackenv/bin/log" [r]) 19:50:26 Phantom_Hoover: I love m4. 19:50:34 It's the best! 19:50:40 elliott: yeah this is my first time using System.Process. 19:50:40 monqy: Autotools has M4 as one of the major implementation languages. 19:51:01 I now know enough about m4 to answer 19:51:08 :) 19:51:11 ah wait proc uses Inherit 19:51:29 so that should be fine. 19:51:37 monqy, listen not to pikhq, he knows not the awesome of m4. 19:51:53 I guess I'll 19:51:53 learn 19:51:54 m4 19:52:07 or 19:52:11 stare at it a bit and get bored 19:52:16 `which log 19:52:20 ​/hackenv/bin/log 19:52:46 elliott: I can't spot the wrongness. 19:52:48 Phantom_Hoover: The best part about m4 is that it has a command to redefine the core lexical syntax. 19:52:55 kallisti: You spawn a process and immediately terminate. 19:53:06 I remember a lot of that kind of thing. 19:53:08 ah 19:53:33 Phantom_Hoover: http://www.gnu.org/software/m4/manual/m4.html#Changeword 19:53:34 ah wait I should be using... rawSystem I think? 19:53:43 kallisti: No. 19:53:45 You should be waiting for the process 19:53:55 does rawSystem not do that? I guess not. 19:54:00 I think it's deprecated. 19:54:02 elliott, sure that's not just a GNU extension? 19:54:17 Phantom_Hoover: I think it is, but who cares? 19:54:43 elliott: sorry perl 19:54:54 changequote is there by default, I think. 19:55:35 kallisti: What? 19:56:17 a perl which is sorry 19:56:23 a sorry perl 19:56:41 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 since they're... equivalent 19:57:17 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 +what I 19:57:28 Just think of it like subprocess. 19:57:33 yes 19:57:43 there's no confusion on what it means. now. 19:58:03 monqy will enjoy this: 19:58:07 `fetch http://sprunge.us/WBad 19:58:09 2012-01-08 19:58:09 URL:http://sprunge.us/WBad [510] -> "WBad" [1] 19:58:23 hi 19:58:26 wbad 19:58:32 `run mv WBad searchlog.hs; ghc -O2 -o bin/searchlog searchlog.hs; chmod +x bin/searchlog 19:58:47 Linking bin/searchlog ... 19:58:48 is it an omen 19:58:54 `searchlog elliott penis #hurr hurr 19:59:11 `searchlog poop fart 19:59:20 `searchlog `searchlog 19:59:22 elliott: but is the regex building logic accurate? 19:59:27 I think it is but I'm not sure. 19:59:27 No output. 19:59:31 oopse 19:59:37 "congrates" 19:59:41 2012-01-08.txt:19:59:20: `searchlog `searchlog 19:59:41 2012-01-08.txt:19:59:11: `searchlog poop fart 19:59:42 "wbad" 19:59:47 oh no,,, 19:59:51 kallisti: maybe try not search for comment 19:59:54 `searchlog poop fart butt 19:59:55 indeed 20:00:00 `searchlog poop 20:00:03 it got the order scrombled 20:00:14 anyway you can use (...|...|...) for or, and then spaces provides and 20:00:15 2012-01-08.txt:19:59:54: `searchlog poop fart butt 20:00:15 2011-05-01.txt:20:58:53: poop CH 20:00:19 assuming it works. 20:00:56 `searchlog kallisti moron 20:01:03 2011-12-17.txt:01:58:51: kallisti: concatMap is recursive, you moron 20:01:16 elliott: see? totally useful. 20:01:22 Yes. 20:01:30 `searchlog kallisti moron 20:01:37 2012-01-08.txt:20:00:56: `searchlog kallisti moron 20:01:39 I guess if you want actual spaces you can use \s instead 20:01:39 this is exciting 20:01:43 `searchlog CakeProphet moron 20:01:50 2012-01-08.txt:20:01:43: `searchlog CakeProphet moron 20:01:59 tool of the year 20:01:59 monqy: yes so exciting 20:02:13 `searchlog kallisti nominated tool of the year 20:02:17 but uh, does it actually work correctly? 20:02:21 this is the thing that I want to know. 20:02:43 `searchlog moron kallisti 20:02:46 No output. 20:02:51 2012-01-08.txt:20:00:56: `searchlog kallisti moron 20:02:55 appears to. 20:03:58 -!- Ngevd has quit (Ping timeout: 276 seconds). 20:04:08 `searchlog a b c d e f g h i j k l m combinatiorial explosion? 20:04:14 fizzie: nooooooooo 20:04:17 `searchlog hi 20:04:34 fizzie: so many permutations... 20:04:45 No output. 20:04:47 `searchlog ) 20:04:53 grep: unmatched parentheses 20:04:54 No output. 20:04:55 monqy: noooooooo 20:05:07 continue thinking of the terms as regexes. 20:05:13 `searchlog ( 20:05:14 because they are. 20:05:16 grep: missing ) 20:05:27 grep excitement 20:05:33 I gotteded a "killed" when I tried the explosion in private, I was hoping for that now too. :/ 20:05:45 fizzie: *a b c d e f g h i j k l m n big-O notation 20:06:00 > permutations . words $ "a b c d e f g h i j k l m combinatorial explosion?" 20:06:01 [["a","b","c","d","e","f","g","h","i","j","k","l","m","combinatorial","expl... 20:06:12 well that part was reasonably fast actually. 20:06:22 ... 20:06:26 because you only evaluated the first element 20:06:31 oh, yes. 20:06:43 yes, Haskell. right. 20:06:44 `searchlog thanks kallisti 20:07:03 2011-12-15.txt:18:36:22: thanks to emacs. 20:07:10 elliott: is this another +1 towards "kallisti's bad algorithms" 20:07:13 tool of the yesteryear 20:07:36 you could write a book 20:07:42 `searchlogs thallisti 20:07:46 ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: searchlogs: not found 20:08:02 > length . permutations . words $ "a b c d e f g h i j k l m combinatorial explosion?" 20:08:06 mueval-core: Time limit exceeded 20:08:10 Bah, it's just 1307674368000 permutations. 20:08:19 That's one big quitter-bot. 20:08:37 `searchlogs core mueval exceeded limit time 20:08:40 ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: searchlogs: not found 20:09:15 hmmm I wonder if it would be faster if I switched out the "|" and ".*" 20:10:08 who will write the wrapper over searchlog 20:10:15 and what will it do 20:10:19 2012 mysteries 20:10:34 monqy: ...I guess I could just use grep directly... 20:10:54 but why do that? 20:10:56 nih grep 20:10:58 when there's already logs 20:12:00 guys I bet this is the same algorithm Google uses. 20:12:26 they should hire me so I can make the big $$$ 20:12:39 `fetch http://sprunge.us/EEVG 20:12:39 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 2012-01-08 20:12:41 URL:http://sprunge.us/EEVG [510] -> "EEVG" [1] 20:13:19 `run mv EEVG searchlog.hs; ghc -O2 -o bin/searchlog searchlog.hs; chmod +x bin/searchlog 20:13:27 No output. 20:13:30 kallisti: By the way, searchlog always gets exactly one (1) log. 20:13:37 Oh, you map words it. 20:13:40 Why not concatMap words? 20:13:46 elliott: lazy 20:13:49 I already wrote it 20:13:52 didn't consider using that 20:14:00 now it's SET IN STONE 20:15:05 `searchlog mueval time limit 20:15:18 2011-02-03.txt:08:07:29: mueval-core: Time limit exceeded 20:15:26 elliott: what do you mean. 20:15:50 What? 20:15:53 `run paste `which log` 20:15:57 http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.2434 20:16:12 elliott: why does it always get exactly one log. 20:16:13 -!- oerjan has joined. 20:16:58 `Uh? 20:17:01 ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: Uh?: not found 20:17:02 Because that's how it works. 20:17:12 I don't know what you mean. 20:17:16 `? Uh? 20:17:19 oh, you mean like that. why is that important? that's obvious. 20:17:20 Uh?? ¯\(°_o)/¯ 20:17:55 kallisti: I don't understand what you mean. 20:18:15 oh you neverminded that. 20:18:21 I promise I actually read this channel 20:18:28 (with psychic powers) 20:18:34 maybe my psychic is a little rusty. 20:18:45 `? ¯\(o_°)/¯ 20:18:48 ​¯\(o_°)/¯? ¯\(°_o)/¯ 20:18:50 psychic grammar is all weird with quantum 20:20:12 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 you cannot observe the subject and object simultaneously 20:20:53 Oh. 20:20:55 kallisti: By the way, searchlog always gets exactly one (1) log. 20:20:57 s/log/search term/ 20:21:08 ah okay. 20:21:11 yes. 20:21:22 (but no, as past elliott discovers) 20:21:48 `ls bin/searchlog 20:21:52 bin/searchlog 20:21:58 searchlog should parallel for the future. 20:22:01 `cat bin/searchlog 20:22:03 also it should make goofy words. 20:22:04 ​ELF... 20:22:06 eek 20:22:11 monqy: oh, parallel, that's a good idea actually. 20:22:16 I think? 20:22:22 maybe that's slower than doing one traversal? 20:22:22 Not at HackEgo speeds. 20:22:29 Also, not for IO-bound tasks, duh. 20:22:36 oh, right. 20:22:37 `cat bin/log 20:22:39 oerjan: cat searchlog.hs 20:22:40 ​#!/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 parallel io 20:22:49 `cat searchlog.hs 20:22:52 "double the fun" 20:22:53 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 wait searchlog calls log? 20:24:08 yes 20:24:23 it builds a regex from the permutations of the search terms, and then passes that to log because I'm lazy. 20:24:24 but who calls searchlog 20:24:28 who watches... 20:24:29 the searcmen 20:24:32 searchmen 20:24:47 elliott: shouldn't that be "who searches the searchmen"? 20:25:36 searchlog efficiency of the year 20:25:42 `searchlog (elliott|Gregor) :P 20:25:54 2011-08-16.txt:12:52:57: (Though not many. :p) 20:26:05 kallisti: dude it's 20:26:05 dude 20:26:13 if only I had the creativity to think of search terms, then I could do all the searches 20:26:15 yes dude is dude. 20:26:18 if you think it should be that then you are totally not getting this whole 20:26:18 thing 20:26:29 elliott: woah man. maybe you're right 20:26:32 maybe I don't get the thing. 20:26:33 what is the thing? 20:26:34 `searchlog beeswax endomorphism excursion 20:26:44 2012-01-08.txt:20:26:34: `searchlog beeswax endomorphism excursion 20:26:48 `searchlog poop poop poop poop poop poop poop ... poop 20:26:58 monqy: what would be a more efficient way to do that... aside from "manually" 20:27:06 Killed 20:27:28 slaves 20:28:02 slaves with grep 20:28:19 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 *pretty sure 20:29:03 (a|b|c).*(b|c|a).* ... seems... simpler to execute 20:29:17 it would probably be faster if log didn't use -P 20:29:18 uuh waht 20:29:37 elliott: but then I wouldn't have perl regex 20:29:40 :( 20:30:50 what's the point of building (a|b|c).*(b|c|a).* ... 20:31:27 as opposed to? 20:32:02 that would seem to give also results like a.*a.* ... ? 20:32:18 ((a|b|c).*)+, or even better (a|b|c).*, or even better, (a|b|c) 20:32:53 maybe I'm not getting the magical perl regex magic 20:32:54 i.e. no guarantee there is any b or c in it... 20:32:59 what are those funky things 20:33:17 yeah there's no guarantee and all of the permuatations are identical 20:33:19 oerjan: oh right. 20:33:29 etc etc 20:34:15 monqy: the purpose is to do an and search instead of or search 20:34:29 yes but it doesn't 20:34:32 well you did it wrong :( 20:34:33 yes 20:34:52 yes with the swapped version 20:34:55 the other one works correctly 20:35:31 `fetch http://sprunge.us/ZLCT 20:35:35 2012-01-08 20:35:35 URL:http://sprunge.us/ZLCT [510] -> "ZLCT" [1] 20:35:41 not as cool as wbad 20:35:51 `run mv ZLCT searchlog.hs; ghc -O2 -o bin/searchlog searchlog.hs; chmod +x bin/searchlog 20:36:00 No output. 20:36:12 I forgot the case where it could be a.*a.*a and such 20:37:26 `searchlog useful again 20:37:49 2008-03-29.txt:20:06:49: 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 success 20:38:09 does it say 20:38:09 useful 20:38:30 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 I don't see a useful 20:39:26 perhaps it gets cut off? 20:39:48 `searchlog mueval limit core 20:40:00 2011-08-07.txt:06:40:12: mueval-core: Time limit exceeded 20:40:02 i don't see an again either so i'll look and see what the rest was 20:40:17 oerjan: good topic 20:40:34 try again' condition, useful mainly in Concurrent Funge.) If the cell in s 20:40:40 has both again and useful!!! success!!! 20:40:52 * elliott is currently 192.322581 times better than kallisti. 20:40:58 elliott: thx 20:43:40 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 what 20:44:20 like.... 20:44:27 CPython_PyObject_blah_blah 20:44:40 basically making up for a lack of namespaces by hardcoded them into variable names. 20:45:09 it has a name. 20:45:40 Hungarian notation 20:45:45 That's not it. 20:46:10 kallisti: that's not appending. 20:48:31 Hungarian notation is responsible for the hInstance lpClassName dwStyle -like Windows API parameter/structure-member names. 20:49:11 oh 20:49:14 nevermind 20:50:33 fizzie: Systems Hungarian, rather. :p 20:50:44 Not that Apps is any better. 20:52:34 Forcing myself to use a fold on a tricky thing makes me understand it better, I think 20:52:37 Sgeo: Have you considered using a fold... ON FOLDS THEMSELVES? 20:53:36 shachaf: Can you implement foldr as a foldr??? 20:54:01 foldr f z = foldr (\a r -> f a (r ())) (\() -> z) 20:54:13 elliott: Whoa, man. That is, like, so meta. 20:54:17 Using a fold ON FOLDS THEMSELVES => http://www.mspaintadventures.com/?s=4&p=000944 20:55:06 fizzie: I don't get it. 20:55:16 Probably because it's that awful comic. 20:55:50 It's not that awful comic, actually. 20:55:59 It's the other awful comic. 20:56:14 * elliott helpful. 20:56:21 the other awful comic that isn't either of those other two awful comics 20:56:22 Oh. 20:56:29 That's that awful comic, then? 20:56:29 keep it straight 20:56:44 shachaf: No! It's the other awful comic. 20:56:50 monqy: Dude, don't be, like, so intolerant, man. 20:56:54 elliott: s/That's/What's/ 20:57:15 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 how can i tolerate awful comics being other awful comics 20:57:22 how is that tolerable 20:57:22 how 20:57:46 monqy: keep it straight 20:57:53 nothing is tolerable, really 20:58:11 elliott: did i oops a word 20:58:14 :( 20:58:21 everyone oopsedes a word 20:58:21 sometimes 20:58:29 sorry to any awful webcomics i may have offended 20:58:30 oerjan: not true i'm sitting right here tolerating 20:58:31 oerjan: 0 is well within the tolerances. 20:58:33 its ok 20:58:33 monqy: station v3 20:58:38 is it really 20:58:38 ok 20:58:39 for station v3 20:58:42 is anything really 20:58:43 ok 20:58:44 for station v3 20:59:09 elliott: aum 21:00:52 a special shame set aside for station v3 21:01:10 station v3 shame 21:01:48 shame station v3 21:06:43 > fix$('0':).tail.(<**>[id,chr.xor 1.ord]) 21:06:45 "01101001100101101001011001101001100101100110100101101001100101101001011001... 21:08:09 I don't like how you can't tell what the Applicative combinators do from their types. 21:08:43 @ty (<*>) 21:08:44 forall (f :: * -> *) a b. (Applicative f) => f (a -> b) -> f a -> f b 21:08:45 @ty (<**>) 21:08:46 "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 forall (f :: * -> *) a b. (Applicative f) => f a -> f (a -> b) -> f b 21:08:48 ...most of them do their actions left to right, no? 21:08:56 But is (<**>) = flip (<*>)? No! 21:09:00 oerjan: *all 21:09:08 Right, but so what? 21:09:17 elliott, is this for OCR or something? 21:09:23 shachaf: Consistent rule and the rest is left up to types? Gosh, how awful. 21:09:25 elliott, and it doesn't make any sense 21:09:26 Anyway, left-to-right is racist. 21:09:30 Vorpal: no, it's about crumpled paper, and that's why i quoted it 21:09:44 elliott, what does crumpled paper have to do with computers? 21:10:03 Vorpal: They (computers) can't get over it (crumpled paper). 21:10:12 Vorpal: Or so I read it. 21:10:14 fizzie, ah okay. Right 21:10:29 shachaf: no, racist is the pun i briefly considered responding to that with 21:10:30 It's just that they can't. Want to break a computer? Crumpled paper. 21:11:08 also, is there a shorter way to write chr.xor 1.ord 21:11:20 erm... 21:11:23 instance Num Char 21:11:23 what are you doing :P 21:11:25 xor 1 21:11:28 @ty xor 21:11:29 forall a. (Bits a) => a -> a -> a 21:11:30 I made a list (good = unsafeCoerce good : good) then regretted it 21:11:33 s/Num/Bits/ 21:11:38 monqy: that's 21:11:40 what is that 21:11:44 good 21:11:48 :t xor.chr 21:11:49 No instance for (Bits Char) 21:11:49 arising from a use of `xor' at :1:0-2 21:11:49 Possible fix: add an instance declaration for (Bits Char) 21:12:06 Prelude Unsafe.Coerce> let good = unsafeCoerce good : good :: [[[[()]]]] 21:12:06 Prelude Unsafe.Coerce> take 10 good 21:12:06 [[[[(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),() 21:12:06 ,(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),() 21:12:10 ,(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),() 21:12:11 No, there's no such instance. 21:12:15 ,(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),() 21:12:20 ,(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(), 21:12:23 monqy: good 21:12:25 oerjan: are you playing anagolf :P 21:12:26 elliott: Maybe in another couple of lines we'll understand. 21:12:31 Why did you stop pasting?! 21:12:38 shachaf: Because I don't want you to understand. 21:13:10 :-( 21:13:25 elliott: just golfing some frequent one-liners a bit differently 21:13:41 shachaf: I wrote over 10 paragraphs about monads without a single analogy! 21:13:44 Do I get a medal? 21:14:27 elliott: I think you get kicked out of #haskell for life. 21:14:42 Which is even better than a medal, as far as quality-of-life goes. 21:14:53 What were you writing about monads? 21:15:23 > show<=[id,(1-)]) 21:15:25 "01101001100101101001011001101001100101100110100101101001100101101001011001... 21:15:27 shachaf: http://stackoverflow.com/questions/8777216/how-do-you-identify-monadic-design-patterns 21:15:34 shachaf: The worst-titled question ever. 21:15:38 oerjan: (range ((minBound :: Char),(maxBound :: Char)) !!) . xor 1 . index ((minBound :: Char),(maxBound :: Char)) OH WAIT you said *shorter*. 21:15:58 You don't need those ::Chars. 21:16:02 * oerjan swats fizzie -----### 21:16:04 elliott: That URL doesn't make me want to click on it. 21:16:07 @src Ix 21:16:08 class (Ord a) => Ix a where 21:16:08 range :: (a,a) -> [a] 21:16:08 index :: (a,a) -> a -> Int 21:16:08 inRange :: (a,a) -> a -> Bool 21:16:08 rangeSize :: (a,a) -> Int 21:16:19 fizzie: How does (range x !!) differ from index x. 21:16:24 shachaf: It's not that bad. 21:16:41 it got shorter by using integers and show<=<, anyhow 21:16:58 oerjan: pretty 21:17:06 > show<=[id,(1-)]) 21:17:08 "00101100110100101101001100101100110100110010110100101100110100101101001100... 21:17:16 hmph 21:17:22 What's this supposed to be? 21:17:24 there must be some way to eliminate that... 21:17:39 I would read the source that generates it but I don't feel like it. 21:17:46 Too long. 21:17:53 shachaf: thue-morse sequence 21:18:05 oerjan: How about look-and-say? 21:18:27 elliott: Isn't it the other way around? I mean, 21:18:28 @ty ((range ('a','b') !!), index ('a','b')) 21:18:29 (Int -> Char, Char -> Int) 21:18:34 Oh, that. 21:18:57 fizzie: Oh, yes. 21:19:31 > group "112333" 21:19:32 ["11","2","333"] 21:19:35 elliott: i dabbled with that yesterday and didn't get satisfied 21:19:47 @hoogle (a -> b) -> a -> (a,b) 21:19:48 Control.Monad.Writer.Class listens :: MonadWriter w m => (w -> b) -> m a -> m (a, b) 21:19:48 Control.Monad.Writer.Lazy listens :: MonadWriter w m => (w -> b) -> m a -> m (a, b) 21:19:48 Control.Monad.Writer.Strict listens :: MonadWriter w m => (w -> b) -> m a -> m (a, b) 21:19:53 :t groupBy 21:19:54 forall a. (a -> a -> Bool) -> [a] -> [[a]] 21:19:58 > group "112333" 21:19:59 ["11","2","333"] 21:20:06 > (length &&& head) group "112333" 21:20:07 Couldn't match expected type `t1 -> t' 21:20:07 against inferred type `(GHC.... 21:20:08 > (length &&& head) $ group "112333" 21:20:08 (3,"11") 21:20:13 wtf 21:20:13 oh 21:20:17 > (length &&& head) <$> group "112333" 21:20:18 [(2,'1'),(1,'2'),(3,'3')] 21:20:38 > (\xs -> show (length x) ++ head x) <$> group "112333" 21:20:39 Couldn't match expected type `[a]' 21:20:39 against inferred type `SimpleRef... 21:20:44 > (\xs -> show (length x) ++ [head x]) <$> group "112333" 21:20:44 Couldn't match expected type `[a]' 21:20:45 against inferred type `SimpleRef... 21:20:46 wtf 21:20:47 oh 21:20:50 > (\x -> show (length x) ++ [head x]) <$> group "112333" 21:20:51 ["21","12","33"] 21:21:10 > liftA2 (++) (show . length) head <$> group "112333" 21:21:11 Couldn't match expected type `[GHC.Types.Char]' 21:21:11 against inferred ty... 21:21:21 > liftA2 (++) (show . length) (take 1) <$> group "112333" 21:21:22 ["21","12","33"] 21:21:46 > concatMap((++)<$>show.length<*>take 1).group$"112333" 21:21:48 "211233" 21:21:50 > join.map((++)<$>show.length<*>take 1).group$"112333" 21:21:52 "211233" 21:22:04 > iterate$join.map((++)<$>show.length<*>take 1).group 21:22:05 Overlapping instances for GHC.Show.Show 21:22:05 ([GHC.... 21:22:06 :t iterate$join.map((++)<$>show.length<*>take 1).group 21:22:07 [Char] -> [[Char]] 21:22:17 > (iterate$join.map((++)<$>show.length<*>take 1).group)"1" 21:22:19 ["1","11","21","1211","111221","312211","13112221","1113213211","3113121113... 21:22:27 > (join.iterate$join.map((++)<$>show.length<*>take 1).group)"1" 21:22:28 Couldn't match expected type `a -> a' against inferred type `[a]' 21:22:36 > join.(iterate$join.map((++)<$>show.length<*>take 1).group)"1" 21:22:37 Couldn't match expected type `[a]' 21:22:37 against inferred type `GHC.Types... 21:22:38 > join.(iterate$join.map((++)<$>show.length<*>take 1).group)$"1" 21:22:41 "11121121111122131221113112221111321321131131211131221132113111231131122111... 21:22:44 > join$(iterate$join.map((++)<$>show.length<*>take 1).group)"1" 21:22:46 "11121121111122131221113112221111321321131131211131221132113111231131122111... 21:22:49 > (>>=liftA2(++)(show.length)(take 1)).group$"112333" 21:22:50 oerjan: that's not bad imo 21:22:51 "211233" 21:22:57 shachaf: oh, very good 21:23:02 elliott: look-and-say isn't usually joined together like that 21:23:07 oerjan: well ok 21:23:19 > iterate(>>=((++)<$>show.length<*>take 1).group))"1" 21:23:20 : parse error on input `)' 21:23:22 > iterate(>>=((++)<$>show.length<*>take 1).group)"1" 21:23:23 Couldn't match expected type `GHC.Types.Char' 21:23:23 against inferred type... 21:23:29 shachaf: i think liftA2 is longer 21:23:41 Probably. 21:23:53 > iterate((>>=(++)<$>show.length<*>take 1).group)"1" 21:23:54 ["1","11","21","1211","111221","312211","13112221","1113213211","3113121113... 21:24:11 > iterate((>>=(show.length)++(take 1)).group)"1" 21:24:12 ["1","11","21","1211","111221","312211","13112221","1113213211","3113121113... 21:24:13 > iterate(join.:lift[show.length,take 1]<= Couldn't match kind `(* -> *) -> * -> *' against `?? -> ? -> *' 21:24:19 oops 21:24:25 what was it i did yesterday 21:24:29 > iterate((>>=show.length++take 1).group)"1" 21:24:30 ["1","11","21","1211","111221","312211","13112221","1113213211","3113121113... 21:24:33 awesome 21:24:55 duh caleskell ++ 21:25:03 right 21:25:16 oerjan: I THINK YOU MEAN caleskell++ 21:25:21 @karma+ caleskell 21:25:21 caleskell's karma raised to 2. 21:25:31 > iterate(group>=>show.length++take 1)"1" 21:25:32 ["1","11","21","1211","111221","312211","13112221","1113213211","3113121113... 21:25:37 i think i win 21:25:48 darn i was going to do that :P 21:26:19 shachaf: we found another use of (>=>) 21:26:37 oerjan: the nice part is that it's still easy to understand 21:26:47 in fact it's even in the right order for reading naturally and all that 21:27:04 elliott: More like a reason (>=>) shouldn't be in the stdlib. 21:27:20 And by stdlib I mean stdlib.h. 21:27:57 :t (>=>) 21:27:58 forall a (m :: * -> *) b c. (Monad m) => (a -> m b) -> (b -> m c) -> a -> m c 21:28:04 hm 21:28:34 kleisli composition 21:29:36 elliott, ah 21:30:17 That helped? 21:30:35 oerjan: i conjecture that iterate(group>=>show.length++take 1)"1" is the shortest caleskell look and say prorgam :P 21:30:38 prorgam 21:30:42 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 "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 llo 21:31:03 night → 21:31:03 lol 21:31:10 Vorpal: it's just 21:31:15 (f >=> g) x = f x >>= g 21:32:02 -!- zzo38 has joined. 21:32:38 elliott, not sure why they would add a special name for that. It doesn't really save that much typing 21:32:59 Vorpal: it has nice theoretical properties 21:33:05 e.g. the monad laws are just 21:33:06 And it makes the monad laws so much nicer. 21:33:09 "return is identity for kleisli composition" 21:33:10 and 21:33:14 elliott: CURSES 21:33:14 "kleisli composition is associative" 21:33:21 elliott, ah 21:33:42 and also it saves so much typing??? 21:33:47 > iterate(group>=>show.length++take 1)"1" 21:33:48 so much 21:34:01 oerjan: what other nice sequences are there... 21:34:18 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 @quote kmc mathematicians 21:34:40 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 heh 21:35:17 1echo a 21:35:18 `echo a 21:35:23 a 21:35:30 @remember `echo blah blah blah 21:35:30 Good to know. 21:35:33 @quote `echo 21:35:34 `echo says: blah blah blah 21:35:37 says: blah blah blah 21:35:37 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 @forget `echo blah blah blah 21:35:47 Done. 21:35:55 hence why i keep ramming against the berlin wall of programming 21:36:14 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 O, so the people who designed Haskell are almost programmers and almost mathematicians. 21:40:22 ive been analyzing myself a bit 21:40:27 @hoogle (a -> a) -> a -> [a] 21:40:28 Prelude iterate :: (a -> a) -> a -> [a] 21:40:28 Data.List iterate :: (a -> a) -> a -> [a] 21:40:28 Data.Generics.Schemes everywhere :: (forall a. Data a => a -> a) -> (forall a. Data a => a -> a) 21:40:51 oerjan: did you really need to hoogle that 21:40:57 no. 21:41:04 its a bit like bush writing a heartfelt essay on why he was president for so many terms 21:41:06 elliott: You should be in #haskell. 21:41:09 i was hoping for some almost-hits 21:41:09 It makes one happier. 21:41:16 @hoogle+ 21:41:16 Data.Generics.Schemes everywhere' :: (forall a. Data a => a -> a) -> (forall a. Data a => a -> a) 21:41:16 Prelude until :: (a -> Bool) -> (a -> a) -> a -> a 21:41:17 Prelude map :: (a -> b) -> [a] -> [b] 21:41:31 i was thinking of until 21:41:40 oerjan: I was going to remind you of until. 21:41:41 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 shachaf: FSVO happier? 21:41:58 itidus21: 2 is so many now? :P 21:42:09 it is 21:42:20 elliott: Just imagine talking to people who "just want to convert an Integer to a ByteString"! 21:42:25 @hoogle+ 21:42:25 Data.List map :: (a -> b) -> [a] -> [b] 21:42:25 Control.OldException mapException :: (Exception -> Exception) -> a -> a 21:42:26 Prelude ($) :: (a -> b) -> a -> b 21:42:27 shachaf: unsafeCoerce 21:42:39 Funny, that's the first answer that was given. 21:42:52 Followed by pack . return . fromInteger. 21:42:53 elliott, why are SO rep useful? 21:42:55 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 Vorpal: They aren't useful. However, they are SO useful. 21:43:11 Vorpal: Why is life useful? 21:43:18 Why is humanity useful? 21:43:19 elliott, it isn't 21:43:23 Why is chocolate useful? 21:43:31 not at all, we just pollute and such 21:43:34 So to answer your question, SO rep is useful because it's delicious and made of cocoa beans. 21:43:41 FSVO "just". 21:43:42 You have to answer all these questions with other questions: useful in what way? 21:43:54 elliott, also chocolate isn't useful either 21:44:00 so rep is useful because it pollutes and such 21:44:02 itidus21: Yeah, girls just can't compare to the magic of a stove. 21:44:04 > fix.("1":).map$group>=>show.length++take 1 --just a bit too long 21:44:05 Couldn't match expected type `a -> a' 21:44:05 against inferred type `[[GHC.... 21:44:11 and wrong besides :P 21:44:27 :t fix.("1":).map 21:44:28 Couldn't match expected type `a -> a' 21:44:28 against inferred type `[[Char]]' 21:44:28 In the first argument of `(.)', namely `("1" :)' 21:44:28 "who's been a naughty stove?" 21:44:40 oerjan: ooh what about my favourite sequence 21:44:42 can stoves be naughty 21:44:48 :t fix.("1":).:map 21:44:49 oerjan: the self-avoidant sequence 21:44:49 ([Char] -> [Char]) -> [[Char]] 21:44:52 *avoiding i think 21:44:54 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 > fix.("1":).:map$group>=>show.length++take 1 --just a bit too long 21:44:58 ["1","11","21","1211","111221","312211","13112221","1113213211","3113121113... 21:45:01 monqy: during certain erotic fantasy 21:45:03 I think that would solve so many problems. 21:45:25 oerjan: where you build a markov model of increasing order of your own output so far 21:45:33 and output the least likely next bit 21:45:39 elliott: okay 21:45:40 elliott, what the self-avoidant sequence? 21:45:43 Vorpal: ^ 21:45:46 ah 21:45:56 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 elliott, that sounds interesting 21:46:09 Vorpal: it basically produces random-looking output 21:46:15 i don't know if it's "really" (pseudo)random 21:46:17 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 in the process i thought up a game based on hoarding. 21:46:28 elliott, probably isn't. 21:46:47 Vorpal: well you can consider it a reasonable mathematical /definition/ of a random sequence 21:46:48 elliott, anyway wouldn't it end up cycling a lot? 21:47:00 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 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 well, you can predict it 21:47:09 but not with a markov model :) 21:47:11 Vorpal: nope 21:47:17 that's why you increase the order each step 21:47:18 the idea is that you have more fun collecting the levels than actually playing them 21:47:20 -!- atrapado has joined. 21:47:23 elliott, ah 21:47:32 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 argumentum ad naivety 21:48:06 5 minutes in the player says to himself, dear god what am i doing? 21:48:07 elliott: NOPE 21:48:15 oerjan: :( 21:48:30 zzo38: agda supports empty pattern-matching :) 21:48:41 oerjan: what about the paper-folding sequence 21:48:52 elliott, which one is that? 21:49:30 00:28:30 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 shachaf: Hey, a reason to dislike RWH more! 21:49:43 Vorpal: http://en.wikipedia.org/wiki/Regular_paperfolding_sequence 21:49:55 elliott: Well, I am glad they fixed that! But still, they should also fix GHC to support empty case blocks 21:49:56 please can someone review my proof of that SumaMoito-N is Turing-complete? http://esolangs.org/wiki/SumaMoito#Computational_class 21:50:22 elliott: Obviously that excalamation mark is just moved over by 7 characters. 21:50:26 EXCALAMATION! 21:50:45 elliott, nice 21:50:46 Anyway, if it was 7 characters to the left it would make sense. 21:51:10 elliott, I wonder if there is an irregular paperfolding sequence 21:51:42 atrapado: It's correct, yes. 21:51:47 oh, good 21:51:52 N is a pretty trivial extension of Z2. 21:52:15 Are you sure the decrements are the same though? 21:52:21 I thought N made the value the same when underflowing. 21:52:25 Oh, Z2 does to. 21:52:26 too. 21:52:39 Oh, it doesn't have decrement. 21:52:41 I didn't notice that :) 21:53:02 Yes, assuming the decrement function is right, it's correct. I think you can make it simpler though. 21:53:03 i am not ocmpletely sure that it is correct, elliott 21:53:05 atrapado, what about Z1? 21:53:12 Z1... 21:53:16 more complicated 21:53:19 negative values 21:53:21 I see 21:53:47 atrapado, also that mapping from Z2 to N seems trivial 21:53:48 atrapado: tmp1; out; tmp1+; while (tmp1 != in) { out+; tmp1+ } 21:53:54 That decrements out into in. 21:53:55 why are there even two languages? 21:53:56 Er. 21:53:58 In into out. 21:54:00 out = in - 1 21:54:09 and if it is 0 ? 21:54:24 atrapado: Oh, it doesn't halt. But that's easy... 21:54:42 atrapado: tmp1; out; tmp1+; while (in != out) { while (tmp1 != in) { out+; tmp1+ } } 21:54:57 :t zap 21:54:58 Not in scope: `zap' 21:55:00 :t zapp 21:55:01 Not in scope: `zapp' 21:55:06 wat 21:55:25 zap? 21:55:37 just zipWith id 21:55:52 i do not understand fully your algorithm, elliott , but do not doubt of its correcness.... 21:56:01 oerjan, why would you call that zap? 21:56:04 atrapado: Well, it's basically 21:56:08 :t zipWith id 21:56:09 forall b c. [b -> c] -> [b] -> [c] 21:56:11 atrapado: for (int i = 1; i < in; i++) out++ 21:56:20 -!- yiyus has quit (Ping timeout: 248 seconds). 21:56:24 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 Vorpal: because it's <*> for ZipList 21:56:40 oerjan, I see. Not sure why it would be called zap still 21:56:42 ok 21:56:46 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 So out != in. 21:56:57 So it's equivalent to if (in != 0). 21:57:02 ah 21:57:07 more clear to me 21:57:16 good 21:57:50 (Disclaimer: Writing code like this is bad for your health.) 21:58:04 Vorpal: because (<*>) = ap 21:58:09 yes, it is itself obfuscated 21:58:14 oerjan, oh, right 21:58:31 Vorpal: APply 21:58:58 :t app 21:58:59 forall (a :: * -> * -> *) b c. (ArrowApply a) => a (a b c, b) c 21:59:43 :t app loop 21:59:44 Couldn't match expected type `a (b, d) (c, d) -> a b c' 21:59:44 against inferred type `(b1 -> c1, b1)' 21:59:45 Expected type: (a (b, d) (c, d) -> a b c) -> t 21:59:47 :t loop app 21:59:48 forall (a :: * -> * -> *) d c. (ArrowApply a, ArrowLoop a) => a (a d (c, d)) c 21:59:56 oerjan: :D 22:00:08 > loop app (\x -> (42, x)) 22:00:09 42 22:00:12 > loop app (\x -> (42, 1+x)) 22:00:13 42 22:00:18 > loop app (\x -> (x, 1:x)) 22:00:19 [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 > loop app (\x -> (2:x, 1:x)) 22:00:23 [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 that's awesome 22:00:33 you get control over the final value, sort of 22:00:49 > fix.interleave$cycle[1,0] 22:00:51 [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 :t loop 22:00:53 forall (a :: * -> * -> *) b d c. (ArrowLoop a) => a (b, d) (c, d) -> a b c 22:00:56 oh 22:00:57 :t app 22:00:58 forall (a :: * -> * -> *) b c. (ArrowApply a) => a (a b c, b) c 22:00:58 oerjan: well that was easy :P 22:01:01 oerjan: and elegant 22:01:07 (haven't really used arrows) 22:01:23 :t loop arr 22:01:24 Couldn't match expected type `(b, d)' 22:01:24 against inferred type `b1 -> c' 22:01:24 Expected type: (b, d) -> (c1, d) 22:01:26 aww 22:01:29 :t arr loop 22:01:30 forall (a :: * -> * -> *) b d c (a1 :: * -> * -> *). (ArrowLoop a, Arrow a1) => a1 (a (b, d) (c, d)) (a b c) 22:01:42 :t arr app 22:01:43 forall b c (a :: * -> * -> *). (Arrow a) => a (b -> c, b) c 22:01:47 heh 22:01:48 :t app 22:01:49 forall (a :: * -> * -> *) b c. (ArrowApply a) => a (a b c, b) c 22:01:52 right 22:02:01 elliott: once i remembered interleave, yeah 22:02:22 :t arr 22:02:23 forall b c (a :: * -> * -> *). (Arrow a) => (b -> c) -> a b c 22:02:33 elliott, what are arrows for? 22:02:45 :t loop 22:02:46 forall (a :: * -> * -> *) b d c. (ArrowLoop a) => a (b, d) (c, d) -> a b c 22:02:50 (apart from pointing people and shooting them) 22:03:27 Vorpal: arrows 22:03:34 they're like monads, except not, and more static 22:03:35 elliott, yes, what are they used for 22:03:39 ah 22:03:40 things 22:03:43 they're not very nice 22:03:55 oerjan: do i have to build the self-avoiding sequence :( 22:03:56 elliott, so why does haskell have them? 22:04:00 if they are not very nice 22:04:44 they're like monads, except not, and more static 22:04:52 I never did get arrows. 22:05:34 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 Vorpal: Well, they're not *all* that unnice. 22:06:11 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 elliott, right. So why should someone use them? 22:06:46 If they want to. Or if someone else already did and they have to live with it. 22:07:05 elliott, so there is really nothing they are better at than, for example, monads? 22:07:31 They are different things! 22:07:39 Vorpal: There are arrows that are not (or should not be) monads. 22:07:44 ah okay 22:08:02 so that is the "except not" bit then 22:08:18 :t loop 22:08:19 forall (a :: * -> * -> *) b d c. (ArrowLoop a) => a (b, d) (c, d) -> a b c 22:09:14 oerjan: I TAKE IT THAT'S A YES 22:09:16 well, night → 22:09:16 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 > (init &&& last) . take 2 [False,False,True,True] 22:09:42 Couldn't match expected type `[a]' 22:09:42 against inferred type `GHC.Bool.... 22:09:45 > (init &&& last) . take 3 $ [False,False,True,True] 22:09:47 ([False,False],True) 22:10:58 > map ((init &&& last) . take 3) . inits $ [False,False,True,True] 22:10:59 [(*Exception: Prelude.init: empty list 22:11:02 o_O 22:11:02 oh 22:11:11 > map ((init &&& last) . take 3) . tails $ [False,False,True,True] 22:11:12 [([False,False],True),([False,True],True),([True],True),([],True),(*Excepti... 22:11:39 > map (init &&& last) . takeWhile ((==3).length) . map (take 3) . tails $ [False,False,True,True] 22:11:40 [([False,False],True),([False,True],True)] 22:11:50 oerjan: SEE I'VE LIKE HALF WRITTEN IT FOR YOU ALREADY 22:11:58 elliott: i just cannot find much elegance in repeatedly building markov models. 22:12:12 oerjan: the idea was to come up with a more elegant expression of it than that :P 22:12:16 :t M.takeListWith 22:12:17 Couldn't find qualified module. 22:12:21 :t M.fromListWith 22:12:22 forall a k. (Ord k) => (a -> a -> a) -> [(k, a)] -> M.Map k a 22:12:54 -!- yiyus has joined. 22:13:38 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 should be a breeze 22:14:48 > iterate (id++map not . reverse) [False] 22:14:50 [[False],[False,True],[False,True,False,True],[False,True,False,True,False,... 22:14:56 WELL THAT'S NOT ANY FUN 22:15:09 > iterate (\xs -> interleave xs (map not (reverse xs))) [False] 22:15:10 [[False],[False,True],[False,False,True,True],[False,False,False,False,True... 22:15:14 sheesh 22:15:17 > iterate (\xs -> interleave xs (map not xs)) [False] 22:15:18 [[False],[False,True],[False,True,True,False],[False,True,True,False,True,F... 22:15:22 I GIVE UP 22:16:09 > show<=>=(!!)[[1],[0,1]]) 22:16:12 mueval-core: Time limit exceeded 22:16:16 argh 22:16:18 oh 22:16:31 > fix$(0:).tail.(>>=(!!)[[1],[0,1]]) 22:16:34 mueval-core: Time limit exceeded 22:16:41 hm something is wrong 22:16:50 the tail consumes too much? 22:16:57 oh hm 22:16:58 for production 22:17:00 maybe 22:17:05 you might need more starter elements 22:17:05 > fix$(0:).(>>=(!!)[[1],[0,1]]) 22:17:07 [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 > show<=>=(!!)[[1],[0,1]]) 22:17:24 "01011010110110101101011011010110110101101011011010110101101101011011010110... 22:17:52 that's a fairly general substitution sequence 22:17:55 which one is that? 22:18:21 fibonacci, unless i swapped the order 22:19:18 ah 22:19:55 04:50:34 makeDef text = [d|helloDefinition = $(litE . stringL $ text)|] 22:19:59 Sgeo: = $text i think 22:20:18 05:10:44 * Sgeo has no idea if GHC is smart enough 22:20:19 GHC is not allowed to turn a non-terminating program into a terminating one without printing <>. 22:20:40 > show<=>=(!!)[[0,1],[0]]) --seems this is canonical according to http://en.wikipedia.org/wiki/Fibonacci_word 22:20:41 "00101001001010010100100101001001010010100100101001010010010100100101001010... 22:20:56 oh wait hm 22:21:02 elliott, uh, what was the context of the smart enough comment? 22:21:05 so i just had this cool idea.. using mouse scrollwheel+some button to change window focus 22:21:08 Sgeo: length xs< x 22:21:09 > show<=>=(!!)[[0,1],[0]]) --seems this is canonical according to http://en.wikipedia.org/wiki/Fibonacci_word 22:21:11 "01001010010010100101001001010010010100101001001010010100100101001001010010... 22:21:17 that form needs tail 22:21:21 itidus21: you can scroll on the taskbar in gnome 2 at least 22:21:23 i used to do that a lot 22:21:25 to switch windows 22:21:30 Because the context that I'm thinking of is just an optimization, not ... oh, you only saw part of the context 22:21:36 Sgeo: i saw all context 22:21:41 i think 22:22:22 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 if you use clicking on it to change focus 22:22:36 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 Sgeo: "my own Num" 22:23:38 aka 22:23:41 the lazy peano numbers 22:23:43 the oldest thing ever 22:24:07 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 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 clearly noone measures these vectors 22:24:57 at least not on windows :P 22:25:10 itidus21: fitts' law may interest you 22:25:19 Sgeo: how's it more general 22:26:10 -!- atrapado has quit (Quit: FIN). 22:26:11 > show<=>=(!!)[[1,0],[0]]) 22:26:12 "01001010010010100101001001010010010100101001001010010100100101001001010010... 22:26:15 -!- Patashu has joined. 22:26:26 Um, not sure how to describe it, but it's an infinite list of maybe upper and lower bounds 22:27:03 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 Erm 22:27:29 ah it seems my first try is called the rabbit sequence 22:28:48 Sgeo: i'd like to see the code 22:29:05 Num instance is still being worked on 22:29:18 yup someone told me about it once.. i forget exactly what it is 22:29:26 http://hpaste.org/56271 22:29:33 but i do remember that the edge of the screen is more comfortable to scroll against 22:29:50 something to do with the size of the mouse target 22:29:53 `logsearch function array indexing 22:29:56 ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: logsearch: not found 22:30:04 `searchlog function array indexing 22:30:06 and the edge of the screen is effectively an infinitely deep target 22:30:08 itidus21: yep 22:30:37 No output. 22:30:49 `searchlog php index 22:31:03 2006-08-24.txt:22:24:26: http://www.codu.org/plof/index.php?title=LongWords 22:31:09 poor searchlog is ahead of its time 22:31:21 or whatever the term is 22:31:24 I do plan on factoring out the hard to read stuff in the Num instance 22:32:24 Sgeo: You could probably simplify it by realising that those Maybes are basically encoding a + -inf and a + inf. 22:32:30 Write appropriate instances, etc. 22:33:55 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 What the fuck are you talking about? 22:34:04 erm, want to restrict myself like that 22:34:25 data WithNegInf a = NegInf | NotNegInf a deriving (Eq) 22:34:32 instance (Num a) => Num (WithNegInf a) 22:34:41 Similarly for NegInf; write appropriate Ord instances. 22:34:55 Change the thing to [(WithNegInf a, WithPosInf a)] 22:36:15 Brainfuck with only balanced loops is *proven* sub-Turing-complete. <-- not with unbounded cells 22:36:37 oerjan: Hmm, really? 22:36:46 Oh, of course. 22:36:51 oerjan: Don't worry, we later prove it TC. 22:37:01 With BCT. 22:37:18 heh 22:38:59 my 3-cell construction has balanced loops, of course (i couldn't _find_ any way to usefully use non-balanced ones) 22:40:32 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 alas, no, there's still a little spam 22:42:32 are my eyes malfunctioning? i dont see dozens of spam entries 22:42:50 oerjan: still a _little_ 22:42:52 but vastly decreased 22:43:01 no itidus21, your eyes are fully operational. 22:48:40 rawSetCaption :: Maybe String -> Maybe String -> IO () 22:48:47 Sets the window title and icon name. Use Nothing to unset. 22:48:52 I don't really understand the purpose of this 22:48:58 what is different about "" and Nothing here? 22:50:00 presumably the system can distinguish them 22:50:01 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 a window with no title is not a window with an empty title 22:50:25 perhaps 22:50:32 oerjan: well it's easy to translate -z2 to -z1 22:50:38 oerjan: just replace a- with 22:50:39 it also has: 22:50:46 setCaption :: String -> String -> IO () 22:50:53 Sets the window title and icon name. 22:50:53 er hm 22:50:56 no it's not quite easy 22:50:58 but all you need is a copy 22:51:05 kallisti: for simplicity, presumably 22:51:06 The same difference with "" and NULL for SDL_WM_SetCaption is my guess. :p 22:51:13 elliott: yes that's what I would think. 22:51:27 OMG Darths & Droids is onto A New Hope. 22:52:42 fizzie: but wouldn't setting the caption to an empty string have the same basic effect as unsetting it? 22:52:47 or is there a minute difference? 22:52:57 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 oh I see 22:53:21 NULL could use some kind of default or something. 22:53:24 kallisti: you're confusing visual display for semantics 22:53:36 window with no title rendered same way as window with empty title =/= same thing 22:53:37 consider 22:53:40 $ list-windows 22:53:44 495345: (no caption) 22:53:46 495345: caption: "" 22:53:51 elliott: yes I'm asking what those semantics are... indirectly 22:53:54 I do that a lot. 22:53:56 depends on the system 22:54:03 but there's one example 22:54:12 OK, it could do that but there is different system such as Windows, UNIX, and Macintosh. 22:58:31 05:24:44 when . not ? 22:58:32 Sgeo: unless 22:58:56 05:31:17 erus`: There's an instance Error e => Monad (Either e) 22:58:56 WROOONG! You're not in here so I can't yell at you but WROOOONG!!!! 23:00:50 06:03:00 > let f a = const in f 1 2 23:00:51 06:03:00 Overlapping instances for GHC.Show.Show (b -> t) 23:00:51 06:03:01 arising from a use of `... 23:00:51 06:03:59 Which is a function, which doesn't have a Show instance 23:00:55 Sgeo: Yes it does. In fact, it has too many. 23:01:40 They need to implement instance disambiguation!! 23:02:26 08:00:04 Hmm 23:02:26 08:00:08 What is State# ? 23:02:28 Sgeo: Nothing. 23:02:37 Sgeo: State# s is 0 bits big. 23:02:39 It does not exist. 23:03:11 Sgeo: The reason IO uses it is so that GHC can't reorder IO expressions. 23:03:18 The (->) being used is the impure function arrow. 23:03:27 The State# is just used to introduce a fake evaluation dependency between computations. 23:03:57 08:11:40 What would happen if I did try to do something like weird a = IO \s -> (s, a) 23:04:00 Sgeo: With (##), that's return. 23:04:53 wait, so now we're shouting at #haskell from afar? 23:05:55 kmc: Yes! 23:06:01 kmc: You can't get banned that way. 23:06:07 Also, you don't even have to *be* in #haskell. 23:06:07 watching sgeo doing something stupid over there and shouting in his ear which is conveniently right here 23:06:21 monqy: Better: He did it in THE PAST! 23:11:30 10:00:17 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 10:00:24 @where lyah 23:11:31 10:00:24 http://www.learnyouahaskell.com/ 23:11:31 10:01:13 koeien:thanks! if i keep at this, would i be able to gain employment where haskell is used? 23:11:31 10:01:22 at that site, i meant 23:11:33 10:01:27 sorry for being ambiguois 23:11:36 I... I don't understand... 23:11:50 Oh, I misread. 23:13:11 good channel 23:14:08 inteq is fighting an uphill battle 23:14:28 i don't envy him 23:19:26 -!- nooga has quit (Ping timeout: 252 seconds). 23:19:37 10:45:04 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 Sgeo: likely referring to http://conal.net/blog/posts/exact-numeric-integration 23:19:54 Sgeo: which happens to do basically exactly what i proposed :) 23:20:04 sort of 23:20:22 see also http://www.reddit.com/r/haskell/comments/ajbso/conal_elliott_exact_numeric_integration/c0i391y 23:20:44 itidus21: ah but the view on the top is glorious 23:23:04 > [0..]>>- \_->cycle[1,0] 23:23:06 [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 oerjan: what is a good concise definition of "problem" in the computational sense 23:24:29 oerjan: lovely 23:24:40 > [0..]>>-cycle[1,0] 23:24:41 Couldn't match expected type `t -> [b]' 23:24:42 against inferred type `[t1]' 23:24:47 * elliott was hoping for function Num instance 23:25:03 > iterate(group>=>show.length++take 1)"1" 23:25:07 mueval-core: Time limit exceeded 23:25:11 > iterate(group>=>show.length++take 1)"1" 23:25:12 can't find file: L.hs 23:25:14 ... 23:25:15 ... 23:25:16 > iterate(group>=>show.length++take 1)"1" 23:25:19 ["1","11","21","1211","111221","312211","13112221","1113213211","3113121113... 23:25:21 * elliott has now committed that to memory 23:26:05 > iterate(group>=>show.length++take 1)"a" 23:26:07 ["a","1a","111a","311a","13211a","111312211a","31131122211a","1321132132211... 23:26:10 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 > iterate(group>=>show.length++take 1)"0" 23:26:21 ["0","10","1110","3110","132110","1113122110","311311222110","1321132132211... 23:26:48 more general types of problems need their own definitions. 23:27:01 > head $ drop 300 $ iterate(group>=>show.length++take 1)"1" 23:27:02 "13211321322113311213212312311211131122211213211331121321123123211231131122... 23:27:25 Somehow that doesn't seem right 23:27:44 Madoka-Kaname: why not? 23:27:53 Eh. 23:27:54 Never mind 23:28:29 > iterate(group>=>show.length++take 1)"" 23:28:30 ["","","","","","","","","","","","","","","","","","","","","","","","",""... 23:28:34 > iterate(group>=>show.length++take 1)"hi" 23:28:36 ["hi","1h1i","111h111i","311h311i","13211h13211i","111312211h111312211i","3... 23:28:46 > iterate(group>=>show.length++take 1)$repeat 1 23:28:47 No instance for (GHC.Num.Num GHC.Types.Char) 23:28:47 arising from the literal `1... 23:28:53 > iterate(group>=>show.length++take 1)$repeat '1' 23:28:55 ["1111111111111111111111111111111111111111111111111111111111111111111111111... 23:28:58 > tail.iterate(group>=>show.length++take 1)$repeat '1' 23:29:00 Terminated 23:29:02 aww 23:29:39 > tail.iterate(group>=>show.length++take 1).concatMap show$[1..] 23:29:41 ["1112131415161718191110311211131114111511161117111811191210121132131214121... 23:29:45 > tail.tail.iterate(group>=>show.length++take 1).concatMap show$[1..] 23:29:46 ["3112111311141115111611171118111931101321123113311431153116311731183119111... 23:29:48 > tail.tail.tail.iterate(group>=>show.length++take 1).concatMap show$[1..] 23:29:50 ["1321123113311431153116311731183119132110111312211213212321141321151321161... 23:29:55 oerjan: pls explain patterns kthx 23:30:19 its simple really 23:30:40 oerjan: a language over the set of all possible mathematical symbols? 23:30:40 1,111,311,13211,111312211 23:31:02 i mean like, duh 23:31:13 am I a possible mathematical symbol 23:31:14 are you 23:31:33 > head $ drop 300 $ iterate(group>=>show.length++take 1)"22" 23:31:35 "22" 23:31:46 oh well the first step is just interleaving 1 everywhere 23:31:53 except, no 23:31:56 since digits can repeat there 23:31:57 interesting 23:31:59 > iterate(group>=>show.length++take 1)"4444" 23:32:00 ["4444","44","24","1214","11121114","31123114","132112132114","111312211211... 23:32:11 > iterate(group>=>show.length++take 1)"2222222222" 23:32:12 monqy: i'm gonna go with no not really 23:32:13 ["2222222222","102","111012","31101112","1321103112","1113122110132112","31... 23:32:23 > iterate(group>=>show.length++take 1)"222222222" 23:32:24 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 ["222222222","92","1912","11191112","31193112","132119132112","111312211911... 23:33:09 quintopia: a language over some arbitrary (finite) alphabet 23:33:13 `log information is 23:33:21 2009-08-01.txt:15:08:18: because only that information is of the form to transmit itself into the future 23:34:46 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 oerjan: but to mathematicians, the alphabet is not arbitrary, is it? there is a conventional set of symbols? 23:35:15 oerjan: yeah, i was just hoping somehow infinitely extending it would make it interesting :P 23:35:21 it was a wild delusion! 23:35:52 `log [i]nformation is 23:35:57 Breaking news, look'n'say isn't turing complete 23:35:59 2010-01-10.txt:13:49:25: does anyone know if information is transferred faster by reading or by listening. Assume a skilled reader and native speaker. 23:36:45 `searchlog itidus philisoph 23:36:53 2012-01-08.txt:23:36:45: `searchlog itidus philisoph 23:36:58 oop 23:37:03 `searchlog itidus philosoph 23:37:12 2011-08-14.txt:07:15:58: i don't have philosophical dilemmas about whether the opcodes of a rom are being emulated in a uniform way 23:37:20 wow 23:37:24 Wow indeed. 23:37:43 i cant even remember what that is supposed to mean 23:38:15 Fun fact: the person who invented coffee chocolates should be shot. 23:38:16 `searchlog itidus philosoph 23:38:17 probably referring to NES emulation 23:38:23 2012-01-07.txt:12:36:21: fizzie: i don't understand why philosophy + retro gaming + symbols is so interesting 23:38:33 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 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 that was in reference to the vic20 chess video 23:41:58 also, that ever-popular "letter with number subscript" 23:42:41 when you don't really _care_ what the actual letters are, so you just make them indexed variables. 23:42:55 and the number may itself be a variable. 23:42:58 `searchlog itidus21 information 23:43:06 2012-01-06.txt:15:43:38: but.. in any normal human's life, the history of video games is useless information :D 23:43:13 `searchlog itidus philosoph 23:43:23 2011-11-26.txt:05:10:20: i love nothing more than to philosophize about these things 23:43:51 i was once compared to a markov 23:44:42 did it trigger an existential crisis 23:45:29 `searchlog itidus existential 23:45:38 2011-09-17.txt:08:13:16: 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 OMFG 23:46:11 OK 23:46:12 stop 23:46:14 everything 23:46:16 i have worked 23:46:17 out 23:46:23 23:46:24 23:46:24 how to drag 23:46:27 on my touchpad 23:46:34 im stopinge 23:46:41 Phantom_Hoover: how does it, work 23:46:41 stop stop 23:46:41 this 23:46:43 omg 23:46:49 does it work by 23:46:50 buying a mouse 23:46:53 no 23:46:56 it works 23:47:00 does it work by drageing 23:47:14 by double clicking and then not taking your finger up on the second click 23:47:24 there 23:47:28 there is no limit 23:47:36 for so long i have asked myself 23:47:43 how do i drag without using the mouse buttons 23:47:48 now i know 23:47:50 dude 23:47:52 how did you not like 23:47:53 realise that earlier 23:48:20 Because who clicks and then immediately drags?? 23:49:12 Phantom_Hoover: It doesn't actually send a click. 23:49:31 Yes, that also. 23:49:41 What doesn't? 23:50:36 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 13:59:00 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 NO STOP YOU'RE SO WRONG! 23:50:56 shachaf: WHY DOES NOBODY REALISE THAT EITHER'S FAIL IS ERROR THESE DAYS 23:51:00 Phantom_Hoover: OK, divmod is quite tricky. <-- oh dear, this is pikhq's bfm/pebbles all over again :P 23:51:07 oerjan: heh howso 23:51:14 elliott: Hey, I was only half-paying attention in that conversation. 23:51:16 i guess it's similar-looking 23:51:22 shachaf: DMWIT HAS SAID IT _TWICE_ IN THIS LOG, TWICE!!! 23:51:25 * elliott cries. 23:51:27 Wait. 23:51:28 I didn't even realise they were talking about MonadError until a long time later. 23:51:28 Wait no. 23:51:32 I want him to be ignorant. 23:51:36 It means more SO questions for me to answer. 23:51:42 "How come Either's fail isn't working?" 23:51:44 SO many more questions. 23:51:50 Yes. 23:51:55 Delicious karma. 23:52:10 You should take Joel Spolsky hostage and demand a billion karma points. 23:52:22 14:02:51 > let { x :: Integer; x = fromIntegral (maxBound :: Int) } in x * x -- values of type Integer can be arbitrarily large. 23:52:22 14:02:52 85070591730234615847396907784232501249 23:52:27 Everyone knows 85070591730234615847396907784232501249 is the biggest number. 23:52:34 WHY DOES NOBODY REALISE THIS CHANGES EVERYTHING 23:52:41 elliott: because pikhq basically implemented all of that stuff by compiling into balanced brainfuck. 23:52:45 Phantom_Hoover: It only changes you being dumb to being slightly less dumb. 23:52:47 Phantom_Hoover: Just wait until you hear what happens when you TRIPLE-CLICK. 23:52:48 oerjan: heh 23:53:02 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 14:06:37 dmwit: anyhow It seems I shoudn't rely on fail to return Left 23:53:35 14:06:47 dmwit: so I should probably use ErrorT rather than Either? 23:53:35 14:07:27 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 shachaf: I think he's going for irony. 23:54:31 Why am I consuming 85% dark chocolate? 23:54:35 I don't like dark chocolate. 23:54:42 Then don't. 23:54:57 Whoa. 23:55:00 You can do that? 23:55:21 No. 23:55:22 Continue. 23:55:23 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 14:21:43 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 shachaf: You should really have proposed the mzero :: (forall a. a) -> m a solution. 23:56:04 quintopia: probably not, but i lost you at tarski-kuratowski. 23:56:08 elliott: Ew. 23:56:15 Actually, "mzero :: a -> m b" would work per parametricity, I think. 23:56:22 shachaf: Come on, it's so brilliant. 23:56:24 That solution is a horrible joke. 23:56:38 shachaf: Well... yes, but is it really worse than taking a String which /changes based on column number/? 23:56:51 oerjan: its the one that places problems on the arithmetic hierarchy 23:57:01 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 Hmm. I guess that's a point. 23:58:11 The <- pattern-match failure thing is actually observable in the program, isn't it. 23:58:14 That's kind of horrible. 23:58:15 http://wiki.rpg.net/index.php/Worst_RPGs_ever 23:58:15 Yep. 23:58:23 Actually shouldn't it be exists a. a or something? 23:58:31 shachaf: AKA a. 23:58:35 Right. 23:58:36 shachaf: The problem is that you always want it to be _|_. 23:58:41 (forall a. a) forces that. 23:58:51 Yes, but who cares if it's not? 23:58:56 Racial Holy War (RaHoWa) 23:58:57 Well, true. 23:58:57 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 shachaf: Anyway, I mean, the _|_ message is obseravble in the program too, but only in the sin-bin. 23:59:08 elliott: I don't want my program to *depend* on _|_ existing. 23:59:16 elliott: Right, but that's different. 23:59:19 And that seems reasonable, since you can layer on error handling with it. 23:59:23 Right. 23:59:38 Also, either you typed very quickly or you're making use of the copy-paste-bin. 23:59:50 I cache lines with ctrl-x sometimes. 23:59:53 But I type very quickly too. 2012-01-09: 00:00:03 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 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 shachaf: I don't want to give the same treatment to Nothing, though. 00:00:42 That's just wrong. 00:01:00 To Nothing? 00:01:19 You mean Maybe a = Nothing (exists b. b) | Just a? 00:01:21 Right. 00:01:29 That's how you told me about it. 00:01:31 How can it be wrong when it feels so right? 00:01:34 Right. 00:01:35 You mean Maybe a = Nothing (exists b. b) | Just a? 00:01:39 Maybe nothing exists? 00:01:49 Maybe nothing exists, just a. 00:01:51 Phantom_Hoover: FAR OUT, DUDE 00:01:58 What if, like, NOTHING EXISTED 00:02:02 Thus objectivism. 00:02:13 a=a 00:02:14 a=_|_ 00:02:19 Everything is bottom. 00:02:40 elliott: The real solution is to have GHC give that treatment to everything. 00:02:49 So any constructor has a hidden field for storing an optional _|_. 00:03:04 shachaf: You know, I might not object to 00:03:10 hide :: String -> a -> a 00:03:14 seek :: a -> IO (Maybe String) 00:03:23 :-( 00:03:26 I mean... it would work. 00:03:30 :-( 00:03:34 (It wouldn't.) 00:03:42 (Because it's not preserved under .) 00:04:00 (The trick for mfail works specifically because you have to pack it manually in your type.) 00:04:03 (So your (>>=) handles it.) 00:04:09 Right. 00:04:19 I... kind of support this solution now. 00:04:23 I wasn't expecting that to happen. 00:04:33 elliott: No you don't. 00:04:45 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 But I kind of do? 00:05:00 Well, can *you* come up with a decent argument against it? 00:05:27 Other than "it's evil"? 00:05:40 shachaf: It's as evil as error and asynchronous exceptions. 00:05:54 That's a pretty low level of evil for Haskell. 00:06:14 Hmph. 00:06:32 Well, it has a certain charm to i. 00:06:44 That charm is imaginary. 00:06:45 Why don't you go propose it in #haskell? 00:06:55 ...Maybe later. 00:07:15 Why don't you write a proposal on SO? 00:07:17 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 Oh, wait. 00:07:34 shachaf: No discussion allowed, dude! You have to phrase it as "Would this be a good idea?". 00:07:38 And hope it's not closed for being non-constructive. 00:08:21 elliott: THOSE INTUITIONIST FASCISTS. 00:08:50 Huh, Google has one result for "intuitionist fascist". 00:08:57 -!- Klisz has quit (Quit: SLEEP, GLORIOUS SLEEP). 00:09:19 is it a band name 00:09:30 http://www.jstor.org/pss/1953935 00:09:31 riveting 00:09:57 elliott: It's just too abstract for you. 00:10:00 You can't handle it. 00:12:18 * Phantom_Hoover → sleep 00:12:19 -!- Phantom_Hoover has quit (Quit: Leaving). 00:12:37 shachaf: Did you actually sleep? 00:12:44 You said you were going to and then reappeared. 00:13:00 I did sleep! 00:13:31 Oh. 00:13:39 -!- zzo38 has quit (Remote host closed the connection). 00:15:48 quintopia: oh i have a hunch what your problem is. you may be confusing the polynomial and the arithmetic hierarchy. 00:16:21 being inside PSPACE applies to the former, being undecidable and stuff applies to the latter. 00:16:30 oh my god Acme::Comment 00:16:34 has so many comment styles... 00:16:34 shachaf: Can you make Stack Overflow's rankings update quicker? 00:16:37 that you can use. 00:16:43 it has unlambda comments 00:17:20 elliott: Well, I have insider information on what the rankings will be like on the next update. 00:17:26 RANKINGS: 00:17:29 #1 ehird 00:17:43 It stops there. 00:17:44 shachaf: Already is on at least one ranking: http://stackoverflow.com/tags/haskell/topusers 00:18:10 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 http://stackoverflow.com/tags/monads/topusers 00:18:29 congratulations 00:18:45 * elliott is nomadic. 00:19:29 http://stackoverflow.com/tags/higher-rank-types/topusers 00:19:38 elliott: Man, you're just winning that popularity contest. 00:20:10 shachaf: Yessss 00:20:21 *applied 00:20:44 elliott: World Expert in Higher Rank Types in the last 30 days. 00:20:47 s/:/,/ 00:21:29 elliott: That ehird fellow on SO is really polite and well-spoken and what not. 00:21:37 You should try to be more like him/her. 00:22:02 shachaf: He's actually Don Stewart claiming the identity of another to deflect backlash against his aggressive Haskell evangelism. 00:22:03 :tinfoil: 00:22:22 shachaf: Anyway, the thing is that I'm polite in exchange for meaningless internet points. 00:22:27 People don't give me the right kind of meaningless internet points here. 00:22:34 My attempt to be gender-neutral there only sort of worked. 00:22:40 @google "gender-neutral there only sort of worked" 00:22:42 http://qdb.rawrnix.com/?top 00:22:42 Title: Top Quotes 00:23:14 * oerjan gives elliott a swat point -----### 00:23:41 oerjan: See, that's the wrong kind. 00:23:53 IMPOSSIBLE 00:23:53 elliott: Not so meaningless now, are they? 00:24:47 elliott: what if you could trade SO rep for bitcoins? 00:25:01 kallisti: Then I'd have *two* kinds of meaningless internet point. 00:25:19 well, as far as I know bitcoin translates to real money I think... 00:25:36 BITCOIN BITCOIN BITCOIN. 00:25:44 I'm sure I can buy drugs with SO rep too. 00:26:08 probably not. 00:26:32 I would sell elliott drugs for SO rep. 00:26:32 unless some drug user is looking to get some made SO rep. 00:26:35 s/made/mad/ 00:26:45 kallisti: s/user/dealer/ 00:27:05 it's not very difficult for a user to become a dealer in this situation. 00:27:27 shachaf: How much?!?!?!?!?! 00:27:30 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 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 oerjan: OK where's the pun. 00:27:56 to Mac LAN party, that is. 00:28:00 elliott: Can you ever transfer SO karma? 00:28:02 I hate you. 00:28:04 shachaf: Bounties. 00:28:10 But abuse would get cracked down on pretty quickly. 00:28:22 especially abuse related to drug trafficking 00:28:26 (not really) 00:28:29 You don't want to mess with that Spolsky fellow. 00:28:32 elliott: yw 00:28:40 oerjan: I still don't get it. 00:28:51 MacLane party?! 00:28:53 I'm surprised Acme::Comment doesn't have brainfuck-style comments. 00:28:54 elliott: a LAN party, with Macs. 00:28:59 I should submit a patch 00:29:01 How is that a close call. 00:29:08 shachaf: Sorry, only me and PH are invited. 00:29:14 This is because neither of us know category theory. 00:29:19 :-( 00:29:22 Also, we're not working mathematicians. 00:29:27 You gotta do category theory at a MacLane party. 00:29:28 elliott: just one letter away, duh 00:29:31 elliott: Mac Lane -> Mac LAN ha ha ha ha ha ha ha ha ha ha ha ha ha 00:29:44 oerjan: I GET THAT PART 00:29:46 whats the close clal part 00:29:47 kallisti: Hey, that mockery should be directed at me. 00:29:57 shachaf: ha ha ha ha ha ha ha ha ha ha ha haha 00:30:01 Oh, wait. 00:30:05 I thought I made an original pun. 00:30:15 But I was making a pun on Mac LAN which was making a pun on Mac Lane. 00:30:19 but no really I'm going to see if I can patch brainfuck comments into Acme::Comment 00:30:22 it would be so good. 00:30:23 * shachaf is completely oblivious. 00:30:46 imagine brainfuck comments in perl source... yesssssss 00:30:52 "brainfuck comments" 00:31:00 yes 00:31:02 brainfuck comments 00:31:10 defined as anything that is not a valid brainfuck instruction 00:32:04 kallisti: i sense a bit of a problem there 00:32:09 oerjan: hmm 00:32:11 problem? 00:32:13 what do you mean? 00:32:44 kallisti: i don't think you can do much perl programming using only brainfuck instruction letters. 00:32:52 hmmm 00:32:55 I fail to see the importance 00:33:00 the import thing is comment syntax 00:33:00 O KAY 00:33:04 perl needs all the comments 00:33:22 i guess it _would_ improve readability a lot. 00:33:28 Acme::Comment even supports perl comments 00:33:36 use Acme::Comment type => 'Perl'; 00:33:51 not to be confused with Python and AWK comments 00:33:58 which are also supported 00:34:57 also: Haskell comments 00:35:19 though it doesn't document that it supports the {- -} form 00:35:23 it just mentions the -- form 00:38:10 awesome intercal comments 00:39:04 (100) DO NOTE THAT the following perl code uses intercal comments 00:40:16 it doesn't mention anything require just the right amount of PLEASE 00:40:19 +about 00:40:24 *requiring 00:45:49 hm is INTERCAL case sensitive 00:46:37 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 !perl my %x = (1, 2, 3, $x{1}); print %x 00:48:15 123 00:48:24 heh. it would be cool if you could actually do that. 01:03:05 -!- Klisz has joined. 01:25:42 > [0..]>>-liftM2(,)"ab" 01:25:43 No instances for (GHC.Num.Num [a2], GHC.Enum.Enum [a2]) 01:25:43 arising from a u... 01:26:02 > [0..]>>-liftM(,)"ab" 01:26:03 Couldn't match expected type `[b]' 01:26:03 against inferred type `b1 -> (a1... 01:27:34 > [0..]>>-mapM(,)"ab" 01:27:35 [('a',0),('a',1),('b',0),('a',2),('b',1),('a',3),('b',2),('a',4),('b',3),('... 01:31:20 oerjan: congrats 01:31:40 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 oerjan: it's a fancy zipWith 01:33:50 it's not zipWith 01:34:41 how so? 01:34:47 I mean other than cycle being applied to "ab" 01:36:01 no. it's closer to liftM2(,) but it's not that either, if you look carefully. 01:36:14 oh yes 01:36:45 isn't it like zipWith but slightly out of order? 01:37:14 not particularly. 01:40:40 variable `elem` [constant1, constant2] 01:40:53 I wonder if GHC unrolls this expression during compilation. 01:41:13 I guess it would be difficult to do generally but I feel that it's possible. 01:41:39 but you have to know that elem terminates. 01:45:44 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 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 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 `words --italian --eng-all 25 03:36:44 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 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 I added one idea to esolang list of ideas 04:59:02 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 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 Now there is one section for music, one section for mathematics, one section for physics, one section for implementation, etc 05:32:35 hmm 05:32:59 I now added a "Game" section too. 05:33:27 i like the reorganization 05:34:56 Good. 05:36:11 I have added two additiona entries to the page: 05:36:16 * Programming language using TeX DVI output as the program code. 05:36:26 * 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 OK, now I have even done more reorganization to the list of ideas 05:48:11 Is it better now? 06:00:00 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 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 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 "Stores any Python value in a cookie! This will cut your balls off, 100% guaranteed." 08:03:42 Well, at least it's deprecated. 08:06:14 And gone in 3.x. 08:16:00 "pickle strings can be crafted to cause arbitrary code to execute on your server" 08:16:07 They make it sound difficult 08:17:34 Only the utmost expert criminals can craft such strings, and it takes months of meticulous work. 08:17:55 fizzie: I usually just buy a pre-crafted string on the black market. 08:18:05 Of course, once you use it, it can never be used again. 08:31:32 hand-crafted by loving artisans according to the traditional ways of a bygone era 08:35:23 shachaf, deprecating it is just a hilariously inappropriate response 08:35:51 it's good if upgrading Python breaks code using this function 08:36:13 because that code is almost certainly exploitable 08:36:46 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 i think that's not so bad 08:37:23 not as bad 08:37:41 Though I suppose it's *theoretically* possible to use gets securely... 08:37:45 there is a lot of C code which is never going to be run setuid or as a remotely accessible service 08:38:04 If you've redefined stdin to be a pipe, and your process is on the other end. 08:38:51 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 kmc: Or run by a end user? 08:39:06 pikhq_, ? 08:39:11 I don't want input to a program deleting ~ 08:39:21 yeah 08:39:28 running such a program on untrusted input would also be bad 08:40:25 also C has a standard saying you need to provide gets() 08:40:43 Python does whatever the fuck they want 08:41:02 anyway in both cases i'd support hiding it behind some flag that requires positive action to be enabled 08:41:24 C11 removed gets(), it seems. 08:41:27 Yup. 08:41:32 i hate the attitude that a vulnerability isn't a vulnerability if it's documented in some document nobody reads 08:41:53 Though POSIX still mandates it. 08:42:26 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 Though a strictly conforming POSIX app SHALL NOT use it. 08:43:03 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 that's what's really important 08:43:19 OK, that's kind of ridiculous. 08:43:31 At least it ends in "be careful!!!". 08:43:35 be careful!!! of gasoline fumes (while you're taking a chainsaw to the groin) 08:43:36 So you know to be careful. 08:43:39 right 08:44:08 my software is 100% secure 08:44:15 because the documentation says "this program may have bugs, don't trigger them" 08:44:18 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 if you have a security bug, then you have violated the software contract 08:45:26 Not to mention the law of least surprise. 08:46:18 i can't be held responsible for what happens if people use the software out of spec 08:46:36 I can't be held responsible for my actions against people who write unreasonable specs. 08:46:39 :) 08:47:07 it's a lot like secure programming in C 08:47:13 there's only one simple rule 08:47:19 don't make any mistake, ever. 08:47:22 kmc: Where would Ksplice be if people didn't write bugs? 08:47:41 shachaf, feature upgrades! 08:48:17 every day you could download new microoptimizations 08:48:38 (except that ksplice'd functions are slightly slower to call, but oh well) 08:49:00 Because of an added jump? 08:49:05 yeah 08:49:12 the beginning of the old function is overwritten with a jump to the new 08:49:16 shachaf: Broken window fallacy? :) 08:49:41 kmc: Clever solution. 08:49:50 kmc: Presumably if you patch a function multiple times, it will only ever get one extra jump, though, right? 08:49:52 (also other entry points to the old function, if there are any) 08:50:01 Probably also the only way of doing any hot-patching of a binary. 08:50:16 pikhq_, it's not that clever, it's probably the least interesting thing about how ksplice works 08:50:22 shachaf, I don't recall 08:51:19 What are the more interesting parts of Ksplice? 08:51:23 I should probably just read the paper. 08:51:41 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 so it's not relying on the exported symbols list 08:52:07 Oh, right, ksplice works automatically from basically whatever happens to be the running kernel. 08:52:19 not really 08:52:26 Which gives you a lot of work to do before you even have a hope of hot-patching... 08:52:40 you need a source tree for the kernel you're currently running 08:53:28 -!- xandy has left ("Leaving"). 08:53:29 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 the ksplice tools do a content-aware diff on the resulting object files 08:54:58 using -ffunction-sections means that you have a relocation for every call 08:56:42 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 at runtime, you compare the pre-patched code you built with the actual running kernel, instruction by instruction 08:57:49 this is for safety but it also allows you to find the load addresses of those non-exported functions 08:59:22 because you see that same call instruction again, and decode its target 09:00:31 With inline functions I suppose you just patch the function calling it? 09:00:40 right 09:00:57 the tools work at the binary level, and so are mostly oblivious to inline functions etc. 09:01:16 if you change a function which is inlined to 20 callers, it looks like you changed those 20 functions 09:01:30 (which is awkward because patching more code => bad, but there's really no way around it) 09:02:15 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 go figure 09:02:29 then you end up patching both 09:02:53 (though they were working on solutions to that problem, but I probably should not talk about them) 09:07:25 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 that's part of the value the commercial service added, versus the open-source tools 09:08:35 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 but it's true that it works on kernels which were built with no knowledge of ksplice 09:09:29 and we were proud of hot-patching machines which were last booted before the company or product existed 09:10:07 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 which is basically, it scans every kernel stack 09:10:28 but there's a bunch of subtlety and trickiness to that 09:11:23 linux has this great feature called stop_machine which... does what it says on the tin 09:12:09 it gives your code complete control of the (OS-visible behavior of) processors 09:12:34 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 How long did Ksplice make a machine unresponsive, in bad cases? 09:14:02 (Assuming it did.) 09:14:39 Virtuozzo 4 has a bug which makes stop_machine very slow 09:14:57 other than that, it's probably a few ms at worst 09:15:10 a lot of the prep work is done outside stop_machine 09:15:47 loading the update (which is itself a kernel module) and matching the code 09:16:44 if the stack check inside stop_machine fails, then it gives up the CPU before trying again 09:16:53 (obviously, because nothing's going to change if it doesn't) 09:23:54 -!- Deewiant has quit (Ping timeout: 240 seconds). 09:26:21 ... 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 What a smug yuppie kmc is. 09:44:24 haha 09:44:33 some people are wrong about trains on the internet 09:50:59 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 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 do you prefer python style nesting or c style nesting: tabs or {} ? 10:17:10 Python doesn't use tabs, it uses indentation. 10:17:47 well, you can use tabs 10:18:24 -!- nooga has quit (Ping timeout: 252 seconds). 10:19:52 any preference? 10:21:18 i see that brackets are better for pasting code here 10:22:17 05:16 < shachaf> Python doesn't use tabs, it uses indentation. 10:22:30 shachaf wins the Pedantic Point of Year award. congratulations! 10:22:38 *the Year 10:22:48 I assumed you were just Russian. 10:23:10 kallisti wins generosity 2012 10:23:53 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 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 so, umm, I'm going to discharge my CIVIC DUTY by mentioning it once in #esoteric 10:45:35 What's a UOB? 10:46:05 "Choosing to Study MSc Computer Science at Birmingham was a life transforming decision for me." 10:46:27 10 PRINT Tweets from the School of Computer Science at the University of Birmingham; 20 GOTO 10 10:47:01 I haven't actually read it; should I? 10:47:14 Not much point. 10:47:49 -!- Vorpal has joined. 10:48:01 I'm not actually entirely sure who runs that account 10:48:11 I /hope/ it's a consortium of staff, of which some are trolling the others 10:48:34 They followers/followees ratio isn't as good as mine. 10:48:38 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 It seems a reasonably active account, though. 10:48:52 Phantom_Hoover: I don't actually detest Twitter at all 10:49:00 although I'm annoyed at the way it uses JavaScript, that's about it 10:49:02 Latest own twat seems to be: "And so begins the countdown to the first personal hygiene related mail of the year." 10:49:11 this looks interesting *loads log* 10:49:28 Oh, it's a recently started thing, too. 10:49:33 Load slog. 10:49:53 shachaf, that too 10:50:12 They could retweet a couple of fungot tweets, that's always the sure road to success. 10:50:12 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 fungot: You've got like 19 followers. (Most of them seem to want to sell something.) 10:50:53 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 fizzie: it wouldn't even be entirely offtopic 10:50:57 only /mostly/ offtopic 10:51:36 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 Vorpal: Heh, fungot tweeted "cfunge may already work that way" 12 hours ago. 10:51:56 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 OMG fungot has twitteR?? 10:52:07 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 *twitter 10:52:56 Phantom_Hoover: E's even customized eir page background to have the source code in it. 10:53:11 fungot: Aren't you just the cleverest bot. *pat* 10:53:11 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 There is no sense in which this is not the best. 10:53:55 ^style 10:53:55 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 Some day I should stick in more styles in the twitter-poster, it's only got four at the moment. 10:55:44 Use all the styles! 10:57:12 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: Heh, fungot tweeted "cfunge may already work that way" 12 hours ago. <-- hm, did it specify what way? 10:57:34 Vorpal: as a veteran of the game in the first place, so he can just button it 10:57:48 okay that made perfect sense. 10:57:56 fizzie, also got a link to the twitter page? 10:58:21 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 fizzie: it is a hate so pure and... pumpkin seeds? 10:58:28 OMG fungot has twitteR?? <-- yes, I had forgot about it though. Was ages ago it was last mentioned 10:58:28 Vorpal: an old colonel lost, but a new brother gained. together they will ascend, each time you must be adventurin'. 10:58:46 fizzie, well, definitely not about cfunge then 10:58:46 So I guess it could be that cfunge is discrete? Or in Delphi? 10:59:10 fizzie, not the latter last I checked 10:59:17 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 I'm not sure how that would be related to cfunge. 10:59:28 fizzie, and since it runs on a computer it is probably discrete yes 10:59:32 Do you wield swords in it often? 10:59:46 fizzie, in real life or in RPGs? 11:00:01 In cfunge. With cfunge. I don't know, somehow related to cfunge. 11:00:04 in real life I don't think I ever wielded a sword 11:00:06 nor in cfunge 11:00:19 It could be a metaphorical sword, I guess. 11:00:24 cfunge doesn't even implement SWORD (it could in 64-bit mode maybe?) 11:00:25 The sword of optimization, or something. 11:01:11 fizzie, that is probably one of those dual-edged things 11:05:41 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 quite 11:09:43 Ooh, from #nethack, an object lesson of "be careful what you wish for": 11:09:43 dingo (Tou Hum Fem Neu) wished for "blessed fireproof +2 Staff of Aesculapius", on turn 992 11:09:43 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 so I assume it says that protected field must exist just that you can't use it portably? 11:11:18 fizzie, hah 11:11:48 fizzie, gah I haven't played nethack for over a year, which class is that staff for? Was it priest? 11:12:09 Healer. 11:12:11 ah 11:12:52 "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 It's the snake-on-a-stick thing. 11:13:27 *One* of the snake-on-a-stick things. 11:13:47 Well, yes; but isn't the other one the snakes-on-a-stick? 11:13:55 fizzie, when I was small I used to think it was somehow related to doctors curing you from poisonous snake bites 11:14:06 (I wasn't very clear on the details of it) 11:14:29 -!- Jafet has joined. 11:14:38 fizzie, also that needs to be a movie 11:23:40 http://www.plasticbrickautomaton.com/?id=87 11:24:00 I have seen this comic before, a long time ago, but it is now 10,000 times better. 11:24:02 ais523, there still? 11:24:07 yes 11:24:42 ais523, I'm trying to make sense of java generics. If you have say Foo how do you say that T must be a class that implements interface Bar? 11:24:57 Foo 11:25:01 ah 11:25:13 ais523, there is no way to specify more than one interface there? 11:25:22 Foo 11:25:35 ah 11:27:56 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 Java's one of the few languages that actually has proper notation for covariance and contravariance in templates 11:28:20 the problems are a) nobody uses it, and b) the semantics are wrong 11:28:25 Vorpal: In 1.5 (5.0), so that's reasonably recently. 11:28:27 ah 11:28:39 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 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 fizzie, ^ 11:32:46 You're free to add a field for any custom manually specified data. 11:32:53 And then specify those in the constructors. 11:33:00 ouch 11:33:09 As for the "raw" integer values, I think those are always consecutive from 0..N. 11:33:29 fizzie, well I need to match external values here, and they happen to be sparse so. Meh. 11:33:43 Well, add a field for it, then. 11:34:29 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 (or adding a field for every one) 11:34:46 No, I mean. 11:35:35 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 That sort of thing. 11:35:45 oh you write it like that. Okay. 11:36:27 You can make the constructor populate a static Map if you want to have a static method so you can have Meh.fromZlork(42) == Meh.FLONK. 11:37:01 Uh, zlorb == zlork here. 11:37:08 hm 11:37:24 seems like a rather hackish solution to handle this. 11:40:27 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 Unless you put some dummies in. 11:41:01 I think it's slightly discouraged to care about the actual numeric values of the ordinals, anyway. 11:41:15 If you want something meaningful, you can put the meaningfulness in explicitly. 11:41:38 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 I would assume it is when the button is activated either through the keyboard or the mouse? 11:45:31 When it gets twoggled, yes; I'm sure they've documented that stuff somewhere. 11:46:19 "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 (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 fizzie, right, I was mainly searching the reference docs for JButton and the ActionListener 12:11:05 it would make sense if either of those had it 12:11:19 (I also did look at super classes, AbstractButton or whatever it was) 12:12:54 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 So it's "incorporated by reference", like the lawyers say. 12:13:20 hm okay 12:14:29 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 (unless you can set the backing type somehow) 12:15:33 Not the ordinal, but of course the "zlorbvalue" can be a byte easily, if you want to have manually set values. 12:16:08 right 12:18:36 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 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 any good idea how to not confuse those two sense in naming 12:19:48 (of variables and so on) 12:20:38 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 heh 12:20:57 I mean, you *could* use the technical term "ply", but that's also liable to confuse some. 12:21:10 fizzie, also makes no sense in the case of tank wars 12:21:11 :P 12:21:15 brb food is ready 12:22:13 "ply: In two-player sequential games, a "half-turn", or one move made by one of the players." (Wiktionary.) 12:22:28 Vorpal: enums can have properties in Java 12:22:42 and even methods 12:22:49 ais523: As seen in my enum Meh example, perhaps? 12:22:50 so you could add your own getAsByte method on your enum 12:23:00 perhaps 12:23:05 it's quite a way back in scrollback, so I missed it 12:23:17 Oh, right; well, yes, you could return the ordinal as a byte, too. 12:23:19 I haven't been following the conversation, and was trying to weigh in from a screenful of scrollback 12:23:41 The example was about having a sparse set of externally-meaningful numbers associated with each enum constant. 12:24:17 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 "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 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 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 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 (Also it's not even network-connected.) 12:32:00 fizzie, for some values of coffee room? 12:32:15 -!- ais523 has quit (Ping timeout: 255 seconds). 12:32:34 fizzie, was the old one network connected? 12:32:43 For some values of "new". 12:33:06 And no, but it was just your regular water-heater/plate/pot thing. 12:33:41 ah 12:33:45 "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 There's also a PDF guide attached. 12:34:12 so it grinds the coffee bean on the fly? Impressive 12:34:25 Suddenly I'm delighted I don't drink coffee; now I don't need to learn this thing. 12:34:34 heh 12:34:57 You can get "ristretto" out of it. (Apparently it's like espresso, except more.) 12:36:07 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 "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 You get more "body" in it. 12:36:39 I see. 12:36:41 I suppose it's for mass-murderers instead of casual murderers? 12:36:46 possibly 12:37:58 I'm suspicious of fluids where people use anything more complicated than, say, "sweet" or "salty" or "like but sourer" or such to describe them. 12:38:24 Wines are probably the worst example of that phenomenon. 12:42:53 "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 how do I do guards without indentation? 13:11:37 hint don't indent 13:11:42 ? 13:11:44 I mean 13:11:46 with { and } 13:14:32 fizzie, yeah that sort of stuff 13:15:15 fizzie, I question if whoever said that ever tried to eat a representative set of minerals for example. 13:15:49 fizzie, I'm okay with "Citrusy" though. 13:16:14 kallisti, why don't you want to indent? 13:16:19 IRC 13:16:30 hm no idea how you do that 13:16:52 I tried let f n { | blah = blah; | blah = blah } 13:16:55 but that didn't work 13:16:59 remove the {;} 13:16:59 I tried let f n { | blah = blah | blah = blah } 13:17:01 doesn't work either 13:17:13 shouldn't the {} be for the code after rather than for the guards there? 13:17:16 let f n | blah = blah | blah = blah 13:17:18 I would assume so at least 13:17:39 > let f n | n == True = 1 | n == False = 2 in f True 13:17:40 :t (=) 13:17:40 > let f n | n == 0 = 1 | n == 2 = 3; g = f in g 2 13:17:40 1 13:17:40 parse error on input `=' 13:17:41 3 13:17:44 oh... okay. 13:17:45 hm that saddens me 13:17:56 (makes sense of course) 13:33:46 > let fibs = 0 : 1 : zipWith (+) (tail fibs) (fibs); parfib n = last $ withStrategy (parList rwhnf) (take n fibs) in parfib 10000 13:33:47 207936082371334980721126489886428368250870360940159031196829458665285014234... 13:34:09 > let fibs = 0 : 1 : zipWith (+) (tail fibs) (fibs); parfib n = last $ withStrategy (parList rpar) (take n fibs) in parfib 10000 13:34:10 207936082371334980721126489886428368250870360940159031196829458665285014234... 13:34:18 I wonder if that actually does anything. 13:35:06 > let fibs = 0 : 1 : zipWith (+) (tail fibs) (fibs); parfib n = last $ withStrategy (parList rpar) (take n fibs) in parfib 100000000000000 13:35:07 *Exception: stack overflow 13:35:19 > let fibs = 0 : 1 : zipWith (+) (tail fibs) (fibs); parfib n = last $ withStrategy (parList rpar) (take n rwhnf) in parfib 100000000000000 13:35:20 Couldn't match expected type `[a]' 13:35:20 against inferred type `Control.P... 13:35:50 > let fibs = 0 : 1 : zipWith (+) (tail fibs) (fibs); parfib n = last $ withStrategy (parList rwhnf) (take n fibs) in parfib 100000000000000 13:35:52 *Exception: stack overflow 13:35:53 > let fibs = 0 : 1 : zipWith (+) (tail fibs) (fibs); parfib n = last $ withStrategy (parList rwhnf) (take n fibs) in parfib 1000000000000 13:35:55 *Exception: stack overflow 13:35:56 > let fibs = 0 : 1 : zipWith (+) (tail fibs) (fibs); parfib n = last $ withStrategy (parList rwhnf) (take n fibs) in parfib 10000000000 13:35:58 *Exception: stack overflow 13:36:00 > let fibs = 0 : 1 : zipWith (+) (tail fibs) (fibs); parfib n = last $ withStrategy (parList rwhnf) (take n fibs) in parfib 1000000 13:36:02 *Exception: stack overflow 13:36:03 lol 13:36:05 * kallisti is done. 13:37:49 I don't think that'd have worked anyway. 13:40:45 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 ARE YOU FIBBING BOY? 13:41:28 no 13:41:41 kallisti: I don't know that it's making any difference. 13:41:48 Anyway, I don't know. 13:42:28 I doubt it is. 13:44:40 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 fizzie once told me a term for it i think 13:45:52 I doubt any actual parallelism is going on. the individual elements are evaluated too quickly. 13:46:41 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 fizzie: this is so very important 13:48:53 -!- ais523 has joined. 13:49:15 is this a good place to ask for help with homework questions? 13:49:19 yes 13:49:26 if they have to do with symbolic dynamics 13:49:31 hmm 13:49:40 what if they have to do with basic functional programming? 13:49:45 oh 13:49:51 that's trickier. 13:50:09 ais523, why would you need help on that? Or is it for dealing with marking such homework questions? 13:50:16 Vorpal: I can't solve one of them 13:50:21 which is tricky, given that I'm meant to mark it 13:50:24 ah 13:50:38 it's https://sites.google.com/site/focs1112/programming-assignments week 11 question 2 13:50:46 ais523, I'm quite interested to hear what it is then. And how students are expected to understand it 13:50:47 I'm not necessarily looking for the solution, just some pointers 13:50:51 (I /suspect/ the question is impossible) 13:51:05 oklofok: I don't know which term I might have told you. Unless you mean cargo cult programming. 13:51:17 ais523: that's very easy 13:51:25 amortized is the key term 13:51:26 oklofok: double-ended? that's what's stumping me 13:51:33 the problem is that it has to be based on an interaction net queue 13:51:40 hm 13:51:44 if you're allowed to do it in amortized constant time using any method you like, it's easy 13:52:00 I can do question 1, which asks for the same operations using a different underlying data structure 13:52:08 hmm 13:52:20 I'm not familiar with the term "interaction net queue". What is that? 13:52:23 what's an interaction net queue+ 13:52:25 right 13:52:27 Vorpal: do you know about difference lists in Prolog? 13:52:28 ? 13:52:32 ais523, nope 13:52:41 ais523, I don't really know any prolog 13:52:56 apart from a few basics things about the syntax 13:53:00 isn't the point of a difference lists exactly that you can make a queue with it? 13:53:00 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 i once coded in prolog 13:53:05 oklofok: indeed 13:53:19 that's called an interaction net queue in the lists, for reasons I don't really understand 13:53:24 ais523, hm. That is just a linked list 13:53:39 well circular one 13:53:41 (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 no? 13:53:46 Vorpal: err, no? 13:53:59 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 ais523, what does the last x mean then? 13:54:23 Vorpal: it's connected to the lambda x at the start 13:54:25 (this isn't scheme syntax, which language is it? 13:54:26 ) 13:54:29 Vorpal, a circular linked list would be Y (cons 1 . cons 2 . cons 3 . cons 4). 13:54:48 Vorpal, this is mind-bogglingly dense, even by your standards. 13:54:50 Phantom_Hoover, hm. Okay right, I see that 13:54:56 (the former not the latter) 13:55:25 so the usual way to write push-at-tail of x onto q would be lambda x'. q(cons(x, x') 13:55:32 s/$/)/ 13:55:36 ah okay, now it makes sense 13:55:46 push-at-tail is easy; push-at-head is easy; pop-from-head is easy 13:55:53 but pop-from-tail, I don't see how to get via that mechanism at all 13:56:15 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 ais523, the naive solution is simple enough, and you just said it as I was writing it out... 13:56:42 yes, but the question specifically disallows that 13:57:54 hmm, I guess there's programmers here who would find week 11 question 3 easier than week 11 question 1 13:58:11 ais523, I assume you aren't allowed to use debugging modules or such to mutate the linked list? 13:58:14 it basically comes down to "implement an imperative doubly-linked list", which is something people here have done a lot 13:58:24 Vorpal: it's not really a linked list 13:58:29 well okay 13:58:31 as in, it /is/, but of lambda bodies 13:58:44 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 ais523, which would be the relevant part for the debugging modules anyway 13:59:41 well, OCaml does allow mutation; that's what question 3's about 13:59:49 just that's not the underlying impl you're meant to use in question 2 13:59:56 hm 14:00:06 it is trivial to do this with mutation indeed. 14:00:28 trivial but ugly, IMO 14:00:34 well yes 14:00:43 I won't post my solution to that (and nor should you) in case some student of mine happens across it 14:01:00 ais523, I couldn't do it in ocaml, don't really know that language 14:01:05 I could do it in scheme though 14:01:08 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 oklofok: that's the answer to question 1 14:01:33 which asks you to do it like that 14:01:47 oh okay 14:02:14 hm. You could implement it with a balanced binary tree too. 14:02:41 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 Vorpal: there's nothing inherently sorted about a binary tree 14:03:07 although using them to maintain lists in sorted order is one of their main applications 14:03:28 indeed, I'm used to thinking about a key in a binary tree, this one wouldn't have one 14:03:33 but that is binary search tree 14:03:37 which is indeed different 14:03:56 btw trees are awesome 14:04:20 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 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 balancing looked awesome 14:04:32 oklofok, nice 14:04:54 i also made a binary heap, merge was like the best thing ever :D 14:04:58 fizzie: because you can make a queue from two stacks, but you can't make a stack from two queues 14:05:10 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 oklofok, so AVL, AA and so on 14:05:24 (you had two windows for building heaps and you could then merge them) 14:05:37 oklofok: did the red-black tree visualisation actually use red and black? 14:05:44 ais523: yes 14:05:52 hmm, I should learn what a red-black tree is someday 14:05:55 i don't know what AA is 14:05:56 ais523: Yes, but you just said push-at-head and pop-from-head are both "easy". 14:05:58 I wonder if I know the concept already but not the name 14:06:00 ais523: learn 2,3 trees instead 14:06:04 unless you already do 14:06:17 do learn them, that is. whatever that means. 14:06:22 fizzie: right, but then you're not using the interactionnetiness at all 14:06:27 oklofok, what are 2,3-trees now again= 14:06:30 which probably doesn't count as a solution to the question 14:06:31 s/=/?/ 14:06:38 erm 14:06:51 when i said 2,3 trees i suppose i meant avl trees. let's see what's what... 14:07:11 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 yeah i meant avl tree 14:07:32 avl trees are a sensible version of red-black trees 14:07:34 fizzie: I did ask, but I didn't get a useful answer 14:07:37 ais523, do you often see unusual and clever solutions to the questions that you didn't expect btw? 14:07:49 Vorpal: often, no 14:07:51 but I do occasionally 14:08:08 Vorpal: apparently 2,3 trees are essentially the same as aa trees. 14:08:13 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 oklofok, ah okay. How do they differ then? 14:08:29 Vorpal: you get bonus marks for shorter or faster solutions than the other students on this course 14:08:49 shorter in terms of token count, where whitespace and comments don't count as tokens 14:08:49 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 Vorpal: i don't know how they differ because i didn't quite check what they are. 14:09:02 ais523, that is strange. In Sweden at least I'm pretty sure the laws say that grading should not be competitive. 14:09:07 just that they aren't avl trees. 14:09:08 not so in UK I guess? 14:09:20 Vorpal: oh, the way it's done here is that the marks aren't binding 14:09:24 they're really points, rather than marks 14:09:28 I see 14:09:30 grading should totally be competitive 14:09:37 and they are competitive, but don't have any direct input into the final grade on the course 14:09:59 ais523, then what is the point? Making sure everyone passes a minimum level? 14:10:10 ais523, and doesn't this mean you encourages golfing btw? :D 14:10:12 trying to encourage people to get better at the course 14:10:14 and sure, I noticed that 14:10:23 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 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 oklofok, hm 14:10:54 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 i think ais' exact words on the subject were "MWAHAHAHA" 14:11:18 ais523, what on earth is float_of_int? 14:11:26 Vorpal: a conversion routine 14:11:29 ah 14:11:31 takes an int as an argument, returns a float with the same value 14:11:40 fizzie, true 14:11:48 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 float_of_float 14:12:31 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 fizzie: right, but achievements tend to be booleans 14:13:02 but you can have a hundred of them 14:13:19 ais523, and just using float does what? 14:13:35 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 Vorpal: exactly the same thing 14:14:08 I think it's some older primitive, and I suspect float_of_int's implemented in terms of it 14:14:13 ah 14:14:13 i wish the people who make these horrible mmorpgs did something useful with their lives and made achievement unlocked 4 14:14:31 Did they make a 3? I must've missed that. 14:14:35 is there a third one? 14:15:01 google returned stuff for 3 so :D 14:16:34 fizzie: oh and yes, that's the term i meant. 14:17:09 can't get the third one to run. Weird. 14:17:36 try the next link 14:17:40 The first hit (at muchgames.com) seems to be just #2 titled as #3. 14:17:53 While the achievementunlocked3.com didn't work for me either. 14:18:02 indeed that was the one I looked at 14:18:03 i haven't played 2 so okay 14:19:37 hmm, And Yet It Moves, along with its achievement called Gregor, also has an achievement called Random 14:19:42 which I think just you get randomly 14:20:39 ais523, wait HashMap gives a syntax error on int? 14:20:41 wtf 14:20:44 it works with Integer 14:20:53 Yes, because Integer extends Object. 14:20:55 does it required a boxed type? 14:20:55 'int' doesn't. 14:20:57 I guess so 14:21:04 Vorpal: doesn't work with primitives 14:21:06 strange it is a /syntax/ error though 14:21:09 All generics need "real" objects. 14:21:15 Vorpal: int is a keyword 14:21:19 oh right, I forgot generics were just a compiler thing 14:21:24 and you generally can't use keywords in arbitrary contexts 14:21:28 as opposed to actually existing in the byte code. 14:21:32 @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 Consider it noted. 14:21:37 THAT GOES FOR THE REST OF YOU 14:23:30 Vorpal: You can't put an "int" into an old-style non-generic ArrayList either. Primitives are very special. 14:24:56 It does do that autoboxing, though, so you can use an HashMap pretty much like you'd use a hypothetical HashMap, at least as long as you don't care about efficiency. 14:27:02 (Speaking of which: given enum Moo, then an EnumMap is likely to be fasterer than a HashMap, if you need to map that way.) 14:28:40 fizzie, I didn't need that here. I was mapping player ids to player objects 14:29:20 (this set might be sparse if a client disconnects btw) 14:33:14 hmm, it seems that there's a sort of self-balancing tree called a scapegoat tree 14:33:38 now I'm wondering if it'd be useful for the VCS, just due to the naming coincidence 14:33:54 (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 ais523, maybe if memory efficiency is important and you have a lot of very nodes with very small keys and data? 14:36:25 ais523, I remember looking that up and getting really confused when Scapegoat first turned up. 14:36:45 heh 14:36:58 s/very// 14:37:01 Vorpal: the main thing that self-balancing trees have to compete with is hash tables 14:37:25 ais523, the problem with hash tables is the worst case complexity is not very good 14:37:59 right, but the worst case also doesn't happen in practice, barring malicious input 14:38:02 sometimes even including malicious input 14:38:32 ais523, hm I guess a hash table with an self balanced tree per bucket might be a good compromise? 14:38:35 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 ais523, rather than the usual linked list per bucket 14:39:02 Vorpal: that's generally inferior to just rebuilding the hash table to have more buckets 14:39:24 "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 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 and in practice, usually the latter 14:39:35 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 Vorpal: right 14:40:08 IMO hashes should be infinitely long to allow for that issue 14:40:14 and truncated for use in hash tables 14:40:20 heh 14:41:22 (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 I don't think hash tables normally use cryptohash 14:42:38 indeed 14:42:54 for that very reason too 14:43:08 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 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 (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 ais523, selected per session or what? 14:44:12 per invocation of the perl(1) interpreter 14:44:25 right, that is what I meant 14:44:39 you can set the seed via env var if you need repeatability 14:44:50 (for, e.g., order of iteration over keys) 14:44:55 or just use wol 14:45:13 "just" 14:45:39 well okay 14:46:04 setting an env var seems easier than using a program nobody but me dares run 14:46:18 I keep expanding that to wake-on-lan. 14:46:22 true 14:46:38 fizzie, hah, yes 14:52:31 Heh, there's a WoWLAN; a wake-on-wireless-LAN thing. (Nobody does it.) 14:53:04 fizzie, nobody supports it hm. Well not strange 14:53:26 fizzie, actually I seem to remember seeing that as a BIOS option on some system at some point. 14:53:29 Some Intel chips can do it. 14:53:30 hm can't remember which one 14:53:36 my laptop? My dad's laptop? 14:53:37 hm 14:53:45 fizzie, I have intel wireless so... 14:56:41 How. Does. XKCDBucket. Know. About. Agora. 14:56:57 Also. Why. Am. I. Being. Overdramatic. About. This. 14:57:08 hi 15:03:23 I may require sleep 15:04:10 "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 `run words 15 # close kinship here 15:05:44 hun rungummimne exsto akesta lita dccclxivt erlayali thema brism gewa unspoii putobolle llle roninglobu idnen 15:06:21 *heuristic 15:07:39 "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 fungot: Did you by any chance know this guy? 15:07:47 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 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 (same goes for the other predefined colours) 15:15:04 Vorpal: I don't know 15:15:08 hm okay 15:16:41 Vorpal: Color.BLACK: Since: 1.4. So that's why. 15:16:51 Okay, that's a reasonably poor "why", but anyway. 15:17:21 If they'd deprecate one, they'd probably deprecate the does-not-follow-the-conventions lowercase one. 15:21:20 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 so I've got about 2 hours between classes to do homework or study in the library. 16:18:21 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 This "predict words from initial prefixes" text input keeps trying to say "cocks" whenever I start something with "co". 16:44:57 "ct" it predicts as "cthulhu". I think it has some sort of a learning system. 16:45:25 well, how many words start with ct? 16:46:31 13 nouns, according to WordNet. 16:46:47 And one adjective. 16:47:00 All /proper/ nouns? And/or cocks? 16:47:04 But it's very generous with the definition of "word". 16:48:05 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 http://sprunge.us/fgjP 16:49:41 fizzie, where is that predictive input btw? 16:49:52 It suggests "cc65" for plain "c", so I'm thinking I'm still justified in believing it learns. 16:50:10 Vorpal: N900. As far as they go, it's not the most impressive one. 16:50:23 fizzie, you write "cocks" a lot? And cc65? 16:50:59 I'm not sure I'd say "a lot", but I've no clue how it picks candidates. 16:51:16 what would cc65 even be? 16:51:16 I'm likely to have written both words at least once. 16:51:36 It's a silly C compiler for 6502 and others. 16:51:40 ah 16:52:02 I've used it's assembler as a standalone thing, there's not too much wrong with it. 16:52:27 The compiler itself, as far as I've understood, is not terribly impressive. 16:52:50 heh 16:53:03 fizzie, trying to think of things using 6502 atm... 16:53:11 C64. NES. 16:53:20 Well, NES is a close relative. 16:53:20 I meant modernish things 16:53:24 Ohhhh. 16:53:42 fizzie, I was going like "is it used in embedded things?" 16:53:47 and so on 16:54:08 -!- ais523_ has joined. 16:54:14 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 true 16:55:40 -!- ais523_ has changed nick to ais523. 16:55:46 I think some modernish thing used the 65C816, a 16-bit derivative. 16:56:07 Oh, and the Terminator (from the movie of same name) runs on a 6502. :p 16:56:08 heh 16:56:23 fizzie, what, do they say that in the movie? 16:56:29 if so that is just silly 16:56:39 You can see 6502 assembly scrolling down when they show its eye-cam thing. 16:56:45 hah 16:56:51 fizzie, what does the program in question do? 16:56:52 that doesn't mean it runs on a 6502 16:56:54 They probably just wanted something techy-looking. 16:56:57 just that it thinks in 6502 asm 16:57:31 Vorpal: Apparently it's an Apple DOS 3.3 disassembly. 16:57:58 "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 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 Futurama's Bender is explicitly stated to have a 6502 for a brain. 16:58:30 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 fizzie, so the alcohol is actually for coolant? 17:47:26 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 Hello! 18:38:18 -!- MSleep has changed nick to MDude. 18:38:53 -!- elliott has joined. 18:39:43 Spam spam. 18:40:04 Evening, elliott 18:40:09 @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 18:40:09 18:40:09 @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 Unknown command, try @list 18:40:09 elliott: You have 1 new message. '/msg lambdabot @messages' to read it. 18:40:09 Unknown command, try @list 18:40:55 elliott: Did you see how I summoned conal? 18:41:02 21:37 < shachaf> rwbarton: Back in my day, reading a file *denoted* something! 18:41:02 21:38 < conal> shachaf: :) 18:41:07 shachaf: :D 18:41:19 I wonder if conal has "denote" on ping. 18:41:24 I asked him. 18:41:26 He claims not. 18:41:47 But he does have "*denote" on ping. 18:41:56 Whoops, I was only going to say "spam" today. 18:41:59 Maybe he always has #haskell open on one monitor, but the words don't mean anything most of the time. 18:42:00 Broke that rule pretty fast X_X 18:42:16 elliott: Remember how you asked me about 20 hours ago if I slept? 18:42:46 Yes. 18:43:00 Well, I'm sure you can guess what I haven't done since then. 18:43:09 Talked? 18:43:22 http://esoteric.voxelperfect.net/wiki/Special:Recentchanges holy CRAP, somebody teach atrapado about preview 18:46:38 elliott: Good lawd 18:46:41 Why 18:46:46 Why would you do that 18:46:58 hmm, can I add quotes from other channels? 18:47:18 `quote 1 18:47:21 1) I used computational linguistics to kill her. 18:47:35 ais523, I'm quoted from the MC server 18:47:40 hmm 18:47:43 I may as well not, anyway 18:47:44 "Functors are not very interesting by themselves" 18:47:44 `quote communism 18:47:48 487) This staircase is very good for correcting people's opininons about communism 18:47:52 ais523: what quote? 18:48:13 But yeah, as Gregor is implying, a bunch of old quotes are from elsewhere 18:48:41 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 welcome to the internet its this this that the depatment of defense.... well, we'll skip that people look at kittens sometimes 18:49:00 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 probably not good enough quality to add 18:49:12 but it's still surprisingly insightful 18:49:25 The quotes aren't supposed to be insightful. 18:49:28 Ex: 18:49:28 `quote 18:49:32 209) "* 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." ^^^ This bullet-point is my crowning achievement as as a scientist. 18:49:41 how is that not insightful? 18:50:06 also, shouldn't it be <<< not ^^^ when the quote's collapsed into a single line like that? 18:50:14 ais523: "its this this that the depatment of defense...." what 18:50:27 elliott: an attempt to explain the Internet, before getting bored and summarising 18:50:35 X_X 18:50:38 implication's that it's starting with the history 18:50:40 elliott, put some commas in randomly 18:50:41 like summaries often do 18:50:42 You're on different wavelengths here. 18:50:50 hi Gregor 18:51:07 HELLIOTT 18:51:28 shachaf: My monad spiel is now my top SO answer. 18:51:44 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 `quote 18:51:47 `quote 18:51:47 `quote 18:51:47 `quote 18:51:48 `quote 18:51:50 >_< 18:52:02 262) (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 elliott: Does "white background" mean "not accepted"? 18:52:36 -!- cheater_ has joined. 18:53:39 shachaf: Yes. 18:53:51 168) < 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 289) zzo38: you missed the point. the point was way stupider than that. 18:53:54 52) Maternal instincts? Don't you just leave the thing in a box until it starts crying, and then shake it until it stops? 18:53:54 641) 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 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 21:49 < shachaf> You could fork when you're about to have too many FDs open. :-) 18:54:23 21:49 < rwbarton> yes! let's spawn a new process and hand it file descriptors over unix sockets! :D 18:54:26 21:49 < rwbarton> Too bad kmc isn't here, he'd love this. 18:55:11 Ow. 18:55:12 My brain. 18:55:20 `pastlog running repeatedly until you get the right sequence of random numbers 18:55:24 oh, is kmc also in #esoteric nowadays? 18:55:27 hmm, I want to know context for that 18:55:57 olsner: No, you're imagining things. 18:55:58 2010-09-17.txt:20:33:11: 220| < 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 elliott: I see 18:56:09 fungot 18:56:09 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 Homestuck? 18:56:17 ^style 18:56:17 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 Knew it 18:56:29 It was "birthday" that clued me in 18:56:30 ^style europarl 18:56:31 Selected style: europarl (European Parliament speeches during approx. 1996-2006) 18:56:33 `pastlog then running repeatedly until you get the right sequence of random numbers 18:56:35 coppro: I like that style 18:56:36 It's been homestuck on that style for so long. 18:56:40 2010-09-11.txt:17:34:14: then running repeatedly until you get the right sequence of random numbers 18:56:41 fungot: tell me more 18:56:42 fizzie: HO HO HO HO HO HO HO HO 18:56:44 FireFly: HA 18:56:45 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 FireFly: I mistabbed you! 18:56:55 fizzie: HA. 18:56:57 Patter nmatches are the best kind of nmatches. 18:56:57 fizzie: HA HA HA 18:57:03 Ah ha. 18:57:08 Gregor, it happens. 18:57:27 elliott, I like your writing style, please write tutorials about everything you know 18:57:29 FireFly: I don't get mi-stabbed very often, in spite of "Gr" being a common-enough prefix. 18:57:56 Ngevd: No 18:58:00 :( 18:58:06 Hey shachaf, should I write a Haskell book? 18:58:24 elliott: Yes! 18:58:34 On this channel, only "co", "fi", "la" are suspectible to two-letter-mistabbings at the moment. 18:58:36 I should! 18:58:41 "Haskell: The C Perspective" 18:58:43 elliott: I'll give you magic meaningless Internet points for it. 18:58:49 Gregor: That already exists. 18:58:52 :( 18:58:52 "Haskell for C Programmers". 18:58:53 elliott: you should write a monad tutorial 18:58:54 It's super bad. 18:58:58 ais523: Fuck you!!! 18:58:58 -!- Gregor has changed nick to cofila. 18:59:01 Very very few people can even pronounce words starting with Ng 18:59:05 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 Ngevd: well, it's a perfectly reasonable consonant for ending words on 18:59:19 so why not for starting words on? 18:59:23 elliott: You should write "Haskell for Haskell programmers" 18:59:26 And it should be empty. 18:59:31 Ngevd: ng is the most underused initial consonant in all languages I know 18:59:44 "Haskell for esoteric programmers" 18:59:45 but it's perfectly pronouncible 18:59:47 And olsner knows at LEAST twenty languages. 18:59:50 elliott: THAT'S TOTALLY A MONAD TUTORIAL 18:59:54 SCUM OF THE EARTH 19:00:02 olsner: hmm, I pronounce it by treating the n as a semivowel 19:00:05 I THOUGHT I COULD TRUST YOU 19:00:07 (which is totally a real category of letters) 19:00:18 but then, that's how I pronounce it at the end of a word too 19:00:41 I think ng is really a semivowel too 19:00:45 elliott: Did you know chat.stackoverflow.com has a Haskell channel? 19:01:06 shachaf: Yes. I looked at the logs ("transcripts") and it's filled with that J Fritsch guy being terrible at Haskell. 19:01:11 you can make the nnnnnnnnng (ngngngngng?) as long as you like 19:01:55 elliott: Anyway, if you wrote a Haskell book, I would read it and possibly provide classical criticism. 19:01:59 olsner, I just start humming 19:02:01 That is to say, non-constructive. 19:02:13 Ngevd: yeah, you can do that too 19:02:20 ŋŋŋŋŋŋŋ. 19:02:23 And maybe even the other kind! 19:02:27 ŋevd. 19:02:32 `addquote elliott: Anyway, if you wrote a Haskell book, I would read it and possibly provide classical criticism. That is to say, non-constructive. 19:02:33 УНИЦОДЕ? 19:02:34 fizzie: yes! 19:02:35 796) elliott: Anyway, if you wrote a Haskell book, I would read it and possibly provide classical criticism. That is to say, non-constructive. 19:02:57 shachaf: I'd have to spend a bunch of time explaining Haskell's flaws :-( 19:03:19 elliott: No need! Just ignore them! 19:03:23 Haskell is perfect, remember? 19:03:28 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 Anyway, there is room in the world for a good free Haskell book. 19:04:05 The market demands it. 19:04:13 You'd make millions*! 19:04:13 -!- one_minute_pleas has changed nick to Ngevd. 19:04:31 *short scale millions 19:04:42 Which is to say, thousands. 19:04:52 Of pennies. 19:04:53 Of meaningless Internet points. 19:04:54 shachaf: Well, the first thing to do is to figure out what animal O'Reilly will use for it. 19:05:08 elliott: Are sloths taken? 19:05:19 I... doubt it. 19:05:28 Well then. 19:05:30 The Black Cat of Tynedale 19:05:30 That's done. 19:05:39 http://oreilly.com/animals.html 19:05:47 ^^^ actual cryptid 19:05:48 brb 19:05:57 the neanderthal. 19:06:17 cheater_, fuck off. 19:06:18 Weird that sloths aren't, they're such mainstream animals. 19:06:20 "MCSE in a Nutshell: The Windows 2000 Exams" -- Grand elephant 19:06:24 Seriously. 19:06:28 Phantom_Hoover: fuck on. 19:06:28 The *elephant*? 19:06:34 shachaf: X-D 19:06:46 Whoever chooses animals for O'Reilly books ought to be dot dot dot 19:06:49 The grandest elephant. 19:07:10 "ACCORDING to legend, the Black Cat of Tynedale lurks deep in the darkest woods of Northumberland." 19:07:15 Ngevd: How is this real. 19:07:22 "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 @where elliott 19:07:47 elliott is tumbling around Northumberland 19:07:58 COïNCIDENCE? 19:08:02 @where+ elliott elliott is thumbing around Northumberland 19:08:02 It is stored. 19:08:18 Hexhampture. 19:08:34 surely, from a sufficiently large distance, you can mistake anything for anything? 19:09:14 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 ais523, consider an infinitely large, light-emitting piece of yellow card. 19:09:25 fizzie, I have been on that, it is the best thing ever. 19:09:28 (After Hampture.) 19:09:45 fizzie: the Falkirk Wheel is awesome 19:09:51 which totally makes up for it looking silly 19:11:11 oh, the Millenium Commision are responsible? that probably explains the awesomeness 19:11:15 *Commission 19:11:48 *Millennium 19:11:54 as far as I can tell, they used up all their mistakes on the Dome 19:11:54 is there a function in Haskell for doing an in-order traversal of a Data.Tree.Tree 19:12:03 and just filled the rest of their work with awesome 19:12:07 all the Foldable stuff is prefix order it would seem 19:13:00 Back 19:13:35 > [1,2,3] <*> [4,5,6] 19:13:35 [1,1,1,2,2,2,3,3,3] 19:13:49 > [1,2,3] *> [4,5,6] 19:13:50 [4,5,6,4,5,6,4,5,6] 19:13:56 > [1,2,3] <* [4,5,6] 19:13:57 [1,1,1,2,2,2,3,3,3] 19:14:03 @ping 19:14:04 pong 19:14:36 -!- saberman_ has joined. 19:14:38 I think the internet is dying 19:15:12 Oh no 19:15:13 that's a bold statement to make 19:15:17 rip 19:15:25 Who gets the inheritance? 19:15:35 Phantom_Hoover, ARPAnet 19:15:37 al gore 19:16:11 -!- saberman_ has quit (Remote host closed the connection). 19:16:55 Wow, Dynamic Earth is a Millennium Commission thing? 19:17:01 elliott: hi in-order traversal of DAta.Tree hlep 19:17:02 hpel 19:17:14 using liberries 19:17:21 kallisti: What? 19:17:24 -!- asiekierka has joined. 19:17:25 libraries 19:17:26 hey 19:17:28 using the funktions 19:17:36 i haven't been to this place for a long time, wow 19:17:39 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 You were here like two months ago. 19:17:54 kallisti: Dude, it's just 19:17:56 :t Node 19:17:57 forall a. a -> Forest a -> Tree a 19:18:01 :i Forest 19:18:04 @src Forest 19:18:04 Source not found. 19:18:06 Oh come on. 19:18:10 Forest a = [Tree a]. 19:18:10 @src Tree 19:18:11 Source not found. stty: unknown mode: doofus 19:18:13 elliott: that is not an in-order traversal of a tree using the given library functions. 19:18:20 elliott: yes I know how to write an in-order traversal recursively 19:18:22 elliott in internet time that's a long time 19:18:31 elliott: you must submit to my constraint system. 19:18:41 When was cpressey last here? 19:18:48 Ngevd: Many months. 19:18:50 preflex: xseen cpressey 19:18:52 PyCon, I think. 19:18:54 Wait. 19:18:59 "Many moons" is I think what you say? 19:19:00 Useless channel. 19:19:29 2011-05. 19:19:30 Is the answer. 19:19:42 Before my time... 19:19:50 I came here 2011-08? 19:20:10 * shachaf has never been here. 19:21:32 elliott: I take it you've given up as there's no easy solution 19:22:07 at least elliott hasn't had to write an interaction net deque 19:26:31 kallisti: I gave up because I'm not here to write your code for you 19:26:35 However 19:26:38 > Node 42 [] 19:26:39 Node {rootLabel = 42, subForest = []} 19:26:43 kallisti: Use the library functions rootLabel and subForest. 19:27:27 Simon Jenkins has a knighthood?? 19:27:30 ha ha ha ha ha 19:27:42 For what, services to shooting his mouth off? 19:27:49 who's that? 19:28:01 @hoogle [a] -> Maybe a 19:28:02 Data.Maybe listToMaybe :: [a] -> Maybe a 19:28:02 Data.List find :: (a -> Bool) -> [a] -> Maybe a 19:28:02 Prelude head :: [a] -> a 19:28:17 ah 19:28:24 > find (const True) [1,2,3,4] 19:28:25 Just 1 19:29:43 2010's Computer Music Journal is lame 19:29:46 olsner, one of the Guardian's main columnists, notable among other things for being stupidly anti-science. 19:29:54 most of it is just people coming up with timbre-spaces 19:30:39 there's only one publication about actual audio synthesis. 19:30:49 cf. http://www.guardian.co.uk/commentisfree/2008/jun/06/maths.alevels 19:31:03 It's a very wide-topic journal. 19:31:53 I don't find timbre-spaces very interesting. 19:32:26 Additionally, http://www.guardian.co.uk/commentisfree/2010/jun/24/rees-makes-religion-out-of-science 19:33:02 "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 "GOD why can't you people effortlessly dispel people's irrationality?" 19:35:42 fizzie: what's a good year to read? there's a lot of them to search through. :P 19:38:29 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 bbl 19:40:11 (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 fizzie: SCOOOOOOOOOOOOOOOOOOOOOOOOOOOOORN 19:43:44 It's voice-activated. 19:44:09 Does it use SPEECH RECOGNITION to pick up the activation commands? 19:44:31 Precisely! That's why this is the first time it's activated. 19:44:42 You hit the incredibly unrealistic and precise conditions required for speech recognition to be feasible. 19:46:03 Well scorned. 19:46:37 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 elliott: we really need more powerful, and more open to the masses, brainwave readers 19:47:01 technology is getting there, luckily 19:47:12 ais523: Yes. Then fizzie will be even more obsolete. 19:48:02 elliott: incidentally, you have a huge Haskell bias in your SO answers 19:48:12 ais523: That's because I only look at the haskell tag. 19:48:22 I answered one (1) non-Haskell question, though. 19:48:26 heh 19:48:27 And that purity one wasn't really Haskell-related. 19:48:36 I was wondering if you were just looking for haskell tags 19:48:48 hmm, someone should ask INTERCAL questions on there 19:48:54 ais523: Well, I would look at other tags, but the popular ones are terrible: http://stackoverflow.com/questions/tagged/c 19:48:55 then point me to them so I can answer them 19:49:17 ais523: I would ask one, but I think that would be rep laundering. 19:49:23 ah, I see 19:49:33 (That was a joke.) 19:49:40 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 (The real reason is I have no INTERCAL questions to ask.) 19:49:49 when they asked that sort of question 19:51:49 elliott: wow, those C questions are bad 19:51:54 they really are 19:52:10 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 ais523: http://stackoverflow.com/questions/tagged/c%23 is possibly worse 19:52:19 as the most popular tag on the site 19:52:21 and was asking for reassurance, but fearing the worse 19:52:25 elliott: c#, I take it? 19:52:31 yep 19:53:17 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 I'd have forgiven em if e didn't mention the editor he was using 19:53:48 hmm... that's the only thing he quoted 19:53:52 clearly, he's using the editor '"Geany"' 19:53:57 rather than the editor 'Geany' 19:54:10 *e, w/e 19:54:11 and the answers are actually useful, mostly referencing Linux reimpls of the library functions prototyped in conio.h 19:54:19 The freenode ##c is quite bad at times. 19:54:23 fizzie: At times? 19:54:36 Sometimes it's just quiet. 19:54:47 Sometimes PoppaVic isn't there, I guess. 19:55:02 Well, that is very rare. 19:55:17 hmm, top INTERCAL result: http://stackoverflow.com/questions/2862785/is-there-an-intercal-mode-for-gnu-emacs 19:55:28 I love the people answering "no" without checking 19:55:43 people, plural? 19:56:00 the other intercal results seem to be people mentioning it in passing 19:56:01 well, one and a half 19:56:49 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 :D 19:57:12 fizzie: that would be even better if you used emacs in a terminal 19:57:21 terminal emacs doesn't render PDFs, though 19:57:24 " 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 itidus21: nah, they just thought that C would ignore types when incrementing numbers 19:58:04 they were worried that integer overflow worked like every other type of overflow, just going into the next bit of memory 19:58:07 which is a plausible misconception 19:58:26 -!- zzo38 has joined. 19:58:57 it should work like that :) 19:59:17 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 *NULL -= 1; /* now my memory is full of ones rather than zeroes */ 19:59:37 That, too. 19:59:49 That's useful. 19:59:56 (anyone who points out that NULL is not necessarily 0 is missing the point) 20:00:04 fizzie: It'll even run in one cycle. 20:00:19 Possibly one very long cycle. 20:00:21 Sure, it's just an increment. 20:00:59 [[ 20:01:03 ]] never mind 20:01:08 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 i think of overflow in a literal sense of like icecube trays being filled with water 20:02:45 each icecube cell's volume of water being a byte of some kind 20:02:51 ais523: did you know: dwarffortress is in Arch Linux's repositories? 20:02:53 take that, Debian! 20:02:57 elliott: I didn't 20:03:11 it strikes me as the sort of thing that Debian wouldn't want in their main repos, though 20:03:15 so.. the increment operator on an icecube tray would be a drop of water 20:03:34 increment too many times and the water leaks into neighbouring cells 20:03:42 ais523: it even installs a menu entry 20:04:11 elliott: but that's easy 20:04:16 my Jettyplay package installs a menu entry 20:04:33 ais523: well, DF doesn't come with a menu entry file 20:04:43 Do you like new way of arranging esolang list of ideas? 20:04:54 hmm, isn't this the second kernel update in two days 20:04:58 I even added three new entries as well, as making new sections 20:05:05 elliott: nor does jettyplay, I wrote one for the package 20:05:26 zzo38: I didn't see it because of all the spam 20:06:00 ais523: atrapado spam, you mean? 20:06:01 I think I'll yell at em on eir talk page 20:06:18 zzo38: I think it's an improvement 20:06:34 elliott: actually, regular spambot spam 20:06:42 while I'm clearing it, I don't open other pages to avoid deleting them by mistake 20:07:38 heh 20:07:55 (I've got pretty close to that beforen ow) 20:08:00 * 20:11:52 -!- asiekierka has quit (Remote host closed the connection). 20:12:23 Are you going to try to implement or write additional comment/question about any of these esolang ideas? 20:14:38 ais523: the year categories look nicer now 20:14:48 (yearcat2 was getting excessively wide) 20:15:24 http://esoteric.voxelperfect.net/wiki/Category:Before_1993 hmm... Forth shouldn't be in this category 20:15:24 zzo38: probably not in the near future, at least 20:15:43 elliott: because it's more recent than or equally recent as 1993, or because it isn't an esolang? 20:15:43 nor should PROLAN/M, arguably 20:15:47 ais523: latter 20:15:55 Forth dates back to the 70s 20:16:10 there's not an esolang with the same name, right? always worth checking that 20:16:17 well, the article doesn't describe one 20:16:19 feel free to decategorise nonesolangs from esolang categories, anyway 20:16:55 I did that for one of them, then got bored :) 20:18:37 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 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 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 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 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 I suppose the take-home message from all this is: never trust the words of my current ISP. 20:19:45 :D 20:20:18 why would the new ISP lie about that, anyway? 20:20:27 it seems a thing counterproductive to lie about 20:20:30 umm, * 20:20:31 ais523: Incompetence, I suppose. 20:21:07 Malice, probably not, since it doesn't really benefit them. 20:21:15 ais523: where does that umm go? 20:21:28 I suppose it could be just nastiness for its own sake, though. 20:21:35 elliott: it doesn't 20:21:41 the * by itself is the correction 20:21:44 ais523: oh 20:21:47 what is it correcting? 20:21:56 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 and word order 20:22:05 ah 20:22:07 well, it failed utterly 20:22:11 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 Sound devices available: 20:24:29 No Output 20:24:29 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 Hmph 20:24:38 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 so why did you change ISP? 20:26:23 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 :D 20:26:36 I'd be proud to be null Kallasjoki. 20:26:40 (My first name is not "null", in case anyone was wondering.) 20:26:49 Indeed, it's fizzie. 20:27:24 fizzie: is Kallasjoki your name either? 20:27:29 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 The surname is correct. 20:28:48 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 Let's hope they keep screwing up. (Or maybe not.) 20:29:22 as long as they screw up in harmless ways, it's just fun 20:30:09 They have a web forum for users. Some of the stories are... colorful. (In Finnish only, sadly.) 20:34:09 semantics of Finnish depend on color? 20:35:08 -!- zzo38 has quit (Remote host closed the connection). 20:35:18 2. (3) colorful, colourful -- (striking in variety and interest; "a colorful period of history"; "a colorful character"; "colorful language") 20:36:10 Oh god, I'm now talking on ##latin 20:36:31 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 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 "music/audio" 20:50:38 lol 20:51:00 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 music is all in your head, man 20:52:39 i thought you were saying that was a MIME type 20:52:42 oerjan: Need more 'a's, maaaaaaaaaan. 20:52:50 Gregor: Just because we can't do it doesn't mean there are not articles about it. 20:52:56 Gregor: aaaaaaaaaaaaaaaaaaaaaaah 20:52:56 "oh yeah what format is it in" "music/audio" "ok what plays that" "music and audio players" 20:54:29 And anyway, there are sort-of working things for subproblems, like extracting tempo curves automagically from audio. 20:55:49 Gregor: the division was intentional 20:55:55 Gregor: I'm looking for information on either. 20:55:58 Or separating polyphonic music to instruments up to some degree, or whatever. 20:56:17 fizzie: Also getting near to the technology to do such a thing requires writing papers about it. :p 20:56:35 SCIENCE AS SHE IS PLAYED 20:56:36 using statistics to figure out parameters of the "music" is something we can kind of do to an extent. 20:56:46 I just don't know how. :P 20:58:10 I think we should start simple. you can't go analyzing the most complex works ever written. 20:58:18 start with something like... Justin Bieber. or Rebecca Black. 20:58:20 I few terms ago a student here implemented beat detection for waveform audio. 20:58:34 We concluded that it works for music terrible enough that beat detection would work. 20:58:44 we don't have the tech to extract music from audio? thats amazing :o 20:59:06 itidus21: we had to pipe it to our hears in order to extract it. 20:59:08 *have 20:59:19 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 kallisti: *ears 20:59:22 subvocalization is fun anyway 20:59:33 Gregor: inverse pun? 20:59:36 i am currently subvocalizing foo fighters 20:59:45 inverted typo pun. 21:00:11 I bet you can apply beat detection to most foo fighters songs. 21:00:25 (wicked burn) 21:00:28 -!- DCliche has joined. 21:00:30 yeah let it go to waste. i love it but i hate the taste 21:00:45 no. quoting foo fighters lyrics is banned. 21:01:08 http://www.facebook.com/ go here instead 21:01:23 good news is i have never sampled a justin bieber song with my ears 21:01:29 so i can't subvocalize it 21:01:35 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 From what I've understood, "it" in general works not really that badly, but that's just a vague impression. 21:02:15 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 Gregor: thats a good sign for instruments 21:02:55 Gregor: real musicians don't play notes. 21:02:58 notes are just symbols, man. 21:03:03 Whoaaaaaaaaaaaaaaaaaah 21:03:04 Like 21:03:05 Whoaaaaaaaaaaaaaaaaaah 21:03:22 especially in electronic music... 21:03:29 it actually does become somewhat irrelevant. 21:03:55 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 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 review review 21:05:23 so today in intro to advanced math we learned about: BASIC SET THEORY 21:05:41 Hurrah 21:05:51 Today we learnt about me not handing in homework... 21:05:52 :/ 21:05:54 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 by hinted I mean he didn't say anything about it, but that's what he was doing. 21:06:44 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 fizzie: that's fine 21:06:59 general knowlege will be helpful, of course. 21:07:29 We use it as a coursebook on some courses. Of course there are many similar books. 21:07:51 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 @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 Consider it noted. 21:10:03 I'm going to be going to library so often it's going to be awesome. 21:10:08 oerjan: sometimes i can't tell whether your @tells are serious or not 21:10:10 +the 21:10:17 elliott: that was not serious 21:10:19 hope that helps. 21:11:13 ...it was. 21:11:34 but don't worry, even i can't tell sometimes. 21:12:06 you know what kind of blows my mind. 21:12:29 Diet Mountain Dew (sry mtn dew) has concentrated orange juice as the second ingredient listed 21:12:34 but apparently has no Vitamin C 21:13:25 "brominated vegetable oil" lol wuht 21:13:46 You, sir, are about to enter the BROminator. :) 21:14:26 -!- saberman_800 has joined. 21:14:43 kallisti: it's like hydrogenated vegetable oil, but with bromine instead 21:14:47 -!- Ngevd has quit (Quit: Goodbye). 21:14:56 of hydrogen 21:15:29 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 kallisti: halogen atoms bound to hydrocarbons tend to be incredibly safe for humans 21:16:08 CFCs are not poisonous in any way, that's why they became so popular 21:16:13 rather worse for the environment, though 21:16:31 I see. 21:16:44 I was mainly just not expecting the "vegetable oil" part and was less focused on the "bromine" part. 21:17:38 does anyone have a list of every pharmecutial brand name ever invented? 21:17:41 I'd like to add that to word. 21:17:48 I bet Wikipedia does. 21:17:56 kallisti: the US Trademark Office probably does, more seriously 21:18:04 well, US Patents & Trademarks Office 21:18:39 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: that was not serious 21:19:32 hope that helps. 21:19:32 ...it was. 21:19:35 kallisti: see what i mean 21:20:11 elliott: no 21:20:19 that was also not serious. 21:20:45 big help 21:20:51 hmmm their trademark search doesn't appear to have a category search 21:21:00 most helpful 2012 21:21:05 "a real winner" 21:21:08 oerjan: ps don't ignore quintopia for having things to do other than irc 21:21:08 best monqy 2012 21:21:10 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 `searchlog helpful most 2012 21:21:54 2012-01-09.txt:21:21:39: `searchlog helpful most 2012 21:21:59 uh oh 21:21:59 true searchlog quality 21:22:05 now you'll be even less likely to find it 21:22:16 what's the difference between log and searchlog? 21:22:27 searchlog is the best. 21:22:33 `ls 21:22:37 bin \ canary \ karma \ lib \ main \ paste \ quotes \ searchlog.hi \ searchlog.hs \ searchlog.o \ share \ wisdom 21:22:45 `paste searchlog.hs 21:22:48 http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.14186 21:23:11 oh wait it's still the bad one. 21:23:21 is it? 21:23:24 somehow 21:23:25 ah yes 21:23:30 wait, why do we have an implementation of grep in Haskell? 21:23:30 bad bad 21:23:38 ais523: i 21:23:43 we don't? 21:23:43 lol 21:23:45 -!- saberman_300 has joined. 21:23:51 any software is better if it's written in haskell 21:24:02 the highest goal of humanity is to rewrite all existing software in haskell 21:24:12 implemenation of grep in haskell: call out to another grep wrapper 21:24:15 "real good" 21:24:45 shachaf, it's true, I do love handing file descriptors through UNIX sockets 21:24:56 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 I don't actually think the ^.*....*$ is needed 21:24:59 I just put it there to be safe. 21:25:08 I don't *wanna* do topological sort! 21:25:13 c any software is better if it's written in haskell 21:25:14 the highest goal of humanity is to rewrite all existing software in haskell 21:25:18 You misspelled "@"!!!! 21:25:23 Or constraint solving! 21:25:24 pikhq_: meh, tsort's a really important algo 21:25:37 pikhq_: have you read about how Oz does constraint solving. 21:25:39 ais523: Doesn't make me want to do it any more. :P 21:25:50 it's come up naturally at least twice, which beats any other not-known-everywhere situation but priority queues 21:25:57 (in the biased ais523 way of looking at things) 21:26:02 oh, and parsers, but that doesn't count 21:26:11 I'm from the future and "@" and "haskell" look exactly the same it's very confusing 21:26:14 kallisti: No. 21:26:38 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 what 21:26:50 no 21:26:51 you're not 21:26:57 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 oh damn 21:27:15 itidus21: Haskell is very informal. 21:27:24 not even 1 step closer? 21:27:31 depends on what you're writing I guess. 21:27:33 a step sideways at least 21:27:41 hehe 21:27:42 ok 21:27:49 well coq can extract to haskell 21:27:52 :p 21:28:01 that's kind of the opposite ;P 21:28:06 your web server written in Haskell is not going to be more mathematically sound than Apache. 21:28:08 the next genius will incorporate I/O into mathematics directly 21:28:14 you're one step backwards from incorporating mathematical proofs into software 21:28:18 true geniouse 21:28:28 kallisti, it depends what you mean by "mathematically sound" 21:28:28 Haskell is about as formally specified as C. Fairly well for a programming language, but not very in an absolute sense. 21:28:56 kmc: a constructive proof about web servers or something. 21:29:03 I don't really know. 21:29:12 elliott: it was also partially that he had obviously not read my answer to him yesterday. 21:29:12 http://stackoverflow.com/questions/8648354/do-monads-do-anything-other-than-increase-readability-and-productivity 21:29:20 ugh 21:29:22 i'm not gonna click that 21:29:25 kmc: :) 21:29:27 * kallisti clicks it. 21:29:33 web servers theory "theory of the future" 21:29:34 monads are useless because C is turing-complete 21:29:40 kmc: no it's not 21:29:48 the answer is not that great either. 21:29:49 if evolution is true then why are there still monkeys, HMMMMM?!?!?!? 21:29:50 elliott: mostly it was low blood sugar, though. 21:30:23 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 `fetch http://sprunge.us/Ceae 21:30:32 2012-01-09 21:30:31 URL:http://sprunge.us/Ceae [510] -> "Ceae" [1] 21:30:41 kmc: qed 21:31:17 C is good if you want to do imperative programming 21:31:34 `run mv Ceae searchlog.hs; ghc -O2 --fllvm -o bin/searchlog searchlog.hs; chmod +x bin/searchlog 21:31:38 *low-level imperative programming 21:31:43 ghc: unrecognised flags: --fllvm \ Usage: For basic information, try the `--help' option. 21:31:53 oh 21:31:57 hmm 21:32:03 `run mv Ceae searchlog.hs; ghc -O2 -fllvm -o bin/searchlog searchlog.hs; chmod +x bin/searchlog #real programmers use LLVM 21:32:20 mv: cannot stat `Ceae': No such file or directory \ Linking bin/searchlog ... 21:32:37 ? 21:32:41 you already moved it 21:32:43 in the past 21:32:45 oh right 21:32:48 yes paste me. 21:33:10 I sometimes forget that I exist in a mutable world. 21:33:19 i think C is the best imperative language which doesn't rely on an interpreter 21:33:21 mutation is hard times 21:33:30 itidus21: what does best mean 21:33:42 itidus21: what does "doesn't rely on an interpreter" mean. 21:33:45 itidus21: no language relies on an interpreter 21:33:45 and what does "rely on an interpreter" mean 21:33:49 yes that 21:33:49 it means, in practice, c# and java don't get implemented without interpreters 21:33:56 what 21:33:58 C, C#, Java: the only imperative languages 21:34:06 nearly :D 21:34:07 also, C# and Java are OOP 21:34:10 which isn't the same thing as imperative 21:34:33 also they're not "interpreted" in the sense that "interpreted" usually means. 21:34:36 also they're compiled to bytecode and run on virtual machines "totally rely on interpreters" 21:34:39 at least 21:34:41 monqy: JITs, even 21:34:45 their common implementations aren't 21:34:45 oh yes that too 21:35:16 * kallisti imagines what java would be like if interpreted 21:35:19 C brought you linux 21:35:21 so. bad. 21:35:24 so bad 21:35:39 itidus21: ok 21:35:49 itidus21: is that supposed to make it the best 21:35:53 yup 21:35:59 :o 21:36:04 itidus21: yes, it's true. as soon as the first implementation of C was created, it sprang linux into existence. 21:36:13 and then it was the best 21:36:16 C brought you unix 21:36:20 * kallisti imagines what perl would be like if just in time compiled. 21:36:21 so. good. 21:36:38 sadly C also brought me windows 21:37:29 itidus21: but yes C# and Java are not really interpreted. did you know that? 21:37:42 itidus21: windows is mostly C++ 21:38:06 i see the mistake i made 21:38:16 C brought you C++ 21:38:20 that means it's the worst 21:38:37 i was probably trolling 21:38:45 oh 21:38:45 ok 21:38:59 itidus21, C is good if you want to do imperative programming with buffer overflows 21:39:07 @tell quintopia my insanity appears to be diminishing; also blue cheese is good 21:39:07 Consider it noted. 21:39:21 oh hm 21:39:35 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 subleq would have been a way better example. 21:39:49 i lack the education to make serious mistakes in statements about languages 21:39:57 i sure would love to program in this "Haskell" language with the proofs and the automatic memoization and parallelization 21:39:57 kmc: You have 1 new message. '/msg lambdabot @messages' to read it. 21:40:00 too bad it doesn't exist 21:40:12 i can only make trivial mistakes 21:40:13 you might be thinking of: Hacksell 21:40:20 maybe if reddit believes in something long enough, then it comes true 21:40:22 like christmas 21:40:45 kmc: what's up in curmudgeon land 21:40:59 Haskell is great because it lets me prove that Integers exist, in an inconsistent logic 21:41:00 @remember kmc i sure would love to program in this "Haskell" language with the proofs and the automatic memoization and parallelization 21:41:00 Done. 21:41:03 kmc: is the automatic memoization thing at least partially true? 21:41:08 kallisti: no 21:41:20 i mean, laziness is *kind* of like memoization 21:41:22 but only barely 21:41:23 right 21:41:28 it's not memoization of function (argument, result) pairs 21:41:42 sharing is kind of like memoisation, rather 21:41:43 it just means if you write «let x = big_complicated in (x + x)», it doesn't compute big_complicated twice 21:41:58 and technically / pedantically, that's not part of Haskell, it's an implementation detail shared by pretty much any Haskell implementation 21:42:01 i mean they're related more than "kind of" with all the memocombinators stuff and everything 21:42:07 elliott: I was under the impression that lazy evaluation = non-strict evaluation + sharing 21:42:07 but that's not automatic :P 21:42:18 kallisti: lazy evaluation has both of those properties 21:42:22 but the spec does not mandate lazy evaluation or sharing 21:42:34 elliott: so I guess you were just being more specific then... 21:42:43 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 memoizing a function requires mutating a cache data structure 21:43:17 laziness gives you implicit mutation of just the sort you need 21:43:30 you'll start kallisti again 21:43:43 elliott: no, only you have the power to make arguments out of nothing. 21:44:15 -!- atrapado has joined. 21:45:01 at first I used where exclusively 21:45:05 yesterday i tried to figure out why BART is broad-gauge 21:45:08 i think nobody knows 21:45:11 but as I write more Haskell I find myself liking let in more situations. 21:45:17 i think they were drunk when they designed it 21:45:20 kallisti, me too 21:45:29 * elliott doesn't. 21:45:32 where is good too though. they're both good. 21:45:35 one mistake i made is confusing the terms language and implementation.. 21:45:54 i like things to flow logically from top to bottom (even if that's not the true order of evaluation) 21:46:04 so "let" with the "top-level" expression at the end, is more natural than "where" 21:46:05 kmc: this is also why I think I actually prefer >>> to . 21:46:07 and another mistake i made is only considering PC computers 21:46:20 kallisti, yeah, unfortuantely (>>>) is less common and uglier 21:46:33 eh it's not uglier 21:46:36 it even shows you the direction 21:46:39 it's just more typing 21:46:40 sometimes "where" is good because the "top-level" expression can be understood by itself, and the helpers are self-contained details 21:46:51 right 21:46:51 * elliott doesn't think "flow logically" is meaningful like that. 21:47:00 If not the order of evaluation, what /do/ you go by? 21:47:08 kmc: federal law influenced by earthquakes down south? 21:47:08 I prefer using "let" when I just need to extract some values within a particular case or something. 21:47:12 that doens't need to go in where. 21:47:15 or even regulation 21:47:26 cheater_, interesting 21:47:33 btw the transbay tube is not earthquake-safe 21:47:57 kmc: another possibility: attempt to disable use of existing trains. someone got smeared by a train factory. 21:48:00 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 cheater_, yeah, it's great for vendor lock-in for sure 21:48:21 they can't buy trains from the same suppliers as the other subways in the country 21:48:21 okay so... sharing is literally just a mechanism of let binding (and equivalent sugars) 21:48:23 not really, you can always change a vendor 21:48:26 but they can buy trains from india, lol 21:48:26 ? 21:48:30 (except not, because BUY AMERICAN!!!) 21:48:33 (that was a question. oops) 21:48:59 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 *probable 21:49:10 yeah 21:49:12 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 that's a good theory 21:49:24 kallisti, let bindings, where bindings, module top-level bindings 21:49:34 ..."variables"> :P 21:49:36 *? 21:49:38 profit is a reliable motive 21:49:43 kmc: sharing is caring 21:49:44 not counting function arguments I guess. 21:49:49 yeah 21:49:55 or case-bound variables 21:50:09 those are more passing through existing sharing 21:50:18 to really answer your question I think you need a very detailed operational semantics 21:50:27 yes this is would be a good thing to know about. 21:50:27 and then you ask, where does thunk allocation occur, and where does forcing occur 21:50:37 -!- centrinia has joined. 21:50:40 have you read "Implementing lazy languages on stock hardware: the spineless tagless G-machine"? 21:50:41 `welcome centrinia 21:50:45 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 kmc: noep 21:50:57 elliott: Did you automate that? 21:51:12 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 kallisti, well, they have a very simple desugared Haskell-like language where these questions are relatively clear 21:51:23 kallisti, do you mean GHC? 21:51:28 er, yes. 21:51:33 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 GHC has a stack *of* pattern-matchings 21:51:50 the elements of the stack are "case continuations" 21:51:57 oh so just one. but it's not really a "call stack" either. 21:52:09 they look like "case (hole) of Foo x -> ...; Bar y -> ..." 21:52:17 kmc: any idea how much those techno goggles would cost to make? i was thinking of making a pair here 21:52:27 meaning "once you've finished evaluating whatever you're currently evaluating, branch on these cases 21:52:36 except some of the elements are "update frames" 21:52:49 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 centrinia: No. 21:53:50 kmc: your definition of case continuations seems backwards from what I was envisioning. 21:54:11 how so? 21:54:34 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 the expression currently being evaluated is implicit in the program counter 21:54:46 kmc: do you have a BOM for those? 21:54:46 the thing you need to remember is, what do you do after evaluation completes 21:54:49 cheater_, no 21:54:56 03:00:12: 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 Doesn't that apply to every language? 21:54:59 kmc: do you know nothing about how much they could cost? 21:55:01 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 elliott, yes, but people usually don't tell that lie about other languages 21:55:12 cheater_, ballpark of $30 21:55:14 elliott: what about assembly? 21:55:19 it depends what parts you have, and what you're making exactly 21:55:21 i've just spent more on pizza 21:55:23 kallisti: Indeed. 21:55:27 that's fine then 21:55:34 kallisti: As in, 21:55:37 kallisti: Indeed the same applies to that. 21:55:53 cheater_, browse these and maybe comment or contact the guy http://wealoneonearth.blogspot.com/search/label/goggles 21:56:05 he has some detailed build instructions 21:56:13 kmc: oh right lazy evaluation kind of happens in reverse when compared to strict evaluation. 21:56:16 I think? 21:56:16 oerjan, yeah, but that doesn't preclude something interesting coming from it. 21:56:20 kmc: thx4u 21:56:35 kallisti, maybe? 21:57:01 well, no. 21:57:09 I think I understand the case continuation bit though. 21:58:38 (by the way "evaluate" means "evaluate to whnf") 21:58:44 right. 21:59:01 if you have a deep pattern in Haskell, it will translate to many nested 'case's in STG-language 21:59:04 also another question: isn't beta-reduction and inlining the same thing in Haskell? 21:59:05 each once forces to whnf 21:59:11 kallisti, is it? 21:59:28 you're saying that inlining is a special case of compile-time partial evaluation? 21:59:35 it seems like when you inline a function you would also be beta-reducing it. 21:59:58 beta-reducing its application 21:59:58 rather 21:59:59 i think it's best to treat those as separate 22:00:01 but i don't really know 22:00:28 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 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 maybe it's referring to different intermediate representations. 22:00:38 you could read "secrets of the GHC inliner" 22:01:22 193 amazing sex tips to satisfy your GHC inliner 22:02:04 btw spineless tagless G-machine is the best name for a thing ever. 22:02:39 I don't think people would consider something inlining if it skipped the beta-reduction. 22:02:40 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 It would just increase the size of code and not save the cost of a call. 22:02:58 Although I guess the jump could be smaller? 22:03:16 or equivalently, every object is a zero object. 22:03:27 elliott: well you would still get the benefits of some rewrite rules if you inlined without beta-reduction 22:04:17 but... you would get more if you beta-reduced 22:04:43 oerjan: I'M GOING TO UNDERSTAND ALL THIS WHEN I READ C4TWM I'M SURE 22:04:51 * elliott convincing. 22:05:14 > iterate (filterM (const [True, False])) [] 22:05:15 Occurs check: cannot construct the infinite type: a = [a] 22:05:24 NOOOOOOO 22:05:24 cabinets for ten wacky monkeys 22:05:36 * shachaf shachaf shachaf * 22:05:45 shachaf: hi 22:05:45 elliott: you _do_ know what a category is, don't you. this is a rather trivial example. 22:05:52 :t filterM 22:05:53 forall a (m :: * -> *). (Monad m) => (a -> m Bool) -> [a] -> m [a] 22:05:54 oerjan: well on a good day, yes. 22:06:04 It's been almost thirty minutes away from IRC. I was starting to sweat. 22:06:24 > iterate(group>=>show.length++tail)"1" 22:06:26 ["1","1","1","1","1","1","1","1","1","1","1","1","1","1","1","1","1","1","1... 22:06:31 wtf 22:06:31 oh 22:06:54 > iterate(group>=>(:)<$>length<*>take 1)"1" 22:06:55 Couldn't match expected type `GHC.Types.Int' 22:06:56 against inferred type ... 22:07:01 > iterate(group>=>(:)<$>length<*>take 1)[1] 22:07:02 [[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 that's one way to look at it. 22:08:07 > iterate (toDyn . filterM (const [True, False])) [] 22:08:08 Couldn't match expected type `Data.Dynamic.Dynamic' 22:08:09 against inferre... 22:08:12 noooooooooo 22:08:13 > iterate(group>=>show.length++take 1)[1] 22:08:14 No instance for (GHC.Num.Num GHC.Types.Char) 22:08:15 arising from the literal `1... 22:08:19 :t fromDyn 22:08:21 forall a. (Typeable a) => Dynamic -> a -> a 22:08:34 oh duh 22:08:38 > iterate(group>=>length++take 1)[1] 22:08:38 :t fromDynamic 22:08:39 Couldn't match expected type `GHC.Types.Int' 22:08:40 against inferred type ... 22:08:40 forall a. (Typeable a) => Dynamic -> Maybe a 22:08:56 i guess you really needed that. 22:09:09 > fromDyn (toDyn 2) undefined -- ???????? 22:09:10 *Exception: Prelude.undefined 22:09:15 -!- Jafet has joined. 22:09:16 > iterate(group>=>return.length++take 1)[1] 22:09:18 [[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 kallisti: defaulting 22:09:26 oerjan: (:[]). is shorter 22:09:39 > iterate(group>=>(:[]).length++take 1)[1] 22:09:39 * elliott is just trying to get it even shorter somehow 22:09:40 [[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 > iterate(group>=>flip[length,take 1])[1] 22:09:56 Couldn't match expected type `GHC.Types.Int' 22:09:57 against inferred type ... 22:10:08 > iterate (toDyn . filterM (const [True, False]) . (`fromDyn` [])) [] 22:10:09 Couldn't match expected type `Data.Dynamic.Dynamic' 22:10:09 against inferre... 22:10:10 > iterate(group>=>flip[(length++),take 1])[1] 22:10:11 Couldn't match expected type `[a]' 22:10:11 against inferred type `[a1] -> G... 22:10:25 I have a feeling Dynamic is not the way to go about this :P 22:10:36 -!- saberman_101 has joined. 22:10:40 saberman_101: hi 22:10:45 :t count 22:10:46 Not in scope: `count' 22:10:49 :/ 22:10:53 @hoogle (a -> Bool) -> [a] -> Int 22:10:54 Data.List findIndex :: (a -> Bool) -> [a] -> Maybe Int 22:10:54 Data.List findIndices :: (a -> Bool) -> [a] -> [Int] 22:10:54 Data.List find :: (a -> Bool) -> [a] -> Maybe a 22:10:57 @hoogle a -> [a] -> Int 22:10:57 > iterate (toDyn . filterM (const [True, False]) . (`fromDyn` [])) (toDyn []) 22:10:57 Data.List elemIndex :: Eq a => a -> [a] -> Maybe Int 22:10:57 Data.List elemIndices :: Eq a => a -> [a] -> [Int] 22:10:58 Network.BufferType buf_concat :: BufferOp a -> [a] -> a 22:10:58 > iterate(group>=>flip[length,head])[1] 22:10:58 Ambiguous type variable `a' in the constraint: 22:11:00 `Data.Typeable.Typeable a... 22:11:02 [[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 elliott: ^ 22:11:14 oerjan: huh 22:11:16 is that shorter? 22:11:43 > iterate (\xs -> if length (filter id xs) > length (filter not xs) then xs++[False] else xs++[True]) [] 22:11:45 [[],[True],[True,False],[True,False,True],[True,False,True,False],[True,Fal... 22:11:46 1 char shorter i think 22:11:52 Hey, all y'all should golf a Pascal's triangle generator. 22:11:54 oh, predictable 22:12:09 That was brought up on a mailing list I'm on. 22:12:11 :t flip[?x] 22:12:12 forall a b. (?x::a -> b) => a -> [b] 22:12:25 > iterate(\f->zipWith(+)f(0:f)++[1])[1] 22:12:26 [[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 > iterate ((++[1]).(\f -> zipWith (+) f (0:f))) [1] 22:13:27 [[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 Yay, that's much shorter. 22:13:40 > iterate ((++[1]).(zipWith (+) <*> (0:))) [1] 22:13:41 [[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 is there a way to get a structure like that? arbitrarily deep nestings of empty elements or whatever. 22:13:48 > iterate ((++[1]).zipWith (+) <*> (0:)) [1] 22:13:48 Couldn't match expected type `a1 -> a' against inferred type `[t]' 22:13:56 > iterate(foldr(\v(p:q)->v:(p+v):q)[0])[1] 22:13:57 [[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 I think zzo made something like that. 22:14:07 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 > iterate((++[1]).ap(zipWith(+))(0:))[1] 22:14:29 [[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 newtype T = T [T] 22:15:14 kallisti: Mu [] 22:15:20 wassat 22:15:26 newtype Mu f = Mu (f (Mu f)) 22:15:37 oh good 22:15:45 Moo. 22:15:47 :t Mu 22:15:48 Not in scope: data constructor `Mu' 22:15:51 NOOOOOOOOOOOOOOOOOOOOOOOOOOO 22:15:54 @ty In 22:15:55 forall (f :: * -> *). f (Mu f) -> Mu f 22:16:01 @ty fold 22:16:02 Not in scope: `fold' 22:16:02 @src Mu 22:16:03 newtype Mu f = In { out :: f (Mu f) } 22:16:03 @ty mu 22:16:04 Not in scope: `mu' 22:16:06 @ty cata 22:16:07 forall (f :: * -> *) a. (Functor f) => (f a -> a) -> Mu f -> a 22:16:11 @src cata 22:16:11 Source not found. This mission is too important for me to allow you to jeopardize it. 22:16:19 :t cata out 22:16:20 Couldn't match kind `(* -> *) -> *' against `* -> *' 22:16:20 @google type level fix and generic folds 22:16:21 When matching the kinds of `Mu :: (* -> *) -> *' and `f :: * -> *' 22:16:21 Expected type: f a 22:16:21 http://mainisusuallyafunction.blogspot.com/2010/12/type-level-fix-and-generic-folds.html 22:16:23 "cata" is WoW slang for Cataclysm 22:16:38 -!- saberman_1 has quit (Remote host closed the connection). 22:16:38 "WoW" is NetHack slang for Wand of Wishing. 22:16:53 "NetHack" is internet slang for hacking. 22:17:06 "internet" is internet slang for internet. 22:17:12 *internetworking 22:17:47 I sure hope 3 people upvote me in the next date 22:17:48 ... 22:17:55 I sure hope 3 people upvote me in the next 2 hours. 22:18:06 * elliott is good at switching windows. 22:18:26 Is that how dating sites work these days? 22:18:49 Totally. 22:18:50 Jafet: Dating is all about SO reputation these days. 22:19:43 SO is all about whores 22:20:13 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 He can even give to them out of his large... reputation 22:21:11 elliott's reputation overflows the stack. 22:21:59 fizzie: It's true! That's how I met lax. 22:22:12 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 > iterate(filterM(const[True,False]).In)[] 22:22:26 Couldn't match expected type `[a]' against inferred type `L.Mu []' 22:22:30 fizzie: You tried to find my SO reputation as a group activity? 22:22:41 elliott: Well, you see, my wife was interested in your reputation. 22:22:50 * elliott is famous. 22:22:55 elliott's reputation precedes him. 22:23:04 You know you've made it when fizzie's wife knows about your reputation. 22:23:11 fizzie is married?! 22:23:15 Way to crush my dreams. 22:23:23 Your reputation had just passed five thousand at that point; I see it's over six thousand already now. 22:23:30 > iterate(In . filterM(const[True,False]))[] 22:23:31 Couldn't match expected type `L.Mu []' against inferred type `[a]' 22:23:38 :t In 22:23:39 forall (f :: * -> *). f (Mu f) -> Mu f 22:23:50 @ty InR 22:23:51 forall a. (Rec a -> a) -> Rec a 22:24:05 > iterate(In . filterM(const[True,False])) (In []) 22:24:06 Couldn't match expected type `L.Mu []' against inferred type `[a]' 22:24:23 @src Rec 22:24:24 newtype Rec a = InR { outR :: Rec a -> a } 22:24:24 -!- saberman_1 has joined. 22:24:27 fizzie: Conal also has a Stack Overflow account! He has less reputation than me. 22:24:35 Soon everybody will forget about THAT Elliott. 22:24:52 -!- saberman_1 has quit (Remote host closed the connection). 22:24:57 fizzie, why on earth did your wife care about elliott's SO rep. 22:25:06 > iterate(In . filterM(const[True,False]) . \(In xs) -> xs) (In []) 22:25:07 Couldn't match expected type `L.Mu []' against inferred type `[a]' 22:25:22 Phantom_Hoover: Who wouldn't? 22:25:23 shachaf: Why isn't Rec defined as type Rec = Mu :. Flip (->) 22:25:26 UNFORGIVABLE 22:25:41 fizzie, HELP AM I THE ONLY ONE WHO WISHES HE WOULD STOP 22:26:10 elliott: WHY AREN'T *YOU* DEFINED AS type You = Mu :. Flip (->)??? 22:26:11 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 shachaf: I AM 22:26:31 > iterate(filterM(const[True,False]).map out)[] 22:26:32 Couldn't match expected type `[t (L.Mu t)]' 22:26:32 against inferred type `... 22:26:34 fizzie: What is it with everybody talking about #esoteric IRL? 22:26:39 hmph 22:26:41 @src Mu 22:26:41 newtype Mu f = In { out :: f (Mu f) } 22:26:45 WHAT HAPPENS IN #ESOTERIC STAYS IN #ESOTERIC. 22:26:59 Except for the bits that leak out into the logs. 22:27:05 Well, we redact most of those. 22:27:44 > iterate(map In . filterM(const[True,False]))[] 22:27:46 [[],[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 @ is the ASCII CHARACTER THAT COMES AFTER ? 22:28:05 fizzie: Searching "elliott" also finds a Haskell question where Trevor Elliott is mentioned. :/ 22:28:10 I need to assassinate the other Elliotts. 22:28:39 "assassinate" is like "murder" except the target is important, right? 22:28:44 oerjan: Now rewrite everything with Mu [] and you'll be an Ursula user. 22:28:51 shachaf: Yes. 22:29:01 -!- saberman_1 has quit (Remote host closed the connection). 22:29:38 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 SO Haskellers know what's *really* important. 22:30:32 -!- saberman_1 has joined. 22:30:39 :t ana 22:30:40 Not in scope: `ana' 22:30:43 -!- cheater_ has quit (Quit: leaving). 22:30:45 Lame. 22:30:53 I'll tell cheater_ you want him back. 22:31:11 How kind. 22:31:31 @let ana f = fix (\g -> In . fmap g . f) 22:31:32 Defined. 22:31:35 :t ana 22:31:35 -!- saberman_1 has quit (Remote host closed the connection). 22:31:36 forall a (f :: * -> *). (Functor f) => (a -> f a) -> a -> Mu f 22:31:50 > ana (:[]) 42 22:31:51 In [In [In [In [In [In [In [In [In [In [In [In [In [In [In [In [In [In [In ... 22:33:05 > fix(out<$>) `asTypeOf` Nothing 22:33:06 Couldn't match kind `* -> *' against `(* -> *) -> *' 22:33:13 @src Mu 22:33:14 newtype Mu f = In { out :: f (Mu f) } 22:34:10 > fix(In . pure) `asTypeOf` Nothing 22:34:11 Couldn't match expected type `L.Mu f' 22:34:11 against inferred type `Data.M... 22:34:17 wat 22:34:22 oh hm 22:34:31 > fix(pure.In) `asTypeOf` Nothing 22:34:32 Just (In (Just (In (Just (In (Just (In (Just (In (Just (In (Just (In (Just ... 22:34:38 this just in 22:34:42 > fix(pure.In) `asTypeOf` [] 22:34:43 [In [In [In [In [In [In [In [In [In [In [In [In [In [In [In [In [In [In [In... 22:34:54 > fix(pure.In) `asTypeOf` (Left "") 22:34:56 Right (In (Right (In (Right (In (Right (In (Right (In (Right (In (Right (In... 22:36:29 :t showList 22:36:30 forall a. (Show a) => [a] -> String -> String 22:37:16 -!- saberman_1 has joined. 22:37:21 :t \f -> fix (In . f) 22:37:22 forall (f :: * -> *). (Mu f -> f (Mu f)) -> Mu f 22:37:27 -!- saberman_1 has quit (Remote host closed the connection). 22:37:38 :t \f -> In (fix (f . In)) 22:37:38 forall (f :: * -> *). (Mu f -> f (Mu f)) -> Mu f 22:37:47 ...duh :P 22:37:57 oerjan: oh it's the asTypeOf that broke yours 22:38:04 > fix (In . Just) 22:38:06 In (Just (In (Just (In (Just (In (Just (In (Just (In (Just (In (Just (In (J... 22:38:24 yeah 22:38:50 !perl "sup" =~ // 22:38:53 No output. 22:39:10 !perl "sup" =~ m// 22:39:11 No output. 22:39:22 > iterate(map var.filterM(const[True,False]))[] 22:39:23 Couldn't match expected type `Data.Number.Symbolic.Sym a' 22:39:23 against i... 22:39:48 I wish I had GHC 7.4. 22:40:42 shachaf: What system are you on? 22:40:53 :t \f -> (map f .) 22:40:54 forall a b (f :: * -> *). (Functor f) => (a -> b) -> f [a] -> f [b] 22:41:03 :t \f -> (map f Prelude..) 22:41:04 forall a b a1. (a -> b) -> (a1 -> [a]) -> a1 -> [b] 22:41:19 shachaf: Wait, you realise there are GHC 7.4 binaries, right? 22:41:26 elliott: Yes, but I'm too lazy to install them. 22:41:32 And also, they're release candidates. 22:41:38 @hoogle (a -> b) -> (a1 -> f a) -> a1 -> f b 22:41:38 Control.Parallel.Strategies ($|) :: (a -> b) -> Strategy a -> a -> b 22:41:39 Control.Parallel.Strategies ($||) :: (a -> b) -> Strategy a -> a -> b 22:41:39 Control.Parallel.Strategies (.|) :: (b -> c) -> Strategy b -> (a -> b) -> (a -> c) 22:41:39 I'm waiting until one of them gets voted in. 22:41:50 Democracy, you know. 22:42:09 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 @hoogle (a -> b) -> (a1 -> [a]) -> a1 -> [b] 22:42:15 No results found 22:42:28 "I believe the Show superclass constraint has been removed from Num." PRAISE THE LORD 22:43:45 ALL PRAISE LORD ØRJÄÑ 22:43:56 > iterate(map(var.show).showfilterM(const[True,False]))[] 22:43:56 Not in scope: `showfilterM' 22:44:01 > iterate(map(var.show).filterM(const[True,False]))[] 22:44:02 [[],[[]],[[[]],[]],[[[[]],[]],[[[]]],[[]],[]],[[[[[]],[]],[[[]]],[[]],[]],[... 22:46:08 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 all the problems that don't require real work, that is. 22:47:40 `perl @a = (undef); print @a // 1 22:47:43 Can't open perl script "@a = (undef); print @a // 1 ": No such file or directory 22:47:44 !perl @a = (undef); print @a // 1 22:47:45 1 22:47:56 !perl @a = (undef); print $a[0] 22:47:57 No output. 22:48:07 !perl @a = (undef); print scalar @a 22:48:08 1 22:48:51 !perl @a = (1,2,3); print @a // 3 22:48:52 3 22:48:54 :( 22:49:27 so // is not entirely equivalent to a ?: as the docs suggest. 22:50:08 @hoogle (a -> b) -> (a1 -> [a]) -> a1 -> [b] 22:50:14 oh, wait, you already wrote that 22:50:35 @hoogle a -> b -> a -> b -> a -> b -> a 22:50:36 Data.List zipWith6 :: (a -> b -> c -> d -> e -> f -> g) -> [a] -> [b] -> [c] -> [d] -> [e] -> [f] -> [g] 22:50:37 Data.List zipWith7 :: (a -> b -> c -> d -> e -> f -> g -> h) -> [a] -> [b] -> [c] -> [d] -> [e] -> [f] -> [g] -> [h] 22:50:40 oerjan: it's fmap . fmap 22:55:12 elliott: i was hoping for an operator so i could just write var.show ... filterM(const[True,False]) 22:55:59 oh hm 22:56:00 :t (.:) 22:56:00 forall a b (f :: * -> *) (g :: * -> *). (Functor f, Functor g) => (a -> b) -> f (g a) -> f (g b) 22:56:29 :t (.:) `asTypeOf` fmap fmap fmap 22:56:30 forall (f :: * -> *) a b (f1 :: * -> *). (Functor f, Functor f1) => (a -> b) -> f (f1 a) -> f (f1 b) 22:56:36 yay 22:56:50 > iterate(var.show.:filterM(const[True,False]))[] 22:56:51 Couldn't match expected type `GHC.Types.Char' 22:56:51 against inferred type... 22:56:57 I pretty much have one response to questions in #haskell these days. 22:56:58 now what :( 22:57:06 "You should understand why blah blah blah." 22:57:10 I could make a shachafbot. 22:57:13 oerjan: Sym has a type parameter 22:57:51 kallisti: that didn't matter with map(var.show). 22:58:11 also can you powerset a Sym [a] ? 22:58:16 er 22:58:23 > iterate((var.show).:filterM(const[True,False]))[] 22:58:25 [[],[[]],[[[]],[]],[[[[]],[]],[[[]]],[[]],[]],[[[[[]],[]],[[[]]],[[]],[]],[... 22:58:32 oh 22:58:34 ..okay 22:58:37 ah the problem was precedence 22:58:47 or associativity, rather 22:58:55 I'm kind of confused as to how [] types as Sym [a] 22:59:04 it doesn't 22:59:13 it types as [Sym [a]] 22:59:29 :t vat 22:59:30 Not in scope: `vat' 22:59:32 :t var 22:59:33 forall a. String -> Sym a 22:59:41 okay then var is not that 23:00:44 @let varr :: Arrow a => String -> Sym (a b c); varr = var 23:00:44 Defined. 23:00:49 var.show is just a trick to get something of a fixed type that shows the same as whatever 23:02:09 wat 23:02:13 :t iterate 23:02:14 forall a. (a -> a) -> a -> [a] 23:02:19 :t var 23:02:20 forall a. String -> Sym a 23:02:44 :t mapAccum 23:02:45 Not in scope: `mapAccum' 23:02:47 [Sym [a]] /= Sym a 23:02:48 @hoogle mapAccum 23:02:49 Data.List mapAccumL :: (acc -> x -> (acc, y)) -> acc -> [x] -> (acc, [y]) 23:02:49 Data.Traversable mapAccumL :: Traversable t => (a -> b -> (a, c)) -> a -> t b -> (a, t c) 23:02:49 Data.List mapAccumR :: (acc -> x -> (acc, y)) -> acc -> [x] -> (acc, [y]) 23:02:59 Hmm. 23:03:01 What's the difference? 23:03:14 Between mapAccumL and mapAccumR? 23:03:19 Similar to foldl/foldr. 23:03:20 kallisti: so? that's why it's .: not . 23:03:32 mapAccumL is often the one you want, I think. 23:03:51 oerjan: oh, er... I don't know what's that doing here then 23:04:28 as elliott would say, I don't understand function composition 23:04:57 kallisti: (var.show).: converts a list's elements to Sym a without changing what their printed as 23:05:04 kallisti: So, like, you know functions? Imagine that you had, like, a function, and, like, another function. 23:05:12 And then you had a value. 23:05:14 shachaf: not what I meant. :P 23:05:32 And so you applied one function to the value, and then applie the other function to the result of that. 23:05:33 So far so good? 23:05:33 shachaf: also poor explanation 23:05:38 oh right, it's a function on the right producing a list, too 23:05:49 Function composition is the same thing, but WITHOUT THE VALUE. 23:06:11 so it's.... 23:06:33 var( show ( (filterM (const [True, False])) x) 23:06:35 ) 23:06:44 -) 23:06:53 ) 23:06:54 :) 23:06:55 > mapAccumL f a [x,y,z] 23:06:56 No instance for (SimpleReflect.FromExpr (SimpleReflect.Expr, y)) 23:06:57 arising... 23:07:04 shachaf: Lame? 23:07:17 kallisti: no, it's fmap (var . show) ((filterM (const [True, False])) x) 23:07:30 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 I mean, there's nothing reasonable you could even do there by hand. 23:07:49 There Is No Right Thing. 23:07:55 oerjan: oh caleskell okay 23:08:15 shachaf: Well, SimpleReflect isn't The Right Thing. :p 23:08:16 .: is caleskell 23:08:16 > mapAccumL (\a b -> (a ++ show b, b+1)) "init" [5,6,7,8,9] 23:08:18 ("init56789",[6,7,8,9,10]) 23:08:24 > mapAccumR (\a b -> (a ++ show b, b+1)) "init" [5,6,7,8,9] 23:08:25 ("init98765",[6,7,8,9,10]) 23:08:27 elliott: There you go. 23:08:29 Work it out. 23:08:31 oerjan: I'm aware of .: but I forget that it's a functor thing and not a function thing. 23:08:37 Actually the example I gave there is kind of terrible. 23:08:45 shachaf: accumE' x (Cons fs fss) = Cons xs $ accumE' x fss 23:08:45 where (x', xs) = instant x fs 23:08:47 > mapAccumL (\a b -> (a ++ show b, b+length a)) "init" [5,6,7,8,9] 23:08:49 ("init56789",[9,11,13,15,17]) 23:08:50 I'm trying to figure out which one I want to port to Stream. :p 23:08:52 > mapAccumR (\a b -> (a ++ show b, b+length a)) "init" [5,6,7,8,9] 23:08:54 ("init98765",[13,13,13,13,13]) 23:09:00 I suspect it's L. 23:09:03 elliott: You probably want to port mapAccumL to stream. 23:09:34 mapAccumL is, if I'm understanding correctly, the reasonably-lazy one for lists. 23:10:56 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 That's not how function composition works, kallisti. That's how laxatives work. 23:12:11 shachaf: Right. 23:12:24 `addquote 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 That's not how function composition works, kallisti. 23:12:24 That's how laxatives work. 23:12:25 Aw. 23:12:27 797) 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 That's not how function composition works, kallisti. 23:12:29 `delquote 797 23:12:34 ​*poof* 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 That's not how function composition works, kallisti. 23:12:37 > mapAccumR (\acc x -> (x:acc, x)) [] [1..] 23:12:37 HAH. 23:12:37 ([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 Too long for your quote database. 23:12:45 > mapAccumL (\acc x -> (x:acc, x)) [] [1..] 23:12:51 mueval-core: Time limit exceeded 23:12:51 mueval: ExitFailure 1 23:12:52 shachaf: Well, no, I could hack it in, but HackEgo would chop it off on reproduction. 23:13:03 oerjan: shachaf is lies. :( 23:13:08 Right. Which is good enough for me. 23:13:12 I like when stalker mode gets messages before irssi gets messages 23:13:25 *Main> takeStream 10 $ simulate (\e -> accumE 0 ((+1) <$ e)) (pure (Just ())) 23:13:25 [Just 1,Just 1,Just 1,Just 1,Just 1,Just 1,Just 1,Just 1,Just 1,Just 1] 23:13:27 :( 23:13:44 * shachaf has never used stalker mode. 23:13:53 I use it to verify that my line did not get cut off 23:14:08 I'm sure there's a better way I could be handling that. 23:14:14 Wow, this is just like reading IRC. 23:14:44 > snd $ mapAccumR (\acc x -> (x:acc, x)) [] [1..] 23:14:48 irssi handles line-wrapping, doofus. 23:14:49 mueval-core: Time limit exceeded 23:14:52 > snd $ mapAccumL (\acc x -> (x:acc, x)) [] [1..] 23:14:56 mueval-core: Time limit exceeded 23:14:58 shachaf: yep except no one knows you're there 23:14:58 If only I had a way of reading IRC... 23:15:18 perfect for humorous ragequits that you want to read the reaction to 23:15:24 kalliti: Unlike the normal situation, where no one cares you're there? 23:15:29 yes. 23:15:36 but maybe you're banned and you want to ruminate? 23:15:40 stalker mode has lots of possibilities. 23:16:21 i have a hunch one of mapAccumL and mapAccumR _ought_ to take the function flipped. 23:16:49 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 oerjan: NO THAT'S RIDICULOUS 23:16:53 I think elliott has done this. 23:17:06 with numerous join/parts 23:17:22 by foldl / foldr analogy 23:18:00 @hoogle traverse 23:18:00 Data.Traversable traverse :: (Traversable t, Applicative f) => (a -> f b) -> t a -> f (t b) 23:18:01 Data.Foldable traverse_ :: (Foldable t, Applicative f) => (a -> f b) -> t a -> f () 23:18:01 Control.Parallel.Strategies parTraverse :: Traversable t => Strategy a -> Strategy (t a) 23:18:13 -!- Patashu has joined. 23:18:14 elliott: hi have you ever used Control.Parallel.Strategies? 23:18:18 oerjan: Well, foldl/foldr are wrong. 23:18:24 And so are mapAccumLmapAccumR. 23:18:27 Everybody is wrong. 23:18:34 I'm wrong. 23:18:37 You're wrong. 23:18:49 elliott is wrong. 23:18:56 But if elliott is wrong, I don't want to be right, man. 23:19:06 kallisti: Yes. 23:31:09 "I believe the Show superclass constraint has been removed from Num." PRAISE THE LORD 23:31:16 yeah, fuck standards compliance! 23:31:21 fuck software which does what it's specified to do! 23:31:37 we'll bow to the whims of the pitchfork mob any day 23:33:29 unless GHC removes monomorphism restriction I will capsize five tankers in the ellingson fleet 23:34:37 GHC progresses way too slowly. 23:34:39 The Grassgrow Haskell Compiler. 23:34:57 the Glorious Glasgow Haskell-except-Num-has-no-superclasses Compiler 23:35:09 itym "Haskerr" 23:35:21 ? 23:35:25 nm 23:35:40 see, I'd be fine with a solution where -XHaskell98 and -XHaskell2010 do what they're supposed to 23:35:56 They don't? 23:36:00 nope 23:36:12 even with -XHaskell98, Show and Eq are not superclasses of Num 23:36:18 which breaks existing Haskell code 23:36:19 What about the fancy new superclass default constraint kind variable polymorphism inference thing? 23:36:21 some in standard libraries even 23:36:40 you'll need generalized abstract superclass default constraint kind variable polymorphism inference synonym families to do that 23:36:46 I thought that had something to do with them being able to removing superclasses without breaking compatibility. 23:36:52 but only a Java Monkey would fail to understand those 23:37:13 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 kmc: Oh. 23:38:52 So why did they remove that? 23:38:56 remove what 23:39:01 The superclass constraint. 23:39:13 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 i dunno man 23:39:26 it's dumb because it breaks existing code 23:39:28 Someone ought to do something! 23:39:33 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 if you have «f :: (Num a) => ...», and you use Eq or Show constraints within f 23:40:20 Right. 23:50:36 yeah, fuck standards compliance! 23:50:37 fuck software which does what it's specified to do! 23:50:37 we'll bow to the whims of the pitchfork mob any day 23:50:50 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 elliott: That sounds like a strawman. 23:51:09 BTW, I think Eq is still a superclass, or pattern-matching would break. 23:51:11 elliott, I'm fine with extensions that need to be enabled, or at least can be disabled 23:51:15 shachaf: It is, but so is kmc's. 23:51:31 elliott: I think it adds Eq when you pattern-match. 23:51:39 elliott: Just like for OverloadedStrings. 23:51:41 in this case, i don't think there's any way to change the non-compliant behavior 23:51:46 Since Eq is certainly not a superclass of IsString. 23:51:59 and it's not an "extension", it's breakage which already broke standard library code 23:52:00 Unless it is. 23:52:01 @src IsString 23:52:02 Source not found. Maybe you made a typo? 23:52:23 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 So it's kind of a non-option anyway. 23:52:47 elliott: That doesn't mean you have to break packages that only depend on the standard. 23:53:29 elliott, those libraries document the extensions they use 23:53:34 shachaf: No, but how many of those really exist? 23:54:02 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 elliott: Enough for actual breakage to happen. 23:54:20 but even when you deviate from Haskell 2010, you note those deviations with explicit LANGUAGE flags 23:54:22 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 I'm not saying standards aren't nice things. 23:54:33 i think your point is irrelevant to my point 23:54:41 I'm just saying that the Haskell report is already kind of irrelevant. 23:54:44 no 23:54:53 this is a common fallacy in #haskell 23:55:02 that, since people only use GHC, we shouldn't care about the spec 23:55:06 there are many reasons to still care about the spec 23:55:09 I care about the spec. 23:55:18 one is that it specifies what your programs mean 23:55:24 at a level of detail which the GHC manual does not 23:55:28 I'm not talking about what the ideal situation is, just what the actual situation is in my opinion. 23:55:37 As I said, I totally agree that specifications are good things. 23:55:47 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 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 "Breaking a lot of code" might be, though, and this change might. 23:57:57 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 i just think it's really bad that this change can't be controlled with a -X flag 23:58:42 not only because you can't opt out 23:58:50 but because code which relies on this new behavior will not document itself 23:58:58 GHC has had a number of changes that couldn't be controlled with a -X flag. 23:58:59 you can't even test whether you're relying on it 23:59:07 Most of these were considered bugs, though, and fixed eventually. 23:59:13 shachaf, notable examples? 23:59:14 E.g. PostfixOperators. 23:59:22 -!- Jafet has quit (Disconnected by services). 23:59:24 -!- Jafet1 has changed nick to Jafet. 23:59:30 There were some others in that vein. 23:59:36 perl doesn't have a standard and it works just fine. :> 23:59:37 yeah, it's also not in the class of "GHC accepts some programs which technically should be rejected" 23:59:39 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 elliott, oh? 23:59:54 i'm not convinced 23:59:58 kallisti, ;P 2012-01-10: 00:00:09 kmc: Right, it's an actual change. 00:00:13 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 this is "GHC rejects some programs which should be accepted" 00:00:18 what's the name of this new extension we're discussing? 00:00:25 kallisti, it doesn't have a name, that's the problem 00:00:27 kallisti: -X 00:00:36 Defeated Monster X! 00:00:38 (That's -X followed by a segmentation fault.) 00:00:39 ...wat 00:00:48 the "extension" is that GHC removed the Eq and Show superclasses on Num 00:00:53 regardless of whatever -X flags you specify 00:01:09 so it's *not* standards-compliant and code written for Haskell 98 or Haskell 2010 will break 00:01:14 and this has already been observed in standard libraries 00:01:33 now, I think it might be technically difficult to make this controllable by an -X fla 00:01:35 but it's way better 00:01:36 so cool 00:01:41 good job GHC 00:02:08 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 but I think this suggests we should live with the problem 00:02:41 which after all people have been working around for years 00:02:44 it's not hard to work around it 00:03:08 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 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 and are undocumented, or mentioned in passing in obscure paragraphs all over the manual 00:03:36 elliott, ^^ 00:03:55 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 kmc: Well, I think that's a bit of a slippery slope argument. 00:04:07 elliott, some slopes are slippery, though 00:04:08 shrug 00:04:12 i think i've made my case 00:04:15 kmc: Are you sure it isn't already in the docs? 00:04:15 i don't need to say it over and over 00:04:21 elliott, I didn't say it isn't 00:04:31 Okay. 00:04:48 it might be "nobody's problem" since it's technically in a library, not GHC itself 00:04:53 and i mean how many people read the haddocks for Prelude.Num 00:05:14 actually what code would that break. 00:05:15 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 removing the superclass constraint on Num 00:05:25 kallisti, if you have «f :: (Num a) => ...», and you use Eq or Show constraints within f 00:05:34 ah 00:05:38 and it's not "would", this has already been observed in standard libraries, which need patching to compile under GHC HEAD 00:05:47 the solution of course is to never use type signatures in your code. :> 00:05:51 this ensures future compatability. 00:05:55 hehe 00:05:56 yes 00:06:06 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 there should be something like a type signature that's ignore. oh wait that's just a comment. 00:06:24 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 from now on I'm going to comment out all of my unecessary type signatures 00:06:36 to prevent my code from breaking due to an explicit type signature that later needs to be changed. 00:06:41 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 but they don't 00:06:55 not that the Haskell Report is super high quality either 00:07:19 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 but it's much closer to a language description than Section 7 of the GHC Manual 00:08:33 i just wanna know what language i'm using 00:08:39 I think that change is simple enough that you could literally just write a script that fixes all the broken code. 00:08:40 even if it's specified unilaterally by some compiler writers 00:08:45 kallisti, do it 00:10:19 -!- Jafet has quit (Ping timeout: 252 seconds). 00:10:59 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 *didn't need them 00:11:21 oerjan: I believee I said unnecessary type signatures 00:11:27 as in the ones that aren't needed 00:11:29 for anything 00:11:35 kallisti: they _weren't_ necessary before that change 00:11:51 okay. 00:11:55 that's not what I'm saying though 00:12:15 at least those changes only apply if you're already using an extension 00:12:27 kmc: there's the Easy but maybe Bad way and then the Technically Correct in EVery Circumstance But Complicated Way 00:13:06 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 but that's not always the correct thing to do. 00:15:37 i didn't ask how to do it 00:15:38 i said you should do it 00:16:03 i would think the easy way is to translate the context (Num a, ...) to (Num a, Eq a, Show a, ...) everywhere 00:16:34 no. 00:16:36 well 00:16:40 if it's all old code 00:16:41 then yes. 00:16:48 yeah, that was my assumption 00:16:58 in #haskell it's often declared that X isn't a problem because you could just write library/tool Y 00:17:04 but most of those libraries/tools never get written 00:17:36 I thought that was what they say in #perl 00:17:39 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 oh wait 00:17:51 no in #perl it's s/write/use/ 00:18:31 kmc: so "trivial" 00:18:36 * oerjan swats kallisti for dangerous play with fire -----### 00:18:58 anyway if I ever have a programming language that people use 00:19:02 the way I'll prevent breaking code 00:19:11 is to just make sure every change has an associated script that fixes all the old code. 00:19:20 so hard 00:19:44 either that 00:20:33 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 should be trivial to implement 00:20:54 haha 00:21:06 well, it would be reasonable with like... "normal" code 00:21:11 yes "trivial" 00:21:20 "trivial" is just a douchebag way to say "easy" 00:21:28 low-level code would of course be pretty much impossible to accomodate in such a way 00:21:33 except the things declared to be "trivial" aren't even easy, they're just theoretically uninteresting 00:21:48 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 Perl JIT? trivial 00:22:09 (this is my life goal) 00:22:11 -!- rdrp has joined. 00:22:11 right exactly 00:22:31 hello #esoteric would you like to be my 20 people and help me develop a perl 5 JIT? 00:22:45 it would basically be the best thing ever. 00:23:05 it would be "okay perl is efficient now I can stop programming in everything else" 00:23:17 (not really but it would be nice) 00:24:22 I wonder what makes LuaJIT so fast. 00:24:24 Python is much closer to having a usable JIT 00:24:32 which is that? 00:24:33 kallisti, I saw a detailed writeup of that once... but I can't find it anymore :/ 00:24:37 kallisti, PyPy 00:24:40 anyone wants to build an interpreter or a virtual machine for SumaMoito (see esolangs wiki) 00:24:42 oh right that thing. 00:24:50 a perl 5 JIT would be theoretically interesting because it's probably almost impossible 00:24:55 rdrp: do you? 00:25:01 i doubt it's impossible 00:25:12 i mean, why would it be 00:25:15 elliott: well you would need a normal interpreter as well as a JIT compiler. 00:25:19 kmc: well, perl 5 is pretty strange :) 00:25:22 i know 00:25:25 yes, but i am not an expert 00:25:32 in that codes 00:25:39 rdrp: sounds like a learning opportunity :) 00:25:47 i think atrapado mentioned having an implementation 00:25:53 yes 00:25:59 i am atrapado 00:26:35 oh :) 00:26:42 i left the laptop in the other room 00:26:57 atrapado, meet rdrp. rdrp, atrapado 00:27:02 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 :) 00:28:53 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 well maybe i build something if i have time and motivation 00:31:33 hope it collapses 00:31:57 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 i expect partial optimizations, even optimizations 00:32:41 kallisti: WTF do you think Parrot is? 00:33:06 elliott: an interpreted bytecode language? 00:33:37 http://esolangs.org/wiki/Parrot of course 00:35:01 the example resembles Python way more than it resembles Perl. 00:35:31 but it uses <> and $_ !!!! 00:36:22 ah good they renamed "Parrot magic cookie" to something less stupid sounding. 00:36:33 now it's "polymorphic container" 00:39:15 but parrot magic cookie is a good name 00:40:26 is parrot actually good? 00:40:31 I don't know its isntructions 00:41:13 kallisti: polly morphic cracker 00:42:02 they should suddenly switch from Parrot to LLVM 00:42:05 it would be such a good idea 00:42:09 trivial to implement too 00:44:15 elliott: so you have your very own reduceron yet? 00:45:41 I'm guessing it's the target platform for @ 00:50:08 no @ uses a nanobot network http://xkcd.com/865/ 00:50:50 trivial 00:50:59 just like google's failed llvm jit for python was trivial 00:52:15 -!- Nisstyre has quit (Ping timeout: 240 seconds). 00:57:31 kmc: Trivial trivial trivial. 00:57:41 elliott: an interpreted bytecode language? 00:57:52 kallisti: Ah, it's one of those things where you're wrong. 00:57:59 lols 00:57:59 ??? 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 In this case it would be Parrot's Wikipedia article. 01:00:04 so what is hoogle? 01:00:11 let me hoogle that for you 01:00:16 i can tell it means haskell google.. but that doesn't quite 01:00:20 @hoogle hoogle 01:00:21 Can't think of anything more interesting to search for? 01:00:21 package hoogle 01:00:36 does it search haskell libraries? 01:00:54 http://www.haskell.org/hoogle/?hoogle=%28a+-%3E+b%29+-%3E+%5Ba%5D+-%3E+%5Bb%5D 01:00:54 anyway.. it gives me an idea 01:01:10 itidus21, http://lmgtfy.com/?q=hoogle 01:01:54 the idea it gives me is 01:02:00 kmc: You can't assume if you learn. 01:02:11 a source code search in google and bing 01:02:21 google had one; they shut it down 01:02:31 Not yet: http://www.google.com/codesearch 01:02:31 oh 01:02:35 derp 01:02:40 It's up for a few more days. 01:02:46 heh 01:02:48 wow 01:03:21 god damn it are there no concepts in the world that have yet to be implemented 01:03:21 does this mean that itidus21 getting ideas actually ends up wiping them out from reality? 01:04:00 itidus21: space elevator 01:04:00 itidus21: There are, you just haven't thought of any. 01:04:29 brainfuck on that codesearch would be nice 01:05:27 itidus21, well you'd have a better chance coming up with new ideas if you learned more of the existing ones 01:05:35 like i think everything i've seen you say about haskell is wrong 01:05:55 http://www.google.com/codesearch#search/&q=%22,[.,]%22&type=cs 01:05:59 also you were unwilling to even use google to find out what hoogle is 01:06:13 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 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 haha 01:07:31 luckily haskell is a much larger language 01:07:44 it's possible to go on not-learning Haskell indefinitely 01:07:58 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 local c 01:08:12 INDEED 01:08:13 lol cock? 01:08:22 dude 01:08:27 cock isn't spelled calc 01:08:28 and 01:08:30 lol has an l on the end 01:08:35 * Gregor nods sagely. 01:08:44 there's no i in threesome 01:09:20 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 what about gzipped perl 01:09:42 kmc: I'm not sure gzip will help. 01:09:46 next i guess is P" 01:09:52 i bet i can write a web server in gzipped perl which is shorter than one in unary lambda calculus 01:09:54 Perl's already pretty high in entropy. 01:10:06 pikhq_, bah, it's all ASCII 01:10:21 that's a 12.5% waste right there 01:10:22 gzipped unary lambda calculus 01:10:23 Ah, right, so there's some room for Huffman to help. 01:11:16 haskell fanboys who don't know the language are probably less annoying than haskell bashers who don't know the language 01:11:22 don't know which one is more common 01:11:35 latter I think 01:11:55 yeah i think so too 01:12:02 but it depends how you define "know the language" 01:12:10 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 unfortunately I'm not knowlegeable enough to discredit them. :P 01:12:15 binary lambda calculus is obviously more compact than unary 01:12:26 realistically very few programmers will ever see a payoff from learning haskell well enough to write practical production software in it 01:12:35 oh.. i see where i went wrong 01:12:40 i was measuring compact in alphabet size 01:12:50 unary gzipped perl 01:13:35 and the SK( one doesn't count since it has a variable length alphabet 01:14:15 base256 flogscript 01:14:22 itidus21: erm there are just 4 letters, S, K, (, ) 01:14:29 sure you can choose to exclude variables from your alphabets 01:14:40 http://answers.yahoo.com/question/index?qid=20090312200046AAJkBeI 01:14:41 but deep down you know you need them 01:14:44 itidus21: the alphabet is SK() 01:14:58 your mistake is thinking that variables like "x" and "y" are part of the SK calculus 01:14:59 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 they're not, they're used in reasoning about it 01:15:10 ^, this guy doesn't have much to show for his 36 years. 01:15:11 actual SK calculus expressions contain only S, K, and balanced parentheses 01:15:29 codepage 437 is printable at almost every codepoint 01:15:40 hmm 01:15:51 i think the only confusion is 0 vs 32 vs 255 01:15:54 who needs parentheses when you have trees 01:15:54 thats bizzare 01:16:07 and it's the default on DOS / PC BIOS stuff 01:16:13 which is great 01:16:20 because you can just print raw datastructures for debugging 01:16:24 ^bizarre 01:16:28 kmc: As long as you're superhuman :P 01:16:29 monqy: who needs trees when you have parentheses 01:16:33 :0 01:16:36 elliott, hardly 01:16:40 :1 01:16:53 in a lot of cases it'll be pretty obvious 01:17:11 can parentheses make pears i don't think so 01:17:18 ya 01:17:20 pearentheses? 01:17:33 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 ((2)(3)) pears 01:17:48 itidus21: It's called learning. 01:17:52 You seem to have an aversion to it. 01:19:07 hmm 01:19:30 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 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 i can imagine that the best reference for lambda calculus is the writings of alonzo church. 01:22:42 but that kind of reference is not usually practical 01:23:01 since its not broken into lessons and exercizes 01:23:16 when will people learn to write white papers as lessons and exercizes :P 01:23:41 i don't think your problem is the references 01:24:36 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 maybe you should do some reduction practice to get used to ski; have you tried that? 01:25:20 I recommend (S I I (S I I)) 01:25:27 IIIIIIIIIIIIIII is good 01:25:32 so really it is more important for me to learn to learn than it is for me to learn lamdba calculus 01:26:14 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 it starts with the very small details... like my reluctance to do the dishes 01:27:20 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 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 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 (i think i may have a similar part.) 01:29:04 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 your parenthical ended up in the wrong place 01:29:19 also i think that it is often forgotten how rare knowledge of lambda calculus in the world truely is :D 01:29:25 elliott: the third one is just the one that happens the most often. on this channel. 01:29:46 are you sure you don't try it 01:29:48 and in #perl, or so i hear 01:30:04 i doubt anyone i have met in my life knows it 01:30:08 no they tried to beat me over the head but I won't let them. 01:30:09 except at school 01:30:33 it's not learning by beating-over-the-head if you're not learning anything. 01:30:59 #perl is just really really really eager to solve my XY problem. 01:32:12 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 elliott: do I have some kind of reputation now? :P 01:32:48 kallisti: Yes; it's 31, which is much lower than mine. 01:32:56 itidus21: I can learn the basics of some things with very little effort. mastery takes much more time. 01:33:09 kallisti: You do have a really big X-Y problem, though. 01:33:18 you mean like... in general? 01:33:26 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 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 itidus21: are you familiar with the 10000 hour rule 01:35:33 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 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 people can be chronically bad at identifying root causes 01:36:30 oerjan: i don't think you need to spend 10000 hours to learn the lambda calculus. 01:37:01 elliott: well it's mainly that you have to actually use those 10000 hours on _something_ 01:37:13 mathematical notations are an application of symbols 01:37:17 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 oerjan: IRC! 01:37:27 I really just want them to answer my actual question, and leave me alone. :P 01:37:42 kallisti: well everything you have said about your irc bot thing's design so far 01:37:44 has been terrible 01:37:45 elliott: ooh 01:37:48 elliott: go on 01:37:51 symbols can be percieved through any of the senses 01:38:00 so I'm inclined to think that yes, you really do have a problem. 01:38:17 elliott: plugins are bad? 01:38:19 this is a weird channel 01:38:25 but symbols are not the world 01:38:40 kmc: what did you expect? :P 01:38:47 kallisti, right, it's bad if channels see XY problems where there are none; that was my experience in #python 01:38:58 they get a lot of clueless noobs with terrible ideas 01:39:11 and so if you ask how to do something weird, they assume you are a clueless noob with a terrible idea 01:39:15 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 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 (i was asking which Python text-templating library would be best for generating C++ code) 01:39:53 itidus21: smell symbols? taste symbols? 01:39:58 monqy: yup 01:40:12 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 it should be the other way around. 01:40:26 (which is a pretty WTF question, but I had a good reason 01:40:50 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 something like that 01:41:08 elliott: so far the only bad idea I've had is attempting to hotswap my code sanely. 01:41:16 er rather 01:41:31 bad idea I've had and mentioned extensively on this channel, about my IRC bot. /anti-lawyering 01:42:07 kallisti: also the thing where you used hideous eval tricks to do plugins 01:42:13 also the "let's run plugins in their own directory" thing 01:42:22 "hideous eval tricks" = perl's internal import mechanism 01:42:23 monqy: about smell.. if you can discriminate smells then when exposed to a series of different smells you could detect patterns 01:42:24 speaking about #haskell because i have experience there, some specific questions are almost always XY problems 01:42:29 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 like "how do I convert IO Int to Int" 01:42:32 also... everything 01:42:39 or "how do I do with type classes" 01:42:48 s/// 01:42:52 this i can understand.. but LC is not so easy 01:43:00 elliott: insane metaprogramming is basically what I do with a slightly complicated project in a dynamically typed language. 01:43:03 it's great. 01:43:04 "How do I define a typeclass?" "Don't. Whatever you're doing stop." 01:43:09 pretty much 01:43:11 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 elliott: noep 01:43:46 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 I'm free to do terrible things at my leisure. I might discover something good. 01:44:26 it is quite surprising to me that computation is really just a branch of mathematics.. 01:44:45 that is a big mental shift 01:45:05 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 01:45:17 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 something which can be drawn from this is the idea that brains are not necessarily computers 01:45:41 itidus21, that's not a justified inference 01:45:41 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 elliott: if it works but disgusts people. I... don't really care. 01:46:17 brains discovered more mathematics than what can be computed 01:46:18 sorry. 01:46:31 kallisti: god this is stupid 01:46:34 it suggests to me that minds/brains are beyond computers 01:46:40 "I don't have an X-Y problem because I don't care" 01:46:47 so nihilist and edgy, man! 01:46:52 brains discovered more mathematics than what can be computed <---- false 01:46:53 elliott: no. I also explained why it's not an XY problem. 01:47:03 if you say so 01:47:10 because what is the correct thing to do depends on why you are programming something. 01:47:14 there is why as well as a how and a what. 01:47:26 >:-) 01:48:11 kmc: who the fuck uses - dashes in an ascii arrow? 01:48:13 you're sick 01:48:16 haha 01:48:28 er 01:48:29 *4 dashes 01:48:35 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 kallisti: i forget which stage comes after denial but i look forward to it 01:49:26 elliott++ 01:49:39 ? 01:49:45 anger. 01:49:48 elliott: fuck you 01:50:10 I can't believe you exposed my terrible XY problem. 01:50:12 great; i can deal with anger 01:50:51 all these eval tricks and changing of current directory so that plugins can easily refer to state within their directory 01:51:02 all not what I wanted 01:52:19 (next stage is bargaining) 01:52:41 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 i'll stop bugging you if you give me lots of money 01:52:47 no that isn't bargaining 01:52:49 i get literally nothing out of that 01:52:58 you get to sleep easy. 01:53:00 -!- itidus20 has joined. 01:53:18 net disconnected 01:54:18 elliott: oh btw the Storable interface is not actually automatically persistent and stuff. 01:54:35 nor is it tie-able or anything like that. 01:54:40 I didn't propose Storable, I proposed a tie thing. 01:54:49 -!- itidus21 has quit (Ping timeout: 248 seconds). 01:55:04 yes the last thing you proposed was Storable. I was simply informing you that it doesn't do that. 01:55:12 there are obviously other ways to do it. 01:55:13 ok my view of computers is that they are basically representations of humans by humans for humans 01:56:09 i am curious whether they will ever achieve sentience but i feel it is unlikely 01:57:07 why 01:57:20 can't you simulate a brain with a computer 01:57:34 Causal powers, man. 01:57:38 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 depends on if the universe is in general computable, I think. 01:58:00 kallisti, even if it's not, why would we assume brains use the magical non-computable parts 01:58:10 yes there's that as well. 01:58:13 but that is still a dead body 01:58:15 you can simulate a brain with a computer, unless magic is real and brains are magic 01:58:24 itidus20, you are free to define "dead" that way, yes 01:58:28 itidus20: The body-moving isn't really the interesting part of a brain. 01:58:30 presumably you could simulate brain physics. 01:58:34 kmc: For bad values of magic 01:58:44 hmm 01:58:50 itidus20: You could wire a computer-simulated brain up to a robot. 01:58:51 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 elliott: I think that's as good a value of magic as you're ever going to get. 01:58:55 natural processes are predictable and therefore simulatable 01:58:59 That's just an engineering problem. 01:59:02 therefore anything which cannot be simulated is supernatural 01:59:17 now some natural processes can only be simulated stochastically / statistically 01:59:29 Anyway I've already created a conscious entity. 01:59:32 And it's very happy. 01:59:35 elliott knows. 01:59:37 which leads to the common "quantum consciousness" loophole argument 01:59:42 which i think is bunk for a couple of reasons 01:59:43 elliott: a lot of the state in my bot is things I'd like to be human-editable. 01:59:53 elliott: still, I could write my own tie for it. 02:00:00 first of all, why would a stochastically predictable system with randomness be any more "conscious" than a deterministic system 02:00:17 second, what exactly physical structure in the brain exhibits unusual / quantum-coherent behavior 02:00:19 oh ho a question for #perl 02:00:33 it seems really unlikely that meat at above room temperature would have sophisticated quantum mechanical properties 02:00:48 the main prerequisite of life appears to be the capacity to die forever 02:00:52 is there a library that implements persistent hash tables that serialize to a human-editable file format? 02:01:08 itidus20, you sound kinda stoned 02:01:21 i mean once a body truely dies.. its dead 02:01:27 theres no undying 02:01:30 itidus20, you have defined the words such that this is true 02:01:34 even if its only a bacteria 02:01:35 itidus20: the main prerequisite to being able to die appears to be being able to be alive. 02:01:38 circular logic is circular. 02:01:41 itidus20: Why do you care about bodies? 02:01:53 all life seems to have a body :P 02:01:57 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 kmc: Well, that _is_ practically the definition of information theoretic death... 02:02:38 kmc: hmmm... i will say that such technology suggests people could be brought back to life :D 02:02:46 if developed enough 02:02:48 itidus20, i think they could, with sufficient technology 02:02:53 itidus20, are the Hela cells alive? 02:02:53 wrt our existing definition of "dead" 02:03:14 i dont know what a hela cell is 02:03:18 hella cells 02:03:32 itidus20: http://en.wikipedia.org/wiki/HeLa 02:03:42 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 kmc: Anyway, I think it's reasonable to claim that anything you can revive isn't dead. 02:04:31 elliott, that's not a claim, it is a definition of the word "dead" 02:04:35 but it is a reasonable definition 02:04:43 i think that's exactly itidus20's problem 02:04:46 Right. 02:05:07 LET'S ARGUE ABOUT DEFINITIONS, EVERYBODY! 02:05:08 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 the laws of physics don't give a shit whether you are "dead" or not 02:05:21 its a good way to start a religion :P 02:05:33 it's an arbitrary term humans have invented in order to efficiently categorize different arrangements of matter 02:05:40 kmc: You seem to really enjoy beating your head against a brick wall. You must love #haskell. 02:05:45 to predict them more efficiently without knowing microscopic details 02:05:53 elliott, itidus20 is the brick wall? 02:06:00 kmc: I can't possibly comment. 02:06:21 `searchlog itidus troll 02:06:28 kmc: So, yes. 02:06:38 so how come y'all hang out in a channel full of crackpots and trolls 02:06:51 2011-07-31.txt:10:31:31: partially because you get the sense of control over music... unlike neighbors noise which cannot be controlled 02:06:56 kmc: "Full of"? 02:06:58 weird 02:07:05 Who're the crackpots? 02:07:06 fsvo 02:07:14 kmc: I count one. 02:07:31 there are like five people here i've personally seen an accusation of trolling against 02:07:37 and i've only been active a few days ;P 02:07:46 People who aren't trolls can troll. 02:07:49 i accuse myself of trolling occasionally 02:07:51 I wonder how you make a trollproof IRC channel. 02:07:56 For instance, shachaf. 02:07:58 however 02:08:00 haha 02:08:12 elliott: Do I troll? 02:08:14 Yes. 02:08:36 Hmm. This seems like it could get into another argument about definitions. 02:08:40 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 things is a nice vague word 02:08:57 The definition of "troll" has been progressively diluted. 02:08:57 Is "is" as "is" is? Discuss. 02:09:11 But you do deliberately mislead people on #haskell for humorous purposes a lot. 02:09:23 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 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 This seems pointless. 02:10:58 i know that you are all being your own universes anyway 02:11:00 the question of whether the brain is beyond a computer is beyond your brain 02:11:13 it will be a long time before anyone can prove any of these things 02:11:26 itidus20: tip: whenever you say "anyone", say "I" 02:11:36 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 And elliott being a murderer. 02:11:55 its called prediction :D 02:12:05 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 ttants: extensional, existential 02:13:04 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 What to do instead is another matter. 02:13:27 it also concerns me that computation leads to cubicles instead of frolicing in nature 02:13:36 something is not quite right with that picture 02:13:57 like something is missing 02:14:06 if computers are necessary 02:14:59 ok no that was trolling 02:15:20 KALLISTI KEEP GOING 02:16:04 kmc: Does your computer frolick in nature? 02:16:04 well it's too damn cold to frolic in the nature around here, anyway 02:16:11 *frolic 02:16:13 despite what those ski freaks say 02:16:14 Magicke. 02:16:47 the computers give nothing back 02:17:11 itidus20: You anthropomorphise approximately 100% more often than you should. 02:17:22 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 elliott: also, the "illusion" is scope is actually not difficult to maintain at all. 02:17:36 *of scope 02:17:50 elliott: what other bits of unix state should I be concerned with? 02:18:00 elliott: don't you mean that he should anthropomorphise 100% _less_? 02:18:18 isn't that... equivalent? 02:18:21 oerjan: He anthropomises 100% more than he should. 02:18:42 * oerjan swats kallisti for failing at percentages -----### 02:18:46 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 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 kallisti: To quote the Austrian philosopher kallisti, "I... don't really care". 02:20:22 s/the // 02:20:46 oerjan: I don't really see how what I said was incorrect. 02:21:03 elliott: i was just suggesting an improvement. 02:21:22 oerjan: Well, okay. 02:24:53 elliott: so you don't really have a reason other than "it's gross" and "it's stupid". okay cool. 02:25:36 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 how often do you normally sleep? 02:26:00 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 and, how often do you stay up late? 02:26:12 shachaf: How long do you usually sleep? 02:26:18 And what time is it now? 02:26:19 elliott: I don't know. 02:26:23 And when did you wake up last? 02:26:23 It's 18:25 now. 02:26:28 I don't remember. 02:26:34 It sometimes takes me a few hours to wake up. 02:26:43 OK, when did you get up, roughly. 02:26:45 In like a 3 hour window. 02:26:50 I'M AN EXPERT DAMMIT. 02:26:57 11-13? 02:26:58 Maybe. 02:27:02 elliott: I was hoping for perhaps an explanation of a flaw with the current system? an example, for example. 02:27:09 ...I may have stayed in bed a long time after "waking up". 02:27:43 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 elliott: if you have like... actual evidence of a flaw then I would be grateful to hear about it. 02:28:32 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 kmc: Did you hear elliott's exciting proposal for MonadZero yesterday? 02:29:02 If you don't care about waking up early I'd just go to bed whenever. 02:29:06 You'd like* it. 02:29:16 shachaf: HE'LL JUDGE ME. 02:29:20 elliott: I have an appointment at 09:30. 02:29:38 shachaf: Yes, so you probably don't care much about waking up early, but don't want to wake up late. 02:29:44 elliott: I just mentioned it in #haskell and now people are asking. 02:29:48 Go join #haskel and tell them. 02:29:53 So, 19:00 to 22:00 or something. 02:29:55 #haskell 02:30:38 -!- Jafet has joined. 02:31:00 elliott: They weren't doing that much lambdabot nonsense a few minutes ago! 02:31:21 shachaf: I might be able to avoid explaining it! 02:31:29 Nope. 02:31:40 cmccann is there; it's the perfect opportunity. 02:32:24 shachaf: Not until somebody who isn't you asks!!! 02:32:34 elliott: Peaker asked right before you joined. 02:32:39 05:29 < Peaker> shachaf: nope, what was it? 02:32:42 Yes, but I didn't hear it. 02:32:43 05:29 < Peaker> shachaf: where was it? 02:32:47 Now you heard it. 02:32:53 No. 02:32:56 I am deaf to quotes. 02:33:49 elliott: You gotta do what you gotta do. 02:35:15 elliott: I see. I was just baiting the wrong person. 02:37:02 did not hear 02:41:15 dynamic scoping actually works really well with global variables. 02:41:27 it kind of eliminates some of the criticisms of global variables. 02:41:42 kmc: Hear what? 02:43:31 I like how quick dolio was to blame me. 02:43:44 for example Data::Dumper has both package configuration variable and instance members that you can set to override the global behavior. 02:43:48 shachaf: Well, you *are* awful. 02:44:00 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 so instead you can locally redefine the global variables for your program. 02:44:22 shachaf: Did you know that erus` hasn't accepted my answer on SO yet? 02:44:26 Truly a scoundrel 02:44:29 *. 02:45:00 elliott: Oh. Surely erus` has accepted your answer in erus`'s heart. 02:45:36 also perl has fun features such as "delete local" 02:45:58 shachaf: This awkward silence in #haskell is palpable. 02:46:13 !perl $x = 2; local $x = 3; delete local $x; print $x 02:46:15 delete argument is not a HASH or ARRAY element or slice at /tmp/input.981 line 1. 02:46:19 :o 02:47:56 !perl use v5.10; %x = (1,2); {delete local $x{1}; say $x{1} || "nothing"} say $x{1} 02:47:57 nothing \ 02:48:05 01:27:39 quicksilver: Yep. There should be a foldl' genericLength. 02:48:07 shachaf: I think there is. 02:48:12 Oh? 02:48:17 What is it called? 02:48:21 Oh, there isn't. 02:48:26 But there's specialisations for Int and Integer. 02:48:32 {-# RULES 02:48:32 "genericLengthInt" genericLength = (strictGenericLength :: [a] -> Int); 02:48:32 "genericLengthInteger" genericLength = (strictGenericLength :: [a] -> Integer); 02:48:32 #-} 02:48:32 strictGenericLength :: (Num i) => [b] -> i 02:48:33 strictGenericLength l = gl l 0 02:48:35 where 02:48:37 gl [] a = a 02:48:39 gl (_:xs) a = let a' = a + 1 in a' `seq` gl xs a' 02:48:41 strictGenericLength should probably be exported. 02:48:43 And be called genericLength' instead. 02:48:52 Or maybe it should be called genericLength. 02:49:02 And genericLength should be called academicGenericLength 02:49:04 shachaf: But I want length x < (4::Nat) to work. :( 02:49:28 elliott: Paul Graham says you should just write a function called "length<". 02:49:50 shachaf: Gross. 02:50:44 shachaf: Can you make grep -i less slow? 02:50:48 elliott: In Common Lisp. 02:50:52 elliott: Yes. 02:50:58 But I want you to suffer. 02:51:11 That's the only reason I disabled the "speed" option in the default Arch distribution of grep. 02:51:16 Are you logrepping? 02:51:40 `searchlog year of tool 02:51:58 2012-01-09.txt:10:23:53: no doubt because of my revolutionary searchlog tool of the year. 02:52:04 :) 02:52:13 `searchlog year of the tool 02:52:38 elliott, kallisti update 02:52:46 No output. 02:53:01 * Sgeo is not lying. 02:53:08 shachaf: I was. 02:53:11 `cat `which log` 02:53:14 cat: `which log`: No such file or directory 02:53:17 `run cat `which log` 02:53:21 ​#!/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 kallisti really got update guys honest 02:53:28 `run cat run 02:53:32 cat: run: No such file or directory 02:53:36 `bin/run cat bin/run 02:53:40 ​/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 elliott: If I go to sleep too early, will I wake up in the middle of the night feeling depressed? 02:54:33 I pretty much am unable to think right now due to sleep deprivation. 02:55:28 shachaf: Do you have melatonin? 02:55:32 how do I pop off the first word of a string in bash? 02:55:38 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 That means you might oversleep though. 02:55:57 Sucks to be you! Invest in an alarm or something. 02:56:02 elliott: Wait, that's not how you're supposed to use it, is it? 02:56:09 shachaf: Probably not, but it works. 02:56:12 I thought it was for taking right before your "regular sleeping hour". 02:56:21 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 shachaf: Anyway, "middle of the night" is relative. 02:56:49 If you wake up at 4 am, that's *four whole more hours* before you have to be up! 02:56:57 That's like winning the free time lottery. 02:57:10 elliott: I thought it was supposed to be very different from, you know, a sleeping pill. 02:57:29 Well, it makes you tired. That's sort of what your body uses melatonin for? 02:57:39 I mean, if you're trying to establish a decent sleep pattern, yes, you should take it regularly. 02:58:02 But it's not like it can do anything worse than mess up your sleep a bit. 02:59:20 elliott, kmc: Did you hear elliott's exciting proposal for MonadZero yesterday? 02:59:41 kmc: It was decided in #haskell that it's not actually exciting. 02:59:50 elliott feels dejected now, I think. 03:00:02 I'm quitting the Haskell community FOREVER. 03:00:09 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 This lets you have informative pattern-match failure error strings without leaking source-code position information into non-IO code. 03:02:15 @tell oerjan Fixed @check 03:02:55 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 @tell elliott @tell oerjan Fixed @check 03:05:01 -!- lambdabot has joined. 03:05:03 @tell oerjan Fixed @check 03:05:09 Consider it noted. 03:05:17 elliott: What if I just go to sleep now? 03:05:27 shachaf: What time is it? 03:05:29 * shachaf is seriously a zombie. 03:05:31 19:05 03:05:54 If I sleep for 10 hours I'll wake up at 05:00. 03:05:55 !perl my $x = "hello"; length $x = 4; print $x 03:05:56 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 shachaf: You'll wake up between 3 and 9 or so. 03:06:10 Knowing me, I'll probably wake up around 23:00 and not be able to get to sleep again. 03:06:16 If you sleep as long as I do after sleep deprivation 11:00. 03:06:20 But that's not likely. 03:06:42 shachaf: I somewhat doubt you'll wake up at 23:00 if you've been awake that long. 03:06:50 elliott: You'd be surprised. 03:06:58 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 The thing is that as soon as I close the computer, I won't be able to fall asleep. 03:07:32 @check True 03:07:33 "OK, passed 500 tests." 03:07:34 I read that as "walked into". 03:07:39 And I was, thinking, like, "accidentally?" 03:07:49 I was planning to do laundry today. 03:07:51 Not much chance. 03:08:03 @messages 03:08:04 elliott said 2m 59s ago: Fixed @check 03:09:10 `log zjoin.*diag 03:09:22 2011-12-31.txt:18:54:46: > 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 @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 Defined. 03:10:01 shachaf: Watch as oerjan attempts proof by QuickCheck. 03:10:21 oerjan: QuickCheck still doesn't support @let. 03:10:22 @check \ll -> zjoin (zjoin (ll :: [[Int]])) == zjoin (map zjoin ll) 03:10:23 Couldn't match expected type `[a]' 03:10:28 Or does it? 03:10:31 s/QuickC/@c/ 03:10:34 oops 03:10:38 shachaf: Well, Cale just fixed it. 03:10:41 So maybe he reworked it. 03:10:47 You can never know with Cale. 03:10:53 :t zjoin 03:10:54 forall a. [[a]] -> [a] 03:11:09 oh duh 03:11:11 > zjoin ["oerjan", "elliott"] 03:11:15 mueval-core: Time limit exceeded 03:11:17 @check \ll -> zjoin (zjoin (ll :: [[[Int]]])) == zjoin (map zjoin ll) 03:11:20 "Falsifiable, after 12 tests:\n[[[-7,-4,-5,-8,0,5,6,-7],[-4]],[[7,-7,-1,-3,... 03:11:26 AAAAAAAAAAAAAAA 03:11:30 did you get the wrong zjoin 03:11:34 i like how it doesn't tell you what went wrong. 03:11:37 *I 03:12:03 elliott: What happened to all those times when you didn't capitalise your 'i's? 03:12:07 Are you Bourbaki? 03:12:19 what's the character limit on IRC again? 03:12:26 300? 03:12:39 shachaf: Yes. 03:12:39 > let ll = [[[-1,-2],[-2],[2,-4],[2,-4,-4]],[[],[1,3]]] in (zjoin (zjoin ll), zjoin (map zjoin ll)) 03:12:40 a billion / have fun 03:12:41 ([-1,3],[-1]) 03:12:47 kallisti: you can raise it by getting a short hostname 03:12:48 kallisti: 512, including prefix 03:12:59 And connecting to a server with a short hostname 03:13:00 > let ll = [[[-1,-2],[-2],[2,-4],[2,-4,-4]],[[],[1,3]]] in (zjoin (zjoin ll), map zjoin ll) 03:13:02 ([-1,3],[[-1],[]]) 03:13:11 Jafet: where is server hostname in the message? 03:13:14 oh, server-to-server messages? 03:13:16 *Where 03:13:24 I think they are 03:13:29 Huh? 03:13:42 When servers send your message to other servers 03:13:58 * shachaf will try out the sleep thing. 03:14:35 Right. 03:14:37 shachaf: Enjoy! 03:15:30 > let ll = [[[-1,-2],[-2],[2,-4],[2,-4,-4]],[[],[1,3]]] in (zjoin ll) 03:15:31 [[-1,-2],[1,3]] 03:16:57 R.I.P. monad 03:17:03 :( 03:18:06 oerjan: don't give up hope!!! 03:18:11 maybe you can rectify the shape 03:18:52 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 basically, zjoin ll has no chance of preserving the information of the shape of the elements pruned away 03:21:39 > [1..] 03:21:41 Could not find module `Control.Monad.Writer': 03:21:41 It is a member of the hidd... 03:21:52 > 2 03:21:53 * oerjan blinks 03:21:53 Could not find module `Control.Monad.Writer': 03:21:53 It is a member of the hidd... 03:21:55 @undefine 03:22:01 whew 03:22:03 > 2 03:22:04 Could not find module `Control.Monad.Writer': 03:22:04 It is a member of the hidd... 03:22:07 >_> 03:22:11 oerjan: no, proceed to panic 03:22:19 @unerd 03:22:20 Unknown command, try @list 03:22:20 @undefine 03:22:22 > 2 03:22:23 Could not find module `Control.Monad.Writer': 03:22:23 It is a member of the hidd... 03:22:24 @undefloon 03:22:25 Unknown command, try @list 03:22:47 > let ll = [[[-1,-2],[-2],[2,-4],[2,-4,-4]],[[],[1,3]]] in (zjoin ll) 03:22:47 @und 03:22:48 Could not find module `Control.Monad.Writer': 03:22:48 It is a member of the hidd... 03:22:48 Maybe you meant: undefine undo 03:23:00 -!- elliott has quit (Quit: Leaving). 03:23:01 that's weird, it must have happened seconds ago 03:23:43 @undefine 03:23:53 How is "ZipList not a monad" breaking news? I remember someone attempted to make it a monad, I guess that failed? 03:23:58 > help 03:23:59 Not in scope: `help' 03:24:05 * oerjan swats Sgeo -----### 03:24:07 YES I DID 03:24:23 oerjan: oh it's actually not a monad? 03:24:29 -!- elliott has joined. 03:24:39 XChat forgot my settings again. 03:24:47 kallisti: not with the definition i made, and i don't see how to repair it. 03:24:55 oerjan: Anyway, couldn't you, instead of pruning, "rearrange" the shape? 03:25:23 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 elliott: for rectangular lists the outcome is fixed 03:25:31 Erm, there's no other argument. 03:25:34 But you sort of know what I mean. 03:25:42 oerjan: Yes, but you could behave specially for non-rectangular lists. 03:25:55 ok so lessee 03:26:03 > 2 03:26:04 2 03:26:11 shocking 03:26:15 !perl substr("", 0,undef,"...") 03:26:16 Modification of a read-only value attempted at /tmp/input.5704 line 1. 03:27:14 @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 Defined. 03:28:31 Sgeo, it's breaking news where? 03:28:32 kmc: Hey, do you still have that horrible value-mutating code? 03:28:40 not handy 03:28:53 kmc, topic 03:29:03 elliott, http://hpaste.org/52266 03:29:31 @check \ll -> (not . null . drop 1 . group $ map length ll) || zjoin (zjoin (ll :: [[[Int]]])) == zjoin (map zjoin ll) 03:29:33 "OK, passed 500 tests." 03:29:46 kmc: cool, thanks 03:29:49 huh 03:29:51 @check \ll -> (not . null . drop 1 . group $ map length ll) || zjoin (zjoin (ll :: [[[Int]]])) == zjoin (map zjoin ll) 03:29:53 "Falsifiable, after 393 tests:\n[[[-2,-1,8],[-1,3,-8,5,-8],[3,-6],[3,2,0,4]... 03:29:54 elliott, .... why? 03:29:56 darn 03:30:08 kmc: wouldn't you be happier not knowing? 03:30:35 Sgeo, seems sarcastic... I'm guessing someone somewhere made a big deal of this and was mocked for it 03:30:48 "ZipList is not a monad" is probably one of those things which seems obvious if you live in #haskell 03:30:53 wtf this rarely fails 03:30:55 but isn't actually written down somewhere you'd find it 03:31:09 kmc: oerjan had a definition of join he thought would work but didn't 03:31:13 and is apparently trying to repair it now 03:31:18 kmc: i haven't been mocked much yet 03:31:25 elliott: not really much hope 03:31:29 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 *interested 03:31:59 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 there are a lot of things #haskell can explain but can't provide a link to 03:33:34 if you've read LYAH and RWH and wonder what's next 03:33:39 it's hard to even discover what you should read 03:34:04 the only way i know is to hang around #haskell and try to understand anything anyone says 03:34:11 and read articles / papers that way 03:34:46 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 > 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 ([[1,2],[4,-5,2]],[[1],[-2,-5]]) 03:35:48 similarly how do you discover which of the 3,700 packages on Hackage are worth a damn 03:36:41 > 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 : parse error on input `in' 03:36:54 > 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 ([[1,2],[4,-5,2]],[[1],[-2,-5]]) 03:38:46 -!- pikhq has quit (Quit: Reconnecting). 03:38:47 > let ll = [[[1,2],[]],[[-2,3],[4,-5]]] in (zjoin ll, map zjoin ll) 03:38:49 ([[1,2],[4,-5]],[[1],[-2,-5]]) 03:39:02 -!- pikhq has joined. 03:39:51 i think that's close to minimal 03:40:53 kmc: You sure do like talking about how bad the Haskell community is at teaching people :P 03:42:27 i still think it's pretty good 03:42:58 but there are some flaws, and I don't see many other people talking about them 03:43:00 See, I should write a Haskell book that covers every topic ever. 03:43:08 Then there'd be no problems, because everybody could just point people there. 03:43:24 People who point out situations not covered by the book would be summarily executed for heresy. 03:44:07 mostly #haskell talks about how #haskell is the #1 best most friendly channel on freenode 03:44:13 which might even be true 03:46:19 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 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 oerjan: I can help: it's either [1,1] or [1,2]. 03:48:05 oerjan: That's sort of what I meant by "stuffing the gaps". 03:48:12 oh wait, join [[1],[-2,-5]] == [1,-5] would also work 03:48:19 Where you'd shrink, instead throw in a value you have lying around. 03:48:25 > zjoin [[1],[-2,-5]] 03:48:27 [1] 03:48:32 Right, same kind of thing. 03:49:22 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 But but but but don't give up HOPE! 03:49:47 oh hm 03:50:05 if we reinsert the 6 03:50:15 > let ll = [[[1,2],[6]],[[-2,3],[4,-5]]] in (zjoin ll, map zjoin ll) 03:50:16 ([[1,2],[4,-5]],[[1],[-2,-5]]) 03:50:38 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 uh... I forgot how date math works.. 04:11:29 if I take the absolute difference between minute, hour, day, month, year, etc 04:11:38 that should work right? 04:11:41 yes I think it should. 04:14:19 huh? 04:14:52 I'm just going to use a datetime thing.. 04:14:54 kallisti: your description is sufficiently ambiguous that i'm not sure if you're terribly wrong or not. 04:15:00 because I'm pretty sure I'm wrong. 04:15:55 What does "work" even mean 04:15:58 What are you trying to do 04:16:02 i mean i _can_ interpret it in such a way that it gives a meaningful answer. barely. 04:16:35 elliott: take the difference between two dates? 04:16:55 kallisti: "Difference"? 04:16:58 yes 04:17:08 "It was sunny today, and rainy this other day, so... 70%." 04:17:22 ????? 04:17:26 that's weather 04:17:27 not dates. 04:17:37 * elliott facepalm 04:17:59 oh wait no. it is definitely terribly wrong, because even my charitable interpretation breaks down for leap years. 04:18:13 Date libraries exist for a reason. 04:18:15 Time is hard. 04:18:35 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 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 *such a way 04:19:24 -!- Darth_Cliche has changed nick to Klisz. 04:19:47 !perl use DateTime 04:19:48 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 oerjan: XY problem!! XY problem!! kallisti is never doing the wrong thing. 04:20:04 you guys must have missed the part where I decided to use a date library from CPAN 04:20:15 elliott: actually the problem is he hasn't told us _either_ X or Y properly :D 04:20:22 kallisti: No, I just continued mocking you after that too! :D 04:20:27 Cody__: what's the type signature you should expect for findMin? 04:20:27 Hold on 04:20:27 * nexion has quit (Quit: Leaving) 04:20:27 * LeNsTR|off is now known as LeNsTR 04:20:28 findMin :: [Ixs] -> [x]. Not very good with typeclasses. 04:20:30 findMin :: [x] -> [x]. 04:20:33 I honestly think people believe #haskell is a Haskell tutorial. 04:20:36 elliott: it's okay to be wrong when finding the correct solution. 04:21:10 or rather, when in the process of doing so. 04:21:47 -!- DCliche has quit (Ping timeout: 260 seconds). 04:22:40 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 *its 04:22:55 oerjan: Yes, unfortunately. 04:25:37 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 loooool 04:26:20 Attempting to create an invalid time currently causes a fatal error. This may change in future version of this module. 04:26:48 this is actually one of the better datetime packages I've seen. 04:27:32 http://search.cpan.org/~drolsky/DateTime-0.72/lib/DateTime/Infinite.pm 04:27:33 ..... 04:32:11 -!- Klisz has quit (Quit: SLEEP, GLORIOUS SLEEP). 05:05:16 elliott: BTW, DC updated (on time!) 05:06:06 Thanks District of Columbia! 05:17:33 -!- oerjan has quit (Quit: Good night). 05:33:29 hmmm type families would be good for defining chess variants, I think. 05:33:49 well an associated type family 05:33:54 to define the pieces 05:39:13 also there's at least one haskell tutorial which actually embeds a chat window for #haskell 05:39:15 (tryhaskell.org) 05:39:28 i remember when that hit the Reddit front page 05:39:37 the channel was full of people who were like 05:39:38 WTF IS THIS 05:39:40 FAGZ 05:39:42 /part 05:41:15 hi 05:41:31 tryhaskell has an irc client? 05:41:34 i guess i never got that far 05:41:42 yeah 05:41:48 it embeds the freenode webchat thingy 05:41:54 aw, boring 05:41:55 which i guess is javascript / ajax these days 05:42:00 yeah 05:42:04 it should have a haskell irc client 05:42:07 it would be cooler if it made you write some part of an IRC client in haskell 05:42:10 yes 05:42:10 yeah 05:42:12 say irc "hi!!" 05:42:19 too bad it's not actually running haskell in the browser 05:42:22 maybeGetNextLine irc 05:42:26 unlike http://try.ocamlpro.com/ 05:42:52 http://www.haskell.org/haskellwiki/Why_Haskell_just_works 05:42:59 best article title 05:43:09 http://www.haskell.org/haskellwiki/Why_Haskell_is_the_most_amazingly_awesome_thing_ever 05:43:49 impress your friends and intimidate your enemies with haskell 05:45:07 I gave up on Haskell a long time ago 05:45:27 I returned to Ruby/C++/C# :S 05:46:00 qfr: my condolences 05:47:16 R/Ruby/Racket/REBOL 05:47:24 C/C++/COBOL/CommonLisp 05:47:33 FORTRAN/Factor/Forth 05:48:21 J/Java 05:48:38 -!- Vorpal has joined. 05:49:07 Joy? 05:50:36 yes 05:52:37 -!- atrapado has quit (Ping timeout: 252 seconds). 06:09:13 -!- Klisz has joined. 06:12:08 elliott: ...I told you. 06:12:14 22:11. 06:12:20 * shachaf is going to suffer now. 06:12:39 shachaf: Seriously? 06:12:40 Go back to sleep. 06:13:10 I doubt it'll work. 06:13:20 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 Oh well, I did disclaim my advice. 06:14:27 * shachaf will see what he can do. 06:14:28 @time elliott 06:14:29 Local time for elliott is Tue Jan 10 06:14:14 06:15:29 pikhq: Shhh. 06:57:29 -!- Klisz has quit (Quit: SLEEP, GLORIOUS SLEEP). 08:40:55 @hoogle (a -> f b) -> [a] -> f [b] 08:40:56 Prelude mapM :: Monad m => (a -> m b) -> [a] -> m [b] 08:40:57 Control.Monad mapM :: Monad m => (a -> m b) -> [a] -> m [b] 08:40:57 Control.Monad forM :: Monad m => [a] -> (a -> m b) -> m [b] 08:40:57 (I know.) 08:42:01 elliott, I found an impressive ravine system in mc. About 10 intersecting ravines. One of them breaching the surface 08:42:13 the result was that there was naturally sunlit redstone ore 08:44:22 Vorpal you Haskell people are crazy 08:44:29 qfr, that was minecraft stuff? 08:44:32 not haskell 08:44:43 Oh. 08:45:02 qfr, how would that even make sense as haskell!? 08:45:10 It was a joke :\ 08:45:14 oh 08:45:37 "But did you find any co-ravines?" etc 08:45:50 Vorpal: Clearly Ravine is an instance of Monad and Num. 08:45:56 pikhq, :D 08:46:20 also two mineshaft systems intersecting this 08:46:31 Om nom nom shafts 08:46:50 also thanks to the technic pack there are TONS of ore here 08:48:32 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 Vorpal: You know, there's a channel for that. 09:23:28 elliott, oh right 09:23:33 elliott, anyway it is kind of cool 09:40:05 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 fizzie: You're a really calm dude, right? Give me the secrets of the calm, I need them. 10:52:49 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 fizzie: Also your funnies, tell me the secrets of funnise. 10:53:29 funnies. 10:54:00 Deliberate misunderstandings are one class of funnies. 10:54:20 Ah. 10:54:23 Also nondeliberate since you can always just say "I meant to do that". 10:57:40 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 Every time you , god kills another . 11:05:13 -!- GreaseMonkey has quit (Quit: The Other Game). 11:07:57 hi 11:07:57 anybody know how to call a pointer to function in linux C ? 11:08:00 --#haskell 11:09:19 ais523: how do you call a pointer to function in linux C? you've taught C, you're the expert 11:09:55 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 the first is more common, second is clearer 11:10:17 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 ais523: thanks! 11:11:00 elliott: now I'm trying to work out if you're being sarcastic or not 11:11:05 (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 ais523: well, it was certainly a very good explanation. 11:12:15 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 It's not as good as a "you can call a pointer anything you want, it's not sentient". 11:12:47 elliott: heh, indeed 11:18:27 ais523: wiki spam 11:18:41 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 elliot is a palin supporter??? 11:30:18 Patashu: elliott's quoting spam, I think 11:30:22 just without quote marks or an attribution 11:30:27 I generally do a when I quote spam 11:30:30 that sounds like plagarism 11:31:04 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 Patashu: yes i'm a die hard "true"publican 11:34:40 like most brits. 11:36:00 > return True >>= `when` Just () 11:36:01 : parse error on input ``' 11:36:05 > (return True >>=) `when` Just () 11:36:06 Couldn't match expected type `GHC.Bool.Bool' 11:36:06 against inferred type ... 11:36:08 > (return True >>=) $ `when` Just () 11:36:09 : parse error on input ``' 11:36:19 hmm... yeah, that won't work 12:09:18 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 :t scanl tail [1,2,3,4] 12:23:05 Couldn't match expected type `b -> [a]' against inferred type `[a]' 12:23:05 In the first argument of `scanl', namely `tail' 12:23:05 In the expression: scanl tail [1, 2, 3, 4] 12:23:17 :t scanl 12:23:18 forall a b. (a -> b -> a) -> a -> [b] -> [a] 12:23:22 > scanl f z [a,b,c,d] 12:23:23 [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 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 @src scanl 12:43:14 scanl f q ls = q : case ls of 12:43:14 [] -> [] 12:43:14 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 :t scanr 12:47:28 forall a b. (a -> b -> b) -> b -> [a] -> [b] 12:47:41 > scanr f z [a,b,c,d] 12:47:42 [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 hello 12:50:27 Phantom_Hoover: You have 1 new message. '/msg lambdabot @messages' to read it. 13:16:42 -!- ais523 has joined. 13:17:14 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 ais523: I don't care about the correct way :P 13:18:36 elliott: well, it's probably easier than the alternatives 13:18:58 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 what are you trying to do, anyway? doing it with different commands altogether might be the really lazy easy solution 13:20:27 ais523: make C-j indent to the previous line, rather than using the mode's autoindentation 13:20:35 elliott: no, I mean in more detail 13:20:37 I don't see why a minor mode matters when I can just rebind the key directly 13:20:38 as in, why do you want to do that? 13:20:44 ais523: that /is/ what I want to do 13:20:47 it's an editor, that's my end goal 13:20:57 I'm trying to change what it means for me to push ctrl and then j 13:20:57 elliott: oh, you mean as a permanent editor setting? 13:21:08 well, only in haskell-mode, but I believe there's a rebind-in-map thing 13:21:14 at least I remember using one once 13:21:33 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 hmm, let me check, I think I've written similar code for intercal-mode 13:27:39 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 for your .emacs file 13:29:03 seems to require that the haskell code's loaded first, though 13:29:42 and I forget the syntax to do that 13:30:01 or, hmm, I bet you'd put it in the hook for haskell-mode loading 13:30:59 elliott? 13:31:10 Your elips, it was too much for him. 13:31:16 s/ps/sp/ 13:31:22 He's lost within Emacs now. 13:40:34 oh well 13:40:40 he'll probably escape eventually, it isn't TV Tropes 13:41:48 No, we'll just get a final mysterious "it's full of parentheses" transmission. 13:46:44 back, sorry 13:46:55 ais523: thanks! 13:47:48 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 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 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 However, I don't think [this TR] would be especially useful, and I 14:31:30 don't envision it gaining wide acceptance due to the following: 14:31:30 awkward names with _s suffix 14:31:30 Committee Response: 14:31:30 It is less awkward than the posix_ prefix :-) 14:31:45 ais523: Can you imagine the C commitee using a /smiley face/? 14:32:03 yes 14:32:16 * elliott can't. 14:32:49 [[ 14:32:49 people that want to manipulate strings are probably better off using 14:32:49 C++ unless they're concerned with speed in time-critical loops in 14:32:50 which they don't want to be doing superfluous checks anyway. 14:32:50 Committee Response: 14:32:50 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 ]] 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 elliott: they mean that quite a lot of people have existing C code 14:33:28 so it's legacy in that sense 14:34:05 ais523: well, yes, but that's the only objection they offer to "just use C++" 14:34:16 they only need one objection :) 14:34:24 fair enough :P 14:34:42 [[ edited out suggestion for additional robustness checking functions, 14:34:42 available on request ]] 14:34:42 Committee Response: 14:34:42 If the author wants to generate a proposal and submit this proposal to WG14, it will be considered. 14:34:45 ICE BURN 14:35:14 (I wonder where this "generate"-as-author(v.) jargon comes from; the committee are using it a lot here.) 14:35:27 the "available on request" implies to me that the suggestion was probably pure trolling 14:35:31 that reminds me, I need to write that paper for WG14 14:36:05 Dear WG14, 14:36:06 elliott: Perhaps even an ICE BURN 14:36:12 Please die. 14:36:16 Love, 14:36:20 Elliott 14:36:28 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 Thanks. 14:36:55 You forgot to -o yourself. 14:37:02 Even if you're kicked, it's the spirit of the thing. 14:37:07 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 The committee's remarks are in a different font. 14:37:16 ah, perhaps 14:37:25 (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 ais523: hmm, ah, it seems like they view the /functions in question/ as primarily useful for legacy code 14:38:52 (it's the _s stuff) 14:39:02 presumably, they hope newly-written code doesn't need safeguards like that to ensure safety 14:39:03 right, the _s stuff 14:39:10 Microsoft have been trying to get them to add that for years 14:39:14 probably decades now, actually 14:39:26 haha, literally everyone is complaining about the "secure" name for them 14:39:40 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 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 presumably there are others in the same vein 14:40:35 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 the "secure" thing was Microsoft propaganda 14:41:09 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 I'm scared of this "diagnosed undefined behaviour" concept the thing apparently referred to 14:42:14 Wasn't it just _s for 'safe'? 14:42:19 -!- Sgeo has joined. 14:42:23 fizzie: the title was blah blah secure blah 14:42:36 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 elliott: almost certainly 14:42:48 and knowing Microsoft, the mode argument too 14:43:03 haha 14:43:22 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 elliott: It's errno_t fopen_s(FILE** pFile, const char *filename, const char *mode) in Microsoft libs. 14:43:45 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 fizzie: oh right, the Microsoft versions return errno 14:44:07 I doubt the committee versions do 14:44:11 I hope they don't 14:44:23 ais523: And it just validates the pointers in case of NULLs, it doesn't have a filename length field. 14:44:29 although, if they have incompatible functions to Microsoft's with the same names, Microsoft will probably get annoyed 14:44:51 (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 .cs is the file extension for C# source code, right? 14:45:41 fizzie: well, it's easy enough to make fopen validate nulls 14:45:46 elliott: yes 14:46:01 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 ouch 14:47:26 ais523: thanks 14:47:36 fizzie: haha, it introduces an errno_t? 14:47:39 well, in theory you could use anything, but .cs seems most common 14:47:46 elliott: errno_t already existed, I think 14:47:49 although maybe only in POSIX 14:48:09 It's not in C99 14:48:39 It's not in C99; it's explicitly defined to be equivalent to "int" in C11. 14:49:09 How useful. 14:49:44 [[ 14:49:52 ----------------------------------------------- 14:49:53 >From Ulrich Drepper 14:49:53 The proposed safe(r) ISO C library fails to address to issue completely. 14:49:53 The problem with the existing interfaces is that the programmer has to 14:49:53 put in a lot of additional effort to make sure the program behaves 14:49:53 correctly. In many situations a much simpler code, with all kinds of 14:49:55 error checking removed, works equally well and therefore is left out. 14:49:57 This is the core of the problem. Code is rather written like 14:49:59 [...] 14:50:01 Proposing to make the life of a programmer even harder is not going to 14:50:03 help. But this is exactly what is proposed. [...] 14:50:04 The rationale in somewhere is that it makes it "semantically" clear that what is returned is an error code. 14:50:05 Committee Response: 14:50:07 This committee is not addressing lazy programmers. 14:50:09 ]] 14:51:41 elliott: somehow I think that point might have been made better if it wasn't Drepper trying to make it 14:52:00 ais523: it was fairly well-made, I just snipped out all the irrelevant parts 14:52:08 ah, I see 14:52:13 the actual committee response is 14:52:17 [[ 14:52:18 This committee is not addressing lazy programmers. The committee felt the examples given were a little misleading, and believe that 14:52:18 char *p = malloc (3 * NAME_LEN); 14:52:18 strcpy_s (p, 3 * NAMELEN, name1); // there will be a constraint violation if malloc failed 14:52:18 strcat_s (p, 3 * NAMELEN, name2); 14:52:19 strcat_s (p, 3 * NAMELEN, name3); 14:52:21 will generate a much safer outcome. 14:52:23 In the first example given, if the malloc failed, there would have been 14:52:25 undefined behavior, as there would have been if 14:52:27 strlen(name1)+strlen(name2)+strlen(name3) > 3*NAMELEN. 14:52:29 However, 14:52:31 with this simple substitution for the safer functions, 14:52:33 there is no undefined behavior. If malloc failed, at the end of this code 14:52:35 fragment, p would be NULL, and no undefined actions would have occurred 14:52:37 (though the implementation defined constraint violation handler would have 14:52:39 been executed three times). If the overall length was too long, then p would 14:52:41 point to memory that had the first byte set to 0. This memory could be 14:52:43 successfully freed later. 14:52:45 ]] 14:52:47 which is (a) much more reasonable, (b) much less funny 14:52:51 cf. ais523 v. Installing Gentoo with 3 commands 14:53:12 oh, I prefer reasonable to funny 14:53:54 hmm, I was writing some Neverwinter Nights scripting code recently 14:54:05 and the main unusual feature of that language is error values propagating 14:54:28 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 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 although I feel a bit weird when I deliberately use that fact 14:55:03 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 (The IsBadReadPtr and IsBadWritePtr things mentioned in there.) 14:55:40 ais523: as in, f(nil) -> nil? 14:55:44 elliott: yep 14:55:46 Objective-C has [nil anything] -> nil 14:55:48 which is comparable 14:56:07 elliott: although instead of nil, it uses 0, "", and OBJECT_INVALID 14:56:10 ais523: I think Icon has similar 14:56:15 which is a bit uglier 14:56:25 OBJECT_INVALID is fine, but 0 and "" aren't because they're sometimes reasonable return values in their own right 14:56:49 I love Icon because it's one of the only languages where "x < (y | z)" DTRT 14:57:04 elliott: do you love Perl 6 for the same reason? 14:57:24 hmm, how is it phrased there? 14:57:59 I think it's actually exactly the same 14:58:01 not sure, though 14:58:33 * ais523 updates Rakudo 15:01:17 * ais523 fails to update Rakudo 15:01:37 ais523: don't worry, you suceed a few minutes ago 15:01:44 just wait for Feather 15:01:55 *succeed 15:02:20 I'm going to retry from scratch 15:08:21 ais523: as long as you go back afterwards 15:08:41 now I'm thinking about the irony of Rakudo's configure script being written in Perl 5 15:08:49 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 so what does knowing the partial order of a data type do for me? 15:50:29 gives you a partial order 15:51:12 You must be desperate to know what a father of the groom speech is if you are reading this now. 15:51:44 :D 15:51:47 i am! 15:51:59 "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 it's simultaneously right on one level and wrong on a different one 15:52:04 ais523: Our spambots are quite Republican lately. 15:52:08 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 probably the spam's out-SEOed the original quote 16:01:00 up is down black is white and short is long 16:02:12 @pl (x y z -> z ++ "|" ++ y ++ "|" ++ z) 16:02:13 (line 1, column 8): 16:02:13 unexpected ">" 16:02:13 expecting variable, "(", operator or ")" 16:02:16 @pl (\x y z -> z ++ "|" ++ y ++ "|" ++ z) 16:02:17 const (ap (++) . (('|' :) .) . (. ('|' :)) . (++)) 16:03:48 -!- Ngevd has joined. 16:04:05 Hello! 16:04:56 I managed to mention esoteric programming languages in my General Studies exam 16:05:19 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 It's my first A-level exam 16:05:44 well, not /really/ 16:05:54 Got Maths exam on Friday, should I continue the pattern? 16:05:56 General Studies doesn't count, apart from being embarrassing if you fail it 16:06:06 Ngevd: if you reasonably can, I guess 16:06:17 it should be harder to slip into Maths than General Studies without looking out of place, though 16:06:21 elliott: right so 16:06:22 I wrote my high school English diploma examination on Order of the Stick 16:06:27 what does having a partial order do for you? 16:06:28 hmm, is Maths still Module-based? 16:06:33 One of my friends managed to mention Star Wars in every single GCSE exam 16:06:35 ais523, yes 16:06:38 aside from giving you a nice Ord instance. :P 16:06:57 coppro, he, nice 16:08:08 mmmm lentils 16:08:18 it as kind of a lame essay though 16:08:21 because I didn't have focus 16:08:29 oh well, my essay-writing days are mostly over 16:08:47 (and I can still write pages about rules ;) ) 16:23:41 One of my friends managed to mention Star Wars in every single GCSE exam 16:23:57 Wow, he must have a lot of time on his hands. 16:23:57 That he sat, of course 16:24:09 He didn't mention it in the ones he didn't sit 16:24:52 Also, one of my folio pieces for Higher English was "Comic Sans: a Sad Indictment of Our Times". 16:26:48 elliott: Success(-ish)! 16:28:29 * Phantom_Hoover → goddamn STEP preparation. 16:37:10 shachaf: Ish! The best kind. 16:48:16 elliott: I think I'll just let you take over. 16:48:54 shachaf: I apologise for bringing up Char8 :( 16:49:22 elliott: You can make up for it by accusing nexion of being racist, like a certain member of #haskell would. 16:50:06 ...what? 16:50:36 Sgeo: People who say they "don't need Unicode" are usually under the influence of some rather heavy cultural bias. 16:50:45 shachaf: You'd think Haskell users would appreciate the value of using types that say what you mean. 16:51:38 Almost every programming language which has keywords has those keywords in English 16:51:39 :/ 16:51:44 Standard library names, etc. 16:52:00 Sgeo: Maybe you shouldn't try and comment on discussions you only see the behind-the-back commentary on? 16:52:02 elliott: You'd be surprised! 16:52:13 God dammit mm_freak! 16:52:34 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 elliott, I am present in #haskell , my comment was somewhat tangential, I guess. 16:53:11 Sgeo: I'm just plain not sure what the relevance is, then. 16:54:12 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 elliott: Sure you are, elliott++ 16:55:00 Yessss 16:55:29 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 19:54 < nexion> Sgeo, yeah, I use that for the Unicode sections of the stream 16:55:47 All negative, who needs to remember good things about people. 16:55:59 It's good to hear that the stream has "Unicode sections". 16:56:22 But of course the rest of it is ASCII. 16:56:26 Presumably, the word POST or GET or whatever never contains non-ASCII characters, is his point? 16:56:27 shachaf: They only need ASCII! 16:57:02 elliott: "heavily optimised" 16:57:11 shachaf: I saw a blog post with #s in it once. 16:57:17 That's heavily optimised enough for me, tyvm. 16:57:22 I wrote a program wih #s in it once. 16:57:28 > ord '#' 16:57:29 35 16:57:39 shachaf: (Is Text not actually fast?) 16:57:43 I mean, the structure sucks, but. 16:57:58 Not nearly as fast as ByteString when you're processing ASCII in certain cases. 16:58:06 At least, when I last tried it. 16:58:19 shachaf: Well, who gives a shit; ideological purity trumps all. 16:58:27 Sure. 16:58:36 ...In some cases. 16:58:52 Like "why can't I pattern-match ByteStrings?". 16:59:05 It's 08:58, by the way. 16:59:18 I don't care how "heavily optimised" Text is; it's got stupidity built in 16:59:21 Use view patterns and uncons 16:59:22 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 wow I'm somehow still connected 16:59:58 which is strange 17:00:07 since the computer suspended to disk 17:00:33 elliott: Not when it's O(n/k)! 17:00:54 (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 shachaf: What's multiplication, man. 17:01:29 "View patterns an unicorns" sounded exciting. 17:01:32 Then it was just uncons. 17:01:43 elliott: Hey, I want a type to represent a vector of length 7. 17:01:49 #define unicorns uncons 17:01:50 Go wild 17:01:52 :t uncons 17:01:53 Not in scope: `uncons' 17:01:53 But access to it has to be O(1), not O(7). 17:01:55 What do I do? 17:01:59 ?hoogle uncons 17:02:00 Data.ByteString.Char8 uncons :: ByteString -> Maybe (Char, ByteString) 17:02:00 Data.ByteString.Lazy.Char8 uncons :: ByteString -> Maybe (Char, ByteString) 17:02:00 Data.ByteString uncons :: ByteString -> Maybe (Word8, ByteString) 17:02:10 shachaf: just divide O by 7 17:02:16 ?hoogle snoc 17:02:16 shachaf: newtype Vec a = Vec (a,a,a,a,a,a,a) 17:02:16 Data.ByteString.Char8 snoc :: ByteString -> Char -> ByteString 17:02:17 Data.ByteString.Lazy.Char8 snoc :: ByteString -> Char -> ByteString 17:02:17 Data.ByteString snoc :: ByteString -> Word8 -> ByteString 17:02:22 shachaf: There's only one field, so it must be O(1). 17:02:38 O(7) lol 17:02:39 Also I want this to work for any value of 7. 17:02:52 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 Deewiant: Trade-offs. 17:03:04 Deewiant has a point. 17:03:13 Can view-patterns be used to hide an equality check? 17:03:22 As a pattern match 17:03:24 shachaf: I was going to say something. 17:03:42 Sgeo: The point is that writing the ByteString that represents the ASCII "POST" is awkward. 17:03:57 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 f ((==blah) -> True) = whatever 17:04:11 shachaf: To make up for my long spiel about monads, I wrote a long spiel about applicatives. 17:04:12 Sgeo: f blah | isAscii "POST" blah = ... 17:04:22 Vorpal: Most people don't have 7-core processors 17:04:39 elliott, indeed, I have 8 core (including the hyper threading) 17:04:43 shachaf, I'm not going for decency here 17:04:47 elliott: Why don't you write a long spiel about jQuery? 17:04:49 I'm going for abuse of view patterns 17:04:51 Vorpal: You're bourgeois. 17:04:56 elliott, heh 17:05:06 Vorpal: A 7-core processor is just an 8-core prosessor with one snuffed core. 17:05:19 shachaf: What is there to say? It is art; it is perfection. It's the alpha and the qoppa. 17:05:20 elliott, anyway, what about stuffing multiple values into a single SSE or AVX register 17:05:22 Would my pattern work? 17:05:24 jQuery is. 17:05:27 or even into a normal machine word 17:05:39 Vorpal: You have to stuff all 7 of them 17:05:39 elliott: I thought it was a monad. 17:05:41 So O(7) again. 17:05:49 shachaf: It's an ArrowApply. 17:05:56 elliott, how large is each? And once you stuffed them like that you could keep them like that surely 17:06:11 and you can load an entire SSE register with one instruction anyway 17:06:15 (same for writing it out) 17:06:38 Isn't AMD Phenom X3 just those samples of Phenom X4 where one of the cores failed the tests? 17:06:44 I believe so 17:06:44 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 shachaf: The T^2 represents elements on the page. 17:07:29 shachaf: The \mu is jQuery. 17:07:33 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 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 shachaf: T_\eta is the CSS selector you're using. 17:08:03 "Oh yeah, C#4’s dynamic is a monad 17:08:03 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 Here’s a somewhat trivial example: 17:08:03 dynamic foo = new { 17:08:03 bar = "baz" 17:08:05 }; 17:08:07 Console.WriteLine(foo.bar);" 17:08:09 Very monadic! 17:08:22 The wrapping is magic and the binding is baked into the semantics of the language. 17:08:31 fizzie, if they still do that, I don't remember 17:08:36 fizzie, (it is a sandy bridge) 17:08:36 shachaf: Also, I see no diagrams on that second one. 17:08:44 elliott: It's true. I meant "more suffering". 17:08:57 Vorpal: IIRC the "Extreme Edition" chips do also have some bumped-up specs in addition to overclockability. 17:09:05 possibly 17:09:17 shachaf: I'm glad that guy acknowledges Microsoft are evil. 17:09:19 fizzie, mine is a normal edition sandy bridge i7 at 3.4 GHz 17:09:25 In his blog title. 17:09:29 fizzie, which is pretty extreme anyway 17:09:33 Along with an evil-looking pumpkin. 17:09:36 I think he has Microsoft issues. 17:09:49 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 fizzie, ah possibly 17:10:15 shachaf: Heyy, cheater isn't here, I can complain about him wasting space in #haskell with impunity! Well, relative impunity. 17:10:42 Just wait until #-blah hears that quote! 17:10:55 fizzie, I believe one of the labs at university have those. 17:10:55 shachaf: Don't. 17:11:08 elliott: Don't worry, I'm leaving anyway. 17:11:08 fizzie, it also have pretty old nvidia quadro cards for some reasons. 17:11:11 reason* 17:11:20 shachaf: Do you remember when cheater tried to get me banned from #haskell because I pointed him to LYAH? 17:11:26 No. 17:11:28 That was fun. 17:11:51 cheater, he took an arrow in the knee 17:11:51 heh. 17:11:58 Phantom_Hoover: Is there a cure for crying. 17:12:15 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 elliott: Yes: Conveniently, the cure is crying. 17:12:29 elliott, anti-onion. 17:12:41 Phantom_Hoover: Sounds explosive. 17:12:56 Vorpal: Anyway, they seem to have gotten a Core i7-3930K/-3960X six-physical-cores models out now, too. 17:12:57 Yes, with tears. 17:12:59 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 The Anti-onion Router, also known as "tar". 17:13:17 fizzie, heh 17:13:20 Did you know /bin/tar sends everything you do to the NSA immediately? 17:13:26 Only GNU tar. 17:13:29 fizzie, I'm pretty sure those weren't around when I bought mine 17:13:57 fizzie, why not VT-d? 17:14:01 fizzie, that makes no sense 17:14:02 hm 17:14:26 fizzie, I believe the one I have does VT-d but my mobo doesn't or something like that 17:18:27 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 It's like the Pokemon versions. 17:19:53 Gotta buy them both to have all the feechurez. 17:20:03 heh 17:22:21 elliott, I wonder if there are extreme edition xenons? 17:22:27 probably not 17:22:38 anyway I would quite like to use VT-d 17:23:21 possibly 17:23:26 not sure what the point would be 17:23:52 would be nice if you could use this for the GPU or such to do fast 3D in qemu 17:24:11 sounds unlikely to work though 17:24:24 and would not work at all with windowed mode 17:26:41 Hmm, what do IBM actually /do/ these days? 17:26:55 I can't actually think of anything I associate with them. 17:26:56 Chips 17:27:09 Not any chips I've heard of, at least. 17:27:44 They do the CPU for Wii's 17:28:20 And XBox 360's 17:28:39 and main frames 17:28:45 Main frames. 17:28:48 yes 17:28:59 They co-designed the PS3 CPU 17:29:33 Vorpal, main frames. 17:29:50 Phantom_Hoover, yes. They are still made 17:30:21 Main... frames. 17:30:33 Phantom_Hoover, as opposed to minicomputers 17:30:56 Phantom_Hoover: Mainframes, CPUs. 17:31:05 Supercomputers. 17:31:10 oh yes, that too 17:31:10 Bad software. 17:31:20 Research. 17:31:45 AIs on quiz shows 17:31:50 IBM, a bad software company. 17:31:53 Ngevd, snap you just beat me to that 17:32:05 Makers of the finest bad software. 17:32:33 "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 eh 17:32:38 virtually all? 17:32:41 2 out of 3? 17:32:52 The Wii uses an IBM chip too. 17:33:02 oh right, says so much further down 17:33:07 so all then 17:33:12 not just virtually all 17:33:58 "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 You'd almost think the technology was six years old or something. 17:35:11 Phantom_Hoover, hm weren't Intel at like 60 nm around then? 17:35:16 s/PC CPUs/x86/ 17:35:19 elliott, well yes 17:35:25 Intel and AMD x86, even. 17:35:30 indeed 17:35:31 "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 Game Cube used IBM chips 17:35:45 65 nm — 2006 17:35:49 elliott, Intel and AMD stands for virtually all consumer x86 CPUs used in desktops and laptops though 17:35:53 2011-6 = 2005. 17:35:55 So not really. 17:36:05 elliott, what year is it? 17:36:09 elliott, hm okay 17:36:22 Nevermind 17:36:30 Ngevd, 2012? 17:36:37 My god. 17:36:40 bbl 17:37:11 Jan 2012. 17:37:24 It's not not-2011 for a while now. 17:37:26 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 Nintendo are really impressively durable with their platforms. 17:38:12 At least compared to today's cycles. 17:38:38 elliott, come on, how old is the PS3? And the xbox 360? 17:38:56 Do you know the first thing about either? 17:39:04 Phantom_Hoover, that they are better than wii? 17:39:10 lol 17:39:24 Vorpal: because they have a better CPU, right? 17:39:25 There are about ten different models of each, which subdivide into about three or four generations of hardware. 17:39:43 elliott, better hardware at least, not sure if it is the CPU or the GPU (if they even have separate GPUs?) 17:39:59 Phantom_Hoover, hm. Right. 17:40:15 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 Ah yes, that reminds me. 17:41:00 I need to correct the genetive of "nemo" from "nullius" to "neminis" 17:41:18 Vorpal: I have no comment. 17:42:05 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 Vorpal, surely even /you/ understand budgeting. 17:42:10 rumours* 17:42:24 Phantom_Hoover, yes? What about it? 17:42:39 Phantom_Hoover, you mean the separate GPU thingy? 17:43:43 Bye 17:43:47 -!- Ngevd has quit (Quit: Goodbye). 17:43:53 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 Phantom_Hoover: Those were introduced later, though. 17:45:05 Presumably due to market pressures the Wii placed upon consoles. 17:45:34 And indeed a Wii is cheaper at current prices. 17:46:12 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 I presume you have done this regularly. 17:46:47 Phantom_Hoover: You know not the true face of England. 17:47:07 Which makes it all the more amazing that you haven't played any SSB games despite them being the best. 17:50:05 Phantom_Hoover: Also the true face of England. 17:50:14 * elliott doesn't even own a Wii. 17:50:27 Tut tut tut? 17:50:30 Pirate one. 17:50:47 Yes. 17:51:19 Phantom_Hoover: The solution is clear: a Hexham-Helsinki SSB battle???? For friendship diplomacy. I will supply the friendship, 17:51:42 OK. 17:51:45 Which SSB. 17:52:25 Phantom_Hoover: All... of them... simultaneously? 17:52:31 Controlled by the same controller. 17:52:40 Polyglot gaming. 17:52:51 I don't think you can use an N64 controller with a Wii but wait 17:53:03 Phantom_Hoover: There's a "classic" controller for the Wii 17:53:06 It's just a matter of software. 17:53:16 I know this. 17:53:23 EXCUSE ME IM WII EXPERT 17:53:31 Phantom_Hoover: Oh my god polyglot gaming of two unrelated games would be the most amazing thing ever. 17:53:33 I have a new life goal. 17:55:09 Hmm, unrelated games hasn't been done as far as I'm aware 17:55:32 Deewiant: What has been done by implication? 17:55:37 Some set of Mega Mans, Mega Man Xs, Final Fantasies, and Marios has been done, at least 17:55:43 Neat 17:55:44 (Those are the ones I recall having seen) 17:55:57 And this is TAS, not sure if that counts 17:56:04 In realtime? 17:56:05 Right. 17:56:09 Well, that makes it "easier". :p 17:56:47 Evidently TASVideos has a category for it: http://tasvideos.org/Movies-C2020Y.html 17:56:54 And there's no others than the ones I remembered 18:00:11 I remembered the Mega Man and the Mario ones, but not that Final Fantasy set. 18:01:09 Didn't some dude play Mega Man X and X2 in realtime? 18:01:29 Or maybe I'm just recalling that TAS thing. 18:01:43 I don't recall any non-TAS. 18:02:26 Can't find one, so maybe it was just the TAS. 18:02:38 Anyway, there was that "Mario 64 with feet", you never know what people do. 18:03:36 fizzie: that TAS has been improved since 18:03:42 X1, X2, X3 300% 18:03:55 there have been other multigame runs; most are worse than the original, that one's better though 18:04:20 Yes, I can see that. I probably just saw the X1/X2 one. 18:04:27 Also "300%" sounds silly. 18:04:35 well, 100% * 3 18:05:52 fizzie: you must hate cpu metres 18:06:02 ~GOODE NIGHTE FRENS~ 18:07:04 Not all CPU metres use 100% = one CPU 18:07:39 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 Aw, "List of lists" just goes to Portal:Contents/Lists. I was hoping it would be called that. 18:42:06 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 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 or one in each hand? 19:04:40 No, I was wondering if Nintendo offered the original Super Smash Bros. on their internet service. 19:05:11 Aha, it is. 19:05:38 So you could play all three SSB games at once on a Wii, at least. 19:06:13 And yes, indeed, you can use a GameCube controller for all three. 19:06:59 Phantom_Hoover, I was suggested an alternative solution 19:07:20 It is an inferior solution. 19:07:28 Phantom_Hoover, well yes 19:07:56 -!- monqy has joined. 19:12:35 you can emulate it of course 19:16:25 -!- Ngevd has joined. 19:20:41 -!- Patashu has joined. 19:21:05 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 what's a JITchard 19:36:12 is it a richard with a speech impediment 19:36:39 JITchards 19:36:49 It's the JIT I wrote for IOCCC 19:36:53 aha 19:37:37 How did that go? 19:38:06 JITchards, by Jegoj 19:40:03 :t op 19:40:04 forall o n. (Newtype n o) => (o -> n) -> n -> o 19:40:21 :t rop 19:40:22 Not in scope: `rop' 19:40:24 :t opr 19:40:25 Not in scope: `opr' 19:40:46 op? 19:41:04 @hoogle op 19:41:04 System.IO openBinaryFile :: FilePath -> IOMode -> IO Handle 19:41:04 GHC.IO.Handle.FD openBinaryFile :: FilePath -> IOMode -> IO Handle 19:41:04 System.IO openBinaryTempFile :: FilePath -> String -> IO (FilePath, Handle) 19:41:34 something like that from simplereflect 19:41:50 which hoogle doesn't cover afaik 19:44:51 it's op, apparently 19:47:50 :t Debug.SimpleReflect.op 19:47:51 Couldn't find qualified module. 19:47:57 :t fun 19:47:58 forall a. (SimpleReflect.FromExpr a) => String -> a 19:48:02 -!- Klisz has quit (Quit: SLEEP, GLORIOUS SLEEP). 19:48:06 :t SimpleReflect.op 19:48:07 Not in scope: `SimpleReflect.op' 19:48:34 -!- Phantom_Hoover has quit (Ping timeout: 276 seconds). 19:49:13 one of lambdabot's great mysteries: how to qualify a given module identifier, if it's even possible. 19:49:17 :t expr 19:49:18 Expr -> Expr 19:49:38 :t f 19:49:39 forall a. (SimpleReflect.FromExpr a) => a 19:50:16 :k (SimpleReflect.FromExpr a) => a 19:50:17 Not in scope: type constructor or class `SimpleReflect.FromExpr' 19:50:24 :k (FromExpr a) => a 19:50:25 Not in scope: type constructor or class `FromExpr' 19:51:04 :t f == "a" 19:51:05 No instance for (SimpleReflect.FromExpr [Char]) 19:51:05 arising from a use of `f' at :1:0 19:51:05 Possible fix: 19:53:00 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 oh my god why are ice cream waffles so good. 20:25:58 It's not that ice cream waffles are so good, it's that everything else is so bad. 20:26:20 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 wat 20:27:03 no I'm pretty sure ice cream waffles are just really good. 20:27:10 like... it's like having a waffle cone 20:27:19 but warm and more like an actual waffle 20:27:21 because it is 20:27:23 aside from giving you a nice Ord instance. :P <-- Ord instances are supposed to be _total_ orders (ignoring bottom/nontermination) 20:27:30 oerjan: ah okay. 20:27:44 who makes a bottom/nontermination Ord instance 20:28:03 * oerjan swats monqy -----### 20:28:09 lists? 20:28:17 well of course. 20:28:18 kallisti: I wouldn't know. I've nevre had an ice cream waffle. 20:28:32 [1..] <= [1..] has no chance of terminating. 20:28:38 monqy: if you instead elect to use _|_ to mean false 20:28:40 :'( 20:28:41 and True to mean True 20:29:00 then you can define _|_ to not equal anything. 20:29:02 :> 20:29:10 :'( :'( :'( 20:32:19 Dafuq is an ice cream waffle? 20:32:43 Unless you're just talking about waffles with ice cream. 20:34:04 I am 20:34:05 like 20:34:08 waffles 20:34:09 then 20:34:11 put ice cream on them. 20:34:14 ice cream waffle 20:34:22 oerjan, can't a partial order be said to be a total order ignoring bottom? 20:34:28 Oh, I guess circular stuff 20:35:06 Logically an ice cream waffle should be a waffle made of ice cream 20:35:07 Sgeo: no, you can have x <= y and y <= x both being False 20:35:09 Except that that is nonsense. 20:35:12 no bottom involved 20:36:08 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 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 " Sgeo: no, you can have x <= y and y <= x both being False" this is weird. 21:49:13 never heard of a partial order? 21:49:47 not before today 21:50:02 im on the wiki page now 21:50:09 -!- Ngevd has joined. 21:50:24 Partial ordering is the best kinds of ordering. 21:50:33 Other than well-ordering. 21:50:37 And a semilattice. 21:50:52 Hello 21:51:33 i'm rather partial to it myself 21:53:03 itidus20: a good example is set inclusion. neither of {1,2} and {1,3} is contained in the other. 21:53:18 shachaf, what about pizza ordering? 21:53:33 Phantom_Hoover: That's just lazy. 21:53:52 Go to the pizzeria yourself if you want pizza so much. 21:53:58 cowabunga 21:54:51 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 in a japanese animated adaption of an american comic 21:56:02 the world truly is beautiful 21:56:48 @google is the world beautiful 21:56:49 http://www.theworldisbeautiful.com/ 21:56:49 Title: the world is beautiful 21:57:00 Hotels and restaurants that match your preferences:Luxurious and Relaxing Hotels in Buenos Aires 21:57:12 Truly. 21:58:13 Goodnight 21:58:15 -!- Ngevd has quit (Quit: Goodbye). 22:03:24 i have pondered about the mysteries of order before 22:03:50 mysteries? 22:03:53 but without breaking any ground 22:04:12 uh.. now i suppose i have to try to remember 22:07:02 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 `searchlog itidus list 22:39:34 No output. 22:40:18 -!- pikhq_ has joined. 22:40:24 -!- pikhq has quit (Ping timeout: 248 seconds). 22:46:50 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 something about the [first] [??] [??] [last] 22:49:59 well that doesn't look obviously wrong so far :P 22:51:40 @src first 22:51:41 Source not found. Sorry about this, I know it's a bit silly. 22:51:48 kallisti: Arrow method 22:51:51 @src Arrow 22:51:52 class Arrow a where 22:51:52 arr, pure :: (b -> c) -> a b c 22:51:52 (>>>) :: a b c -> a c d -> a b d 22:51:52 first :: a b c -> a (b,d) (c,d) 22:51:52 second :: a b c -> a (d,b) (d,c) 22:51:53 (***) :: a b c -> a b' c' -> a (b,b') (c,c') 22:51:56 (&&&) :: a b c -> a b c' -> a b (c,c') 22:52:08 @src first (->) 22:52:09 Source not found. BOB says: You seem to have forgotten your passwd, enter another! 22:52:15 @src (->) first 22:52:15 first f = f *** id 22:52:21 is it not defined in terms of -- ah yes 22:52:23 @src (->) (***) 22:52:23 (f *** g) ~(x,y) = (f x, g y) 22:52:51 yes 22:53:16 *** is like two processes in parallel. 22:54:09 basically it produces a function on the product of the two argument types of its operand functions. 22:54:13 well parallel dataflow. i'm sure the Kleiski instance does one of them first. 22:54:16 yes. 22:54:24 @src Kleiski (***) 22:54:24 Source not found. Just try something else. 22:54:29 I didn't mean "process" in any kind of concurrent sense. 22:54:42 um 22:54:45 @src Kleisli (***) 22:54:46 Source not found. And you call yourself a Rocket Scientist! 22:54:53 :t Kleisli 22:54:54 forall a (m :: * -> *) b. (a -> m b) -> Kleisli m a b 22:55:07 @src (,) (&&&) 22:55:07 Source not found. 22:55:15 halp 22:55:25 i don't know that (,) is an Arrow 22:55:35 @src (->) (&&&) 22:55:35 Source not found. I've seen penguins that can type better than that. 22:55:36 the first argument has the wrong variance 22:55:39 -!- itidus21 has quit (Ping timeout: 248 seconds). 22:55:55 @src (&&&) 22:55:55 f &&& g = arr (\b -> (b,b)) >>> f *** g 22:56:09 ah 22:56:17 it takes a single flow of data and splits it in two. 22:56:24 :t arr 22:56:26 forall b c (a :: * -> * -> *). (Arrow a) => (b -> c) -> a b c 22:56:37 > (f &&& g) x :: Expr 22:56:38 Couldn't match expected type `SimpleReflect.Expr' 22:56:38 against inferred ... 22:56:42 oops 22:56:52 > (f &&& g) x :: (Expr, Expr) 22:56:53 (f x,g x) 22:56:58 yes 22:57:19 > (f *** g) (x,y) :: (Expr, Expr) 22:57:20 (f x,g y) 22:57:37 yes 22:57:42 not sure I get what arr is doing though 22:57:58 er well I know what it's doing in that case 22:57:59 just not in general 22:58:19 turns a function into an arrow 22:58:23 is it like... ah okay 22:58:40 yes I see that based on the type. 22:59:14 arr (join (,)) >>> f *** g 23:00:36 some have complained that arr is used too much in the Arrow definitions 23:00:54 makes it hard to generalize to arrow-like things that _don't_ embed all functions. 23:01:39 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 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 Sounds like a good idea. 01:00:21 I should do that. 01:07:37 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 http://en.wikipedia.org/wiki/Markov_random_field 02:03:42 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 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 whats the most exotic machine architecture people know about? 05:05:03 exotic but not absurd 05:05:33 The Z3, by Konrad Zuse? 05:05:58 ill check it out :p 05:06:02 whats so exotic about it? 05:06:40 old 05:06:53 augur, there are some architectures where the only instruction is "mov" 05:06:53 Basically the first modern computer. Also, TC without a conditional branch operator. 05:07:02 everything, even arithmetic, is memory-mapped 05:07:15 to add numbers, you mov them to the ALU and then mov out of the "addition result" address 05:07:28 That seems like it's essentially just a different way to encode instructions. 05:07:30 kmc: thats kind of nice when you think about it 05:07:37 Also, 22 bit words. 05:07:50 Possibly interesting when you can remap memory yourself, I suppose. 05:08:00 shachaf, or move directly between any two functional units 05:08:19 Ah, that's true. 05:09:41 i don't know much about this 05:21:37 The ruskies built base-3 computers 05:21:50 Probably balanced ternary 05:41:16 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 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 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 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 22:55:25: i don't know that (,) is an Arrow 07:27:05 arr :: (a -> b) -> (a,b) 07:27:53 (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 http://esoteric.voxelperfect.net/wiki/She_Gives_Me_Money_When_Im_In_Need_Lyrics 07:28:14 Contents [hide] 07:28:14 1 She Gives Me Money When Im In Need Lyrics 07:28:14 1.1 She Gives Me Money When Im In Need Lyrics 07:28:14 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 1.1.1.1 External links 07:28:40 00:59:52: * kallisti considers taking a break from this channel 07:28:45 kallisti: sorry i'll tone down my cool 07:29:19 fungot: Why don't you ever give me money when I'm in need? 07:29:19 fizzie: mr president, when the commission adds up the income side of agenda 2000. 07:29:36 fungot: Yeah, yeah, it's always one excuse or another. 07:29:36 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 fizzie: fungot's way over time to dig you. 07:31:49 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 elliott, you're now compelled to invent an esolang named She Gives Me Money When Im In Need Lyrics 07:36:43 kmc: I haven't even made My Name Is Johny, What The F**K? yet :( 08:08:24 elliott: Why are there so many typeclasses, wouldn't it make sense to have "one universal" type class? 08:08:49 I thought you would appreciate the suggestion in your design of @. 08:09:05 shachaf: Oleg did that, didn't he? 08:09:11 It was one single MPTC with a single member or something. 08:09:18 That you could implement any typeclass with. 08:09:26 I don't imagine that Cody_ and Oleg were thinking of the same thing. 08:09:37 But I vaguely remember something along those lines, I think. 08:10:20 shachaf: Cody_ is the name Oleg uses on IRC. 08:11:38 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 learnyouatypeclass.com 08:13:14 Even ddarius snapped at him a few days ago. 08:13:21 Cody_: I expect a five year old who's had access to a computer to be able to answer these questions. 08:13:54 Remember the "friendlist channel on Freenode" award that members of #haskell like to award #haskell? 08:14:49 shachaf: Has Cody_ read a Haskell tutorial? 08:15:06 learn you a google for great good 08:15:06 I assume so. 08:15:18 shachaf: Really? All the way through? 08:15:31 Oh, oh. 08:15:33 I don't know. 08:15:42 shachaf: You should ask them! 08:15:52 Maybe I shouldn't! 08:16:04 We had a discussion in /msg about how to ask questions. 08:16:27 shachaf: I hear esr wrote an essay on that! 08:17:02 When given an answer to that "why are there so many typeclasses": (Cody_) Axman6: I thought typeclasses were extra fluff. 08:17:18 He has a point. 08:17:24 class Fluff a where fluff :: a 08:17:53 class Fluff f => ExtraFluff f where extraFluff :: a 08:17:56 * Cody_ understands why we need typeclasses 08:17:58 Enlightenment. 08:18:13 :D 08:18:24 i would be ranting so hard right now 08:18:32 shachaf: 20:45:24 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 shachaf: This guy understands why you can't say "a = b" in GHCi. 08:19:57 Misread as " i would be ranting if i weren't so hard right now". Don't know how that happened. 08:20:09 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 Never mind that multiplication doesn't quite work that way. 08:21:11 fizzie, X_X 08:22:39 * elliott awards the friendliest channel on freenode award to #esoteric. 08:22:46 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 It's "freenode". 08:23:39 i'll second shachaf's nomination 08:23:49 shachaf is friendlier than me because he hasn't quit #haskell yet 08:24:18 kmc: Surely if that's the metric, Cale has to win it a few billion times over. 08:24:22 elliott: The first result on http://www.google.com/search?sourceid=NORWAYNORWAYNORWAY&q=freenode seems to disagree. 08:24:37 sourceid=NORWAYNORWAYNORWAY 08:24:38 Yes, I think I'll step down in favour of Cale. 08:24:40 It's spelled wrong in Norway. 08:24:53 shachaf: Anyway, "Freenode" isn't the title of that webpage. 08:24:57 http://www.google.com/search?targetid=NORWAYNORWAYNORWAY&q=freenode 08:24:58 It's what Google thinks the site is called. 08:25:01 elliott: I know. 08:25:05 08:25:05 <elliott> About the Network 08:25:05 <elliott> 08:25:05 Are you calling Google wrong? 08:25:24 title="freenode, a service of Peer-Directed Projects Center" 08:25:24 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 elliott: No; it's "You've reached freenode, ..." 08:25:38 elliott: Wow, the people who run Freenode can't spell. 08:25:42 XChat calls it "FreeNode", which is just awful. 08:25:42 You need to bold it everywhere. 08:25:49 fizzie: It's also greyish blue. 08:25:53 That, too. 08:25:57 fizzie: And serif. 08:26:25 i spent my winter on the edge of a nervous breakdown while living in norway 08:26:28 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 http://nhandler.wordpress.com/2010/02/24/it-is-freenode/ 08:26:45 shachaf, asking for clarification just isn't the #haskell way 08:26:51 shachaf: This is why you need rep to motivate you! 08:26:53 you should make a wild guess about the intent of the question asker 08:27:00 and then write a treatise on that subject 08:27:17 howd o i make web with haskell in osx/linux/wine 08:27:21 help 08:27:25 how do web????? 08:27:30 how do i shot web 08:27:31 i;m vc 08:27:34 big startup moneys 08:27:36 web in haskel 08:27:42 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 yeah 08:28:37 Hey guys! I don't like #haskell! Let's talk about that! 08:28:41 What's a polite way of saying "we don't like your kind here"? 08:28:57 shachaf: "Your support contract has expired." 08:28:59 Where "your kind" is often a euphemism for "you". And "we" is a euphemism for "I". 08:29:06 don't euphemize 08:29:12 use "you" and "I", seriously 08:29:14 "Please sign up for a paid support plan if you wish to continue your support contract." 08:29:20 elliott, I'm working on a blog post about what annoys me about #haskell 08:29:34 kmc: That sounds really productive. 08:29:35 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 probably the way for me to be less annoyed is mostly me changing not #haskell changing 08:30:07 elliott, sarcasm? 08:30:17 kmc: Maybe! 08:30:24 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 i'd like at least one cite-able data point against "#haskell is wonderful and friendly and perfect" 08:31:19 i don't really expect it to change 08:31:27 but what else should i do 08:31:41 it's as much a reminder to me about the behaviors i should avoid 08:31:49 as an attempt to change others 08:32:01 if i complain about something publicly then i'm less likely to do it, for fear of being called a hypocrite 08:32:20 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 I have. 08:32:45 ok 08:32:48 maybe i'm just out of date 08:33:10 * elliott might just block it out. 08:33:23 I mean, I've avoided #haskell for a while now. 08:33:29 why do you avoid? 08:34:09 Because it sucks? 08:34:21 Also, nobody ever answers my questions :P 08:34:24 can u be more specific 08:34:37 seriously, I'd like to understand the problem 08:34:42 elliott: That's because you never ask "how do i typeclass". 08:34:55 so i can write about it, and so i can do better personally if/when I return 08:36:35 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 teresting to answer, nothing interesting to talk about, and no way to get decent help for non-trivial problems. 08:37:09 "the rubbish" being conflicting explanations, arguing about how to explain things, etc? 08:37:17 #haskell-in-depth? 08:37:23 nobody ever talks there ever 08:37:39 What kmc said :P 08:37:44 i'm still in that channel and I'd be glad if it got some good traffic 08:37:49 I'm not sure a single question was ever asked in #haskell-in-depth. 08:38:04 kmc: Yes; also the jokes that inevitably follow e.g. anyone asking about monads are getting very old. 08:38:22 basically i'd be happy if it was 20% the size of #haskell instead of 5% 08:38:40 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 Usually in an attempt to get working by trial-and-error. 08:39:01 That just falls under "noise", though. 08:39:07 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 kmc helped me see the light on that. 08:39:44 In fact after some of kmc's rants I just started disliking inside jokes a lot more. 08:39:46 the problem is that dealing with the monopolizers entails being un-"friendly" 08:39:53 On a theoretical level if nothing else. 08:39:59 shachaf, when I start a cult you can be my lieutenant 08:40:03 I still make them when they come up because, like, maybe #haskell will implode if it reaches critical mass of terrible. 08:40:29 haha 08:40:29 elliott you're like all those neocons who were secret trotskyites 08:40:29 Yes! 08:40:29 trying to ruin the USA so the workers would revolt against the capitalist system 08:40:30 Inside jokes are fine if a) everybody present understands them and b) they're funny. 08:40:31 kmc: Yes, yes, I get the point. 08:40:42 Deewiant: Not if they're only funny by virtue of being inside. 08:40:47 Unfortunately usually both a) and b) are violated. 08:40:59 the inside jokes in #haskell are a way of establishing that you're In The Know about monads 08:41:02 shachaf: That probably means they're not funny. 08:41:07 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 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 thanks for elaborating 08:42:50 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 *three things 08:42:56 2=3 and all that. 08:43:07 i think we're broadly in agreement 08:43:17 i have a couple of other gripes too 08:43:22 it's kinda like all the inside jokes stoners make about pot 08:43:22 i don't know if they're real or just something i'm imagining 08:43:24 MONADS ARE LIKE POT 08:43:31 "blog posts and my SO answers" 08:43:34 * elliott has done it, he's the worst person, everybody go home. 08:43:36 monads are like pot, once you get in you can't get out 08:43:37 right 08:43:39 shachaf: EXACTLY. 08:43:42 that's a totally accurate statement about both right 08:43:43 Isn't the Haskell wikibook decent? 08:44:00 Deewiant: It's just another tutorial for the most part, I think. Its explanation of zippers is excellent, though. 08:44:08 Deewiant: When I tried to read it it was pretty horrible. 08:44:09 Deewiant: Also I think it has one of the famously bad monad analogies. 08:44:18 That was back in the "monads as spacesuits" era, though. 08:44:29 No, "monads as nuclear waste containers" was its phrasing. 08:44:54 Ah, Apfelmus wrote most of the Haskell wikibook zipper stuff. 08:45:51 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 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 yeah 08:46:10 i'm a little disappointed that my haskellwiki FAQ hasn't caught on 08:46:16 i mean, it's not that great 08:46:18 Is that the one on the page [[FAQ]]? 08:46:24 but people (besides shachaf) have no interest in linking it or improving it 08:46:26 yeah 08:46:28 I've linked people to it. 08:46:33 ok, cool 08:46:38 http://www.haskell.org/haskellwiki/FAQ 08:46:40 I think I've seen other non-shachaf people link to it for the existential antipattern stuff. 08:46:44 cool 08:46:48 kmc: I think those two complaints are more broad than IRC, anyway. 08:46:52 "non-shachaf people" 08:46:53 i did a quick logsearch recently to see if my claims were holding 08:47:17 and i don't want to be all petulant about "you're not using my wonderful wiki page" 08:47:22 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 i mean if people extensively rewrote all the answers and linked to them, that would be cool too 08:47:37 elliott, it's not about attacking the language 08:47:40 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 kmc: Oh, I know. 08:47:56 kmc: I'm just saying that it's easy to mistake legitimate complaints from just another troll attack on the language. 08:48:00 right 08:48:14 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 I tend to just ignore people criticising Haskell because it's almost always the latter. 08:48:38 haskell experts criticize haskell too, and they should not be ignored 08:48:45 I agree. 08:48:53 there's less of that though 08:49:34 * elliott tries something. 08:51:25 ? 08:51:37 Shh. I'm doing science. 08:51:48 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 are you doing human experimentation on #haskell 08:53:19 How...dare you! The very idea! Yes. 08:53:37 elliott: You can't fool me with your lower-case pronouns! 08:58:24 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 It could be better, but it could be worse. 08:58:43 Java interop I would be less optimistic about getting good answers to. 08:58:51 Of course, it's very dependent on who is active at any given time... 09:00:17 RIP dajfsa 2012-2012 09:00:21 haha 09:00:25 u devious elliott 09:00:26 "We exploited you" 09:01:16 12:00 < qqMuppetpp> dajfsa: if you're just doing it for learning purposes, go with Parsec 09:01:33 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 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 "the haskell way is always the better way" 09:02:16 the problem is, the haskell way really is often the better way 09:02:21 people generalize from that 09:02:54 I think parser combinators _are_ usually better than regexps, or at least something like them is. 09:03:06 maybe 09:03:26 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 yeah 09:04:02 it seems like often the Right Way to do something was just discovered in a paper published this year 09:04:16 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 elliott: The Committee is not addressing lazy programmers. 09:05:02 But the regexp libraries seem OK, so dissuading people too heavily off them is silly. 09:05:06 fizzie: Yes. 09:05:16 the regexp libraries that use the awful typeclass interface are not OK 09:05:51 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 *do regexps 09:06:12 " 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 The typeclass thing is horrible, but lots of things are horrible and they still work. 09:06:19 these are the kind of anecdotes i really distrust 09:06:31 confirmation bias 09:07:03 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 yeah 09:07:21 Is that a bad thing? 09:07:22 well it's right and proper for it to be a contentious issue 09:07:25 because the status quo sucks 09:07:46 Deewiant: In the context of #haskell, yes, because it's obvious that nobody is going to change their opinions on regexp 09:07:51 i don't know 09:07:58 And there doesn't actually seem to be any substantial concrete disagreement at all 09:07:59 i think i've changed various opinions based on things i've heard in #haskell 09:08:09 apparently i've changed shachaf's opinion about some things 09:08:30 i think we need more consensus about the solutions to various common problems 09:08:35 and discussion is important for that 09:08:47 but there's a line somewhere between that and endless bickering where nobody is willing to change 09:08:49 (=~) :: (RegexMaker Regex CompOption ExecOption source, RegexContext Regex source1 target) => source1 -> source -> target 09:08:51 What a good type. 09:08:54 yep 09:09:20 Wouldn't 09:09:23 class FunctionLike argument result where f :: argument -> result 09:09:24 class Match a where (=~) :: a 09:09:25 be simpler? 09:09:30 :D 09:09:34 I'm not even kidding. 09:09:44 instance (MatchResult r) => Match (String -> r) where ... 09:12:08 kmc: Did you know unsafePerformIO isn't actually in Haskell 2010? 09:12:10 I was shocked. 09:12:11 yeah 09:12:16 it's unsafeLocalState or whatever 09:12:31 discussion in GHC mailing lists of implementing that with unsafeDupablePerformIO 09:12:34 00:27:12 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 00:27:57 (by "similar" I meant "provides an usable superset") 09:12:40 shachaf: Mention regex-applicative already! 09:12:42 I can't take it any more! 09:13:13 kmc: The nice thing is that it's deprecated by design. 09:13:24 There's a note saying "Expect this to go away in the future!!!". 09:13:38 which? 09:13:42 unsafeLocalState. 09:13:46 lulz 09:13:54 What's unsafeLocalState? 09:13:58 it will go away once functional programming dominates the world 09:14:03 and we no longer need to interface to C libraries 09:14:06 shachaf: unsafePerformIOButYou'reNotAllowedToUseMoreThanAFewFunctionsInIt 09:14:13 kmc: Well, I think it means "replaced with something less ridiculous". 09:14:48 I don't see it in the Report. 09:14:56 shachaf: Look harder. 09:15:00 in Foreign 09:15:01 It's in Foreign. 09:15:04 Somewhere. 09:15:16 shachaf: MENTION REGEX-APPLICATIVE!!!!!!! 09:15:32 * elliott wonders how much longer MUFFIN_'s continued presence in #haskell will last. 09:15:39 Oh, the Report goes past section 12. 09:15:57 what's a MUFFIN_ 09:16:33 kmc: A troll. 09:17:03 i don't see anything in the past few days 09:17:26 http://tunes.org/~nef/logs/haskell/12.01.11. I'm logstalking! 09:17:35 Which is how I know shachaf STILL HASN'T MENTIONED REGEX-APPLICATIVE. 09:17:41 * elliott cries. 09:18:09 haha 09:18:56 kmc: You mock my pain. 09:19:10 Hey, you can implement unsafePerformIO with the FFI. 09:19:13 foreign export ccall foo :: Int -> IO Double 09:19:13 foreign import ccall "foo" bar :: Int -> Double 09:19:38 :D 09:19:46 Is that legal? 09:19:49 Works in my GHC. 09:19:55 I don't know what that means. 09:20:01 haskell is the same as ghc 09:20:02 But, I mean, presumably it's exporting a symbol. 09:20:03 so you're fine 09:20:16 only smug beardos care about the spec 09:20:33 #haskell jokes are rapidly becoming monad tutorial jokes. 09:20:33 Is a beardo like a typo? 09:21:02 I don't actually understand the FFI. 09:21:18 Is the whole "you give it a type and it makes it work" thing just magic? 09:21:24 define "magic" 09:21:31 Well, I suppose it's well-defined in the report. 09:21:35 shachaf: There's a table of Haskell<->C type conversions. 09:21:37 In the report. 09:21:58 OK, not magic. 09:22:20 Just weird. 09:22:26 By the way, does anyone know the answer to this: Monad : ArrowApply :: ? : Arrow 09:22:46 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 probably there is none 09:23:00 Presumably with a subclass that brings it to Monad. 09:23:07 kmc: That seems bizarre. 09:23:13 i'm pretty drunk though 09:23:17 I don't mean one in a library though. 09:23:25 I just mean, what is it? 09:23:57 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 'night shachaf 09:27:40 godspeed you! black emperor 09:28:43 kmc: Is "night" not a complete word? 09:28:55 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 `welcome ais523 09:39:35 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 `? @ elliott welcome 09:43:29 ​@ elliott welcome? ¯\(°_o)/¯ 09:43:30 err 09:43:35 `@ elliott ? welcome 09:43:38 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 the wendy's near my house closed :( 09:45:34 what is a wendy's 09:45:48 and what do you mean by "near"? running distance? walking distance? 09:47:08 Some sort of a restaurant chain, isn't it? Burgers or something. 09:47:11 elliott: I've actually had esolang thoughts in 2012 09:47:21 came up with a new esolang while failing to sleep last night, I think 09:47:37 it's vaguely inspired by both Anarchy and My Name Is Johny, What The F**K??? 09:49:43 and it's an attempt to make the most powerful language I can in which all programs always halt 09:49:56 (and that's computable to determine whether a program is written in the language or not) 09:50:52 When a web hosting company is offering $6.95 hosting plan does this mean that you have to pay $6.95? 09:54:00 it means they will host six dollars and ninety-five cents for you 09:54:02 free of charge 09:54:20 someone tell me about My Name Is Johny, What The F**K 09:54:31 It means they will tell you of their plan to host $6.95, free of charge 09:54:44 back 09:54:58 and it's an attempt to make the most powerful language I can in which all programs always halt 09:55:03 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 ais523: I somewhat doubt you'll beat the proof assistants. 09:55:11 Also, what? 09:55:17 I don't remember Johny being that. 09:55:24 hmm, really? 09:55:28 I parsed it so that if you pay $6.95, they'll graciously tell you about their hosting plans. 09:55:29 Although Johny has been about fifteen languages in search of a name. 09:55:49 I thought you had explicit destroy-data primitives that proved that the data being destroyed could still be reconstructed 09:56:02 at least, you've only told us about one of the fifteen 09:56:21 ais523: No, there was also the 2D ones. 09:56:30 well, you've only told /me/ about one of them 09:56:35 No. 09:56:39 You just don't remember the other ones. 09:56:44 you've only told me about one of them when I was paying attention? 09:56:51 Or you forgot. 10:04:40 elliott: oh, I was going on a different principle altogether than the proof assistants 10:04:43 so, hmm 10:05:11 elliott: oh, by the way, new BN dynasty, I'm running it 10:11:05 ais523: Well, the proof assistants' advantage is that they've got significantly more power than any one given rule. 10:11:39 elliott: what I mean was, I wasn't trying to compete with what they were doing 10:12:37 It was just a responset o "make the most powerful language I can in which all programs always halt". 10:12:42 *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 elliott, kallisti update (potentially quite a while ago, but I just saw it now) 10:56:11 Hmm, 5 hours ago I guess 10:57:05 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 [11:44] Stop forgetting about left identity. 11:50:31 [11:45] no it doesn't; f can only possibly have the type x -> () 11:50:31 [11:45] so without _|_, there's only one possible value for f 11:50:58 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 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 @tell ais523 Stop forgetting about left identity. Oh, no. OK, fine, it's a monad. 12:11:21 Consider it noted. 12:15:31 * Sgeo ponders the best way to initialize an IntMap of MVar () 12:17:18 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 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 unsafeInterleaveIO 12:19:03 But a full IntMap will be huge. 12:19:29 At least assuming IntMap is spline-strict, which I rather suspect it is. 12:22:05 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 The thing is, I do for these purposes know how many and which locks I need, but if I didn't... 12:25:02 I guess for Integer, I could make a function instead of a physical map 12:25:14 Wait, I'd still need memoization 12:25:50 -!- FireFly has left ("→"). 12:27:22 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 *confused than 12:32:35 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 like going to a nissan dealership and discussing subaru? 13:13:35 -!- Phantom_Hoover has joined. 13:14:14 @messages? 13:14:14 Phantom_Hoover: You have 1 new message. '/msg lambdabot @messages' to read it. 13:15:12 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 Phantom_Hoover is a true scientist. 13:16:32 * elliott graphs price of tea in China v. hoovers phantommed. 13:23:32 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 Sgeo: Err, I'm not sure you understand how locks work? 13:24:54 Getting a bunch of locks in succession should not be any less safe than getting them all atomically, they're /locks/. 13:25:37 elliott, unless I accidentally get locks in different orders from what I want to 13:25:45 Erm, in different orders in different places 13:25:54 I doubt that would happen, but still 13:26:08 Sgeo: I'm rapidly becoming sure you don't understand how locks work 13:26:13 *work. 13:26:29 Suppose one thread tries to lock A, then B. A second thread tries to lock B, then A 13:27:17 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 just put a lock around locking a and b 13:28:45 Sgeo: If two locks are required for one thing and are taken together, shouldn't they be one lock? 13:29:33 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 etc 13:30:10 Sgeo: This is the part where I return to hypothesis A, you're doing something badly. 13:30:40 I may be designing around a scenario in the AW SDK that may or may not actually be present 13:30:41 Sgeo: Anyway, STM doesn't magically get rid of contention. 13:30:45 This conversation seems deadlocked. 13:31:08 Jafet: Welcome to #esoteric! 13:31:12 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 wow that link was quite big 13:31:35 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 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 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 Ooh, Valgrind proves K&R are idiots. 13:42:18 Also apparently the book is called "K&R C"? 13:45:44 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 h and can't see them either. 13:48:02 Were you talking about that "Deconstructing K&R" thing? 13:48:53 fizzie: Yes, but it's actually 'Deconstructing "K&R C"' for some unfathomable reason. 13:49:00 Also why did you read it, I'm the only person stupid enough to subject myself to Zed Shaw. 13:49:34 [[ 13:49:34 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 [...] 13:49:34 3.A very long response that suggested syslog. 13:49:36 [...] 13:49:38 ]] 13:49:43 syslog, the best place to put --help output. 13:49:49 *3. A 13:50:02 What did M. Echeverri suggest? 13:50:29 "#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 Sgeo: http://blog.plover.com/Unix/usage.html 13:51:49 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 fizzie: You read ##c? 13:53:36 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 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 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 That's the bestestworst idea for a programming book ever. 13:54:59 For example, currently there's "discussion" on why "double d = 10; printf("%d",d);" is not printing out "10". 13:55:20 fizzie: You forgot the quotes. 13:55:28 printf("\"%d\"", d); 13:55:29 HTH 13:55:53 Well done. 14:07:45 Is there any reason not to use TMVars? 14:12:12 Teenage Mutant Variables? 14:15:34 I wish political cartoons had never moved beyond the "label everything so there's no chance you make any metaphors" stage. 14:16:14 Phantom_Hoover: They have? 14:16:18 -!- myndzi has quit (Read error: Connection reset by peer). 14:17:54 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 waitForEvent :: (a -> Bool) -> TChan a -> STM a 14:32:35 This function is pretty much exactly what I was looking for for something 14:32:39 And would have written it myself 14:32:48 Does this make it worth using a TChan instead of a Chan? 14:34:10 Sgeo: Why are you writing things to the Chan if you've going to discard them? 14:34:12 Wait, this function might be wrong. 14:34:19 Note that TChans are very different from Chans. 14:34:43 elliott, my wrapper will be writing to a chan, users will be reading from 14:35:06 Why are you exposing a Chan? 14:35:17 Do you want to let Your Users(tm) write to it, too? 14:35:34 No, but if they do, nothing should break 14:35:44 Why do you want to let them write to it? 14:35:51 I mean, you just said you don't. 14:35:56 So why do you care about what breaks? 14:35:58 You're not making any sense. 14:38:26 I guess I should just the IO for reading 14:38:35 Yes, just the IO for reading. 14:38:58 And the IO to close the thing 14:39:20 Wondering if I should use ResourceT 14:40:11 Programming goes better with complete sentences. 14:40:38 Control.Monad.Loops.iterateUntil does what I want, I think 14:40:44 Assuming I just expose the IO to read 14:41:37 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 I guess it's a label for the loop 14:43:09 Sgeo: It's not. 14:43:16 go has two fewer parameters than iterateUntil. 14:44:53 I guess that .. saves computation? 14:45:51 Sgeo: What do you think parameters are passed on? (It's not the aether.) 14:46:33 It looks like a tail call 14:46:40 Either wy 14:46:41 *way 14:47:02 (>>) is in tail position there, not go, not that it's at all relevant. 14:51:05 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 ...or, this case is a bit pathological 14:53:22 * elliott decides not to click. 14:54:52 _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 Phantom_Hoover: i doubt the value of political satire etc 14:57:20 i guess its good to keep people reminded that politicians are not what their marketed image suggests 14:58:17 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 once :: IO (IO a, IO ()) -> IO a 15:25:17 Come to think of it, there's no particular reason that once's argument needs to be in IO 15:25:32 But it does make it slightly easier to use over once =<< whatever 15:32:51 I have no idea what that is meant to do. 15:33:21 Performs the read once, then closes 15:34:40 um... once m = m >>= \(a,b) -> a <* b? 15:35:01 :t (<*) 15:35:02 forall (f :: * -> *) a b. (Applicative f) => f a -> f b -> f a 15:35:20 I'll probably forget that when it's time to implement it, but it's easy enough to write anyway 15:35:40 Although I'd probably end up using do notation 15:36:15 Are you saying that's seriously what it is? 15:36:15 @src (<*) 15:36:16 (<*) = liftA2 const 15:36:26 Because if it is, that type is the most stupid possible way to express it. 15:36:45 Hmm? 15:37:37 Hmm what? 15:37:48 How is it the most stupid possible way to express it? 15:38:04 Because your type looks like 15:38:09 once :: IO (IO a, IO ()) -> IO a 15:38:10 instead of 15:38:12 once :: (Applicative f) => f a -> f b -> f a 15:38:19 and also the word "once" is irrelevant. 15:38:41 It's relevent to what I imagine typical usage would be in applications using my wrapper 15:39:42 If something of that type and semantics is common, your wrapper suck. 15:39:43 s. 15:42:01 :/ 15:53:29 -!- cheater_ has joined. 15:57:33 i wonder, are there imacs with touch screens ? 15:57:44 i could use an older one, as a sort of youtube based ipod 15:57:47 kinda thing. 15:58:04 i'd totally google but i'm web-disabled for the next hour. 15:58:14 http://en.wikipedia.org/wiki/Escitalopram 15:58:16 that is also the wrong channel. 15:58:25 oh hi Phantom_Hoover. 15:58:27 Wow, a drug which is literally the mirror image of another drug by the same company. 15:58:36 cheater_, fuck off. 15:58:47 Phantom_Hoover, fuck ON! 15:59:38 Wow, a drug which is literally the mirror image of another drug by the same company. 15:59:44 Phantom_Hoover: What a scummy cost-cutting tactic! 15:59:54 Wait, I was joking. 16:00:03 But apparently people are actually saying that so maybe it's actually true. 16:00:40 Soon they're going to start selling versions with green nitrogen blobs instead of those blue ones seen there. 16:00:42 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 fizzie, no, you fool! 16:01:42 Phantom_Hoover: Well, there's only a limited number of parts they can twiddle! 16:01:51 fizzie, green blobs are chlorine! 16:01:51 HAVE SOME EMPATHY. 16:02:24 Phantom_Hoover: Stick some paint on it, any blob can be anything. 16:02:53 fizzie: "Ingredients: Blue paint (98%), ..." 16:04:38 fizzie, wait, we can turn lead into gold by painting it yellow! 16:05:22 You didn't know? 16:05:54 elliott, we're talking about sophisticated atomic painting here, not the shoddy work that fools you English idiots. 16:06:10 I mean, the paintbrushes would have to be really, really small. 16:08:54 Phantom_Hoover: dude, we use atomic paintbrushes in England. 16:09:24 No, those are molecular paintbrushes. 16:11:51 Phantom_Hoover: Um have you ever even SEEN England? 16:12:05 Yes. 16:12:52 Phantom_Hoover: No, you've seen the fake one we show to keep Scots complacent. 16:14:22 elliott, ha ha ha, you actually think we were fooled by that? 16:16:45 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 itidus21: For sufficiently wrong definitions of "identical". 16:17:54 if they could only get away with that then the third world would never see any medicine ever 16:17:55 elliott, it is identical. 16:18:35 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 ok i see the hole in my logic 16:19:05 Phantom_Hoover: but they can't retain their old patent in this way though right? 16:19:24 itidus21, sure they can, but patents expire. 16:19:29 a new patent surely doesn't empower them to keep an old patent 16:19:36 ...yes? 16:19:44 As far as the patent office are concerned, it's a new drug. 16:19:57 but 16:19:59 It just happens to have exactly the same structure, but mirrored. 16:20:06 uhmm 16:20:25 if people just make the drugs on the basis of the old drug then its ok right? 16:20:38 Huh? 16:20:57 Oh wow, it's even better than that. 16:21:15 you're doing logic with me.. so since im not that smart this may hurt 16:21:35 but i would invest 5 hours to express what i am trying to express if necessary 16:21:40 Citalopram is actually half-and-half escitalopram and its mirror; it's not a new drug at all. 16:21:54 so.. an analogy is necessary here 16:23:29 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 without a patent 16:24:02 ^when the patent for drug A expires 16:24:23 even though A and B are (arguably) identical 16:25:17 Oh, I do want an operation other than readChan: tryGetChan. Although I don't think I saw such a function :( 16:25:44 i suppose i should define copying 16:26:10 copying = selling 16:27:20 elliott, it is identical. 16:27:21 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 Phantom_Hoover: I reserve the word "identical" for things that don't have two separate images distinguishing them. 16:28:02 i don't see what the problem is so long as the original is in the public domain 16:28:06 :P 16:28:25 maybe i do.. maybe i do 16:28:35 hummm 16:28:41 Sgeo: If you want tryGetChan, you're doing something wrong. 16:29:04 this is all normal for the system 16:29:26 elliott, huh? 16:29:53 i guess the problem is that they continue to refer to patents as patents 16:29:58 Sgeo: I think I need a policy of not responding to lines that have no possible response, like "huh?". 16:30:03 time to look into the etymology 16:30:09 Why is it wrong to want tryGetChan? 16:30:54 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 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 Seeing if something has occured yet, and if not, doing something else 16:31:27 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 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 Sgeo: Sounds like a Do It Yourself Race Condition In Ten Steps opportunity. 16:32:26 copyright: "the right to make or sell copies," 1735, from copy + right. 16:32:52 Sgeo: That idea is perfectly sound; your implementation sounds completely broken. 16:33:28 elliott, it's more me trying to figure out how users will use this 16:33:51 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 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 Sgeo: No, your implementation itself sounds broken too. 16:35:56 so has everyone switched over to C++11 yet? 16:36:14 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 Maybe a structure representing the entire possible state, and converting these smaller things to that 16:36:58 use an Either 16:36:58 Each of the fields in the larger things being a Maybe 16:37:33 kallisti, when a user wants a lot of event data pouring into one chan, that could get unwieldy 16:37:54 The user the user the user the user. 16:38:00 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 seems natural 16:38:32 kallisti, fine, imagine I said two or more 16:38:41 ah okay. 16:39:04 Either A (Either B (Either C D) ) 16:39:07 should be good 16:39:09 :) 16:39:52 or you could use tuples or something... 16:40:02 (Maybe a, Maybe b, Maybe c) loooooool 16:40:14 Haskell needs "Either tuples" 16:40:38 kallisti: a :+: b :+: c 16:40:44 OK, fine, I'll take the bait: 16:40:47 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 :t (:+:) 16:40:53 Not in scope: data constructor `:+:' 16:40:56 Are these actual global state, or the equivalent of event params? 16:40:58 @hoogle (:+:) 16:40:59 No results found 16:41:03 kallisti: ITT: :t is not :k 16:41:25 ITT: elliott anticipates I will magically distinguish type names from data constructors given no context 16:41:33 Either A (Either B (Either C D) ) 16:41:36 Haskell needs "Either tuples" 16:41:43 If it was a :+: b :+: c as a value, it would not be Either. 16:42:00 oh, indeed. 16:42:19 still the value-level syntax will be clunky with the Lefts and Rights 16:42:21 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 here comes "define your own interface" 16:42:43 elliott, what do you mean by the equivalent of event params? 16:42:47 kallisti: You can fix that with a horrible typeclass hack. 16:42:56 oh good 16:43:00 Sgeo: I don't know; I don't know anything about AW. 16:43:06 It depends on the circumstances, I think. Some are the equiv of event params, some are global state 16:43:11 Sgeo: Event params would be like "position mouse was clicked on" in a mouse click event. 16:43:15 Sgeo: so Either + typeclass hacks you'll be good 16:43:18 Global state would be "current mouse position". 16:43:26 Event param would be "user invoking this request". 16:43:32 Global state would be "list of online users". 16:43:44 elliott, some are one, some are the other 16:43:57 Sgeo: Do you know the list of relevant params for each given event? 16:44:10 Params-as-global-state, that is. 16:44:16 elliott, can copy-paste from the wiki for that 16:44:28 I really don't see where on earth a bunch of Chans comes in. 16:44:58 Instead of event handlers, sending the data from each event to the user 16:44:59 Sgeo Chan Combinator Library SCCL 16:45:45 Sgeo: What's wrong with event handlers? 16:45:49 If you have 16:45:58 installEventHandler :: (Event e) => (e -> IO ()) -> IO () 16:46:01 you can easily write 16:46:05 waitForEvent :: (Event e) => IO e 16:46:06 on top of it. 16:46:08 actually channel combinators that produce channels of tuples would be Arrow 16:46:30 is there something like "Arrow for Either"? 16:46:32 Specifically 16:46:35 kallisti: ArrowChoice 16:46:45 elliott, but then if I repeatly waitForEvent, I lose events 16:46:47 I think 16:46:48 waitForEvent = do { v <- newEmptyMVar; installEventHandler (putMVar v); takeMVar v } 16:47:04 I need to be able to uninstall event handlers too 16:47:04 Sgeo: There is no possible way you can lose events with ^ if installEventHandler does what it's supposed to. 16:47:11 installEventHandler :: (Event e) => (e -> IO ()) -> IO (IO ()) 16:47:16 Returned IO action deregisters events. 16:47:20 This is the AddHandler type of reactive-banana. 16:47:32 As in, deregisters the installed handler. 16:47:32 So: 16:47:46 waitForEvent = do { v <- newEmptyMVar; uninstall <- installEventHandler (putMVar v); r <- takeMVar v; uninstall; return r } 16:47:58 The uninstall isn't needed there; the event handler will just block in future. 16:48:00 I think someone in #haskell pushed the idea of not preferring event handling on me 16:48:13 Of course, if you're interpreting "install" as "replace", then it can drop events. 16:48:17 Hopefully you're not doing that. 16:48:51 Sgeo: I certainly argued that a full blocking interface is often preferable, but you can't do that automatically. 16:48:57 The SDK does, but I'm planning on abstracting over that 16:49:01 You have to build it manually based on domain-specific knowledge. 16:50:16 "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 elliott: I think Arrow would be a good choice for some signal processing algorithms 16:51:20 elliott, please stop writing code for me, it does bother me 16:51:34 kallisti: "Arrow would be a good choice" --people who haven't yet tried to apply arrows to a problem 16:51:37 as some are naturally expressed as dataflow diagrams, which Arrow represents pretty well. 16:51:42 No it doesn't. 16:51:46 Sgeo: Sorry, in the future I'll make sure to only write code for things you've never thought about. 16:51:51 Sgeo: I might need a queriable database. 16:52:51 I'm not sure if anyone can tell, but I'm super grouchy today!! 16:53:06 kallisti: Arrow would be better if you could use actual flow diagrams with it, really. 16:53:17 As it is you have the choice between unreadable combinator code and ugly imperative proc notation. 16:53:22 Also, the tuples suck big-time. 16:53:35 Arrowised FRP was in vogue for a while but it's not that popular any more for exactly these reasons. 16:53:52 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 elliott: I think if you had some decent syntax for it, it wouldn't so cumbersome 16:57:45 for example a hetereogenous list syntax that's equivalent to linked tuples. 16:58:01 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 That's what I meant by dropping events 16:58:29 Sgeo: Are you saying, "unhandled events are not handled"? 16:58:35 Yes, that is true. 16:59:02 elliott: but a graphical tool to generate arrow code would be interesting 16:59:04 You can always maintain a backlog of events for those with no handlers. 16:59:31 elliott, what, with hidden event handlers? 16:59:35 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 But then the bot will be constantly sent information that it might not need. 16:59:47 Sgeo: What? 16:59:58 kallisti: Besides, being unable to use currying is gross. 17:00:05 Arrows just aren't very Haskelly. 17:02:55 elliott: have you seen http://www.grame.fr/Ressources/pub/faust-chapter.pdf 17:03:04 it would appear arrows are very Fausty. 17:03:15 elliott, I guess I could make the installEventHandler more primitive than something Chan-based 17:03:54 I'm not sure how you would represent the _ syntax in Faust, which basically stands for "an input" 17:04:02 I guess with regular function arguments... 17:04:45 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 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 I still don't see what 17:07:00 what's so terrible about the Chan thing 17:07:26 Although I guess if adding a handler is a common case, it might be a bit inefficient 17:07:49 kallisti: _ is id. 17:08:05 ah 17:08:51 kallisti: Lame how that Faust thing explicitly exposes the sample-rate by giving a one-sample delay. 17:09:12 how would you do a delay with continuous functions? 17:09:13 But continuous time for signal processing seems to be an innovation restricted to FRP circles... 17:09:17 (from my incredibly biased sample set) 17:09:22 kallisti: A delay of what? 17:09:26 There's no smallest real number. 17:09:37 so you have to perform delay in discrete signals... right? 17:10:35 kallisti: This is like how, in real life, since time is continuous, you can't put something off for 5 minutes. 17:10:48 You have to jump into a computer and become discrete and wait 5 units of time. 17:10:49 lol 17:11:00 Therefore your deduction makes complete sense. 17:11:47 so I don't understand. what's wrong with delay f d t = f (t - d t) 17:12:34 That's a very strange definition. 17:12:45 delay t a b = \s -> if s < t then a s else b s 17:12:48 makes more sense. 17:13:10 And the answer is nothing; but that's not a one-sample delay, which is what I was complaining about. 17:13:15 It's independent of sample-rate. 17:13:20 :t mfix 17:13:21 forall a (m :: * -> *). (MonadFix m) => (a -> m a) -> m a 17:13:21 oh I thought you were complaining about the delay operator. 17:13:27 which is that. 17:13:51 elliott: I don't really understand what your function is supposed to do. 17:14:17 kallisti: delay 0.1s (pure 42) b is 42 for 0.1s and b thereafter 17:14:28 delay f d produces the signal f but delayed by the function d. 17:14:44 Yes, thank you, I'm not an idiot. 17:14:53 how is your delay a... delay? 17:14:56 The problem with that definition is that you can define pathological ds. 17:15:08 You have to keep the entire history of f around to make that thing work, which is a time leak. 17:15:52 kallisti: oh, I fucked it up 17:16:26 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 yep. 17:16:52 too much words, not enough programs. 17:16:53 * elliott terminates this discussion. 17:17:06 ok i can help 17:17:12 but I read it ages ago, if that counts! 17:17:14 with a random topic destroyer 17:17:24 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 i think it is a case of "of course, if you had infinite computing power" 17:18:15 elliott: well you could force the delay to be a constant value in order to make it more efficient 17:18:40 kallisti: Time leaks aren't just about "efficiency". 17:18:41 but the extent to which the rendering is dependant upon environmental factors could be very signifigant 17:18:50 A time leak means your program isn't properly streaming/real time. 17:18:56 as far as I know most delayed signals are delayed by a constant offset. 17:19:01 Which is, of course, crucial for signal processing. 17:19:20 Phantom_Hoover: You love biology, right? Then you'll love itidus21's question! 17:19:47 elliott: but would a constant offset fix this? 17:19:49 "* elliott terminates this discussion." i should have realized this was a bluff 17:19:51 hehe 17:19:58 hello 17:20:37 Phantom_Hoover: i really started to think about this question in the past in relation to video game characters 17:20:58 humm.. but only now am i making the full connection 17:21:05 video game characters with dna 17:21:07 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 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 elliott: yes I thought about that. 17:21:37 Jeans on the other hand... 17:21:40 Phantom_Hoover: and yet we read so much into them :P 17:21:53 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 They can still have a consistent influence. 17:22:12 delay d f g = \t -> if d < t then f t else g (t-d) 17:22:14 Phantom_Hoover: i wonder if that is because genes don't contain life itself 17:22:17 elliott: ah 17:22:26 that it is impossible to uhh.. derive life directly from information 17:22:33 itidus21, no, it's because the cell contains stuff which isn't directly coded for. 17:22:37 elliott: wait are you sure it's undefined? is negative time not allowed? :P 17:22:49 kallisti: Generally the signals you use with DSP start at a given time. 17:23:00 And so don't, in fact, stretch back to the beginning of time. 17:23:14 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 well... if they're continuous functions they would in most cases... 17:23:23 Of course the chances of the authors of this having heard of any of it is ~0. 17:23:30 kallisti: Um, no? 17:23:39 Phantom_Hoover: hm... but is there an order to that uncoded stuff? 17:23:41 > sin (-1) 17:23:43 -0.8414709848078965 17:23:46 ... 17:23:47 You're an idiot. 17:23:48 is perfectly valid, for example. 17:23:57 Also, "continuous" doesn't mean "with continuous domain". 17:24:21 what is an example of a function that breaks on a negative time value? 17:24:28 kallisti: an input signal?!?! 17:24:35 You know, what DSPs are used for? 17:24:36 itidus21, sure, it's the (highly ordered) cell machinery. 17:25:00 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 so what if i was to have a model with both cell machinery and the genetics of some lifeform 17:25:29 elliott: I think it would be better to just write another combinator that provides a value for negative times or something. 17:25:37 elliott: input signals would automatically have it applies to them. 17:25:40 0 is a good value... 17:25:43 for integers. 17:26:04 Phantom_Hoover: a curious thing here for me is whether cell machinery varies from species to species 17:26:15 elliott: so basically what you wrote but split up into two functions 17:26:16 'Duh'. 17:26:18 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 because if it does then it may be as unique as genetics 17:26:49 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 because you may want that behavior elsewhere. 17:27:05 without a delay. 17:27:11 which suggests that the emphasis on genetics as a buzz word these days is slightly misleading 17:27:45 can lead to a question of, am i human because of my genetics or my cell machinery 17:27:50 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 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 itidus21, since genetics are what are used to build that machinery, it's not a hugely meaningful distinction. 17:28:02 ohhh 17:28:25 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 and is that because life feeds on life? 17:28:57 `quote floored me 17:29:00 169) "Europe is the national anthem of the Republic of Kosovo." alise: I I was going to say something then your last line floored me 17:29:21 No, it's because life, by and large, tends to be produced by other life. 17:29:21 sorry phantom.. all my questions tend towards antagonism in their wording 17:29:36 elliott: I still think it would be a good idea to have both 17:29:42 and my delay is not partial unless its input is partial. 17:29:55 kallisti: (a) You have no idea what you're talking about. (b) See (a). 17:30:16 ? 17:30:26 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 elliott "good at conversation" hird 17:30:44 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 part of my view is that even if we could engineer life, i don't think we should 17:33:22 i mean like creating sentient beings which are not created from other sentient beings 17:33:23 sentient? ahh tough word ... just life 17:33:36 elliott: oh. homework: prove that delay sin is a partial function. I eagerly await your conclusion. 17:33:52 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 kallisti: Sorry, I only engage idiots when I'm feeling stupid. 17:34:17 -!- Nisstyre has quit (Ping timeout: 240 seconds). 17:34:29 elliott: and yet I am not wrong? 17:34:37 itidus21, what about when something which was not life turned into life of its own accord? 17:35:08 then thats fine with me :D 17:35:33 elliott: by your definition map is a partial function because you can pass it a partial function. 17:35:59 therefore: ban use of map 17:36:08 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 its pretty good 17:37:21 -!- Nisstyre has joined. 17:37:49 Nisstyre is fortunate to have been spared that. 17:39:55 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 Except for the bits we've computationally verified. 17:40:31 nah, it's all proven by naive set theory. 17:40:36 the views of the mathematician tend to be shaped by the mathematics 17:40:53 And the award for most vacuous statement goes to... 17:41:14 Phantom_Hoover: but computers are built by people too! 17:41:56 i wish i could more efficiently say the right things without mixing in the wrong things but 17:41:57 anyway 17:42:25 it is an inevitable result of specialization that everyone ends up developing thought patterns specialized for some lifestyle 17:42:43 itidus21: if you speak in this channel long enough people will force you to be exact. 17:42:55 so you're well on your way! 17:42:58 and different people looking at the same un-understandable thing, will inevitably see different thing 17:43:37 Except for the bits we've computationally verified. 17:43:48 Phantom_Hoover: But but but, humans made the computer proofsystems too!!!! 17:43:50 *proof systems 17:43:58 elliott: I know that's what I was saying! 17:43:59 !!! 17:43:59 the only regret is if you get lazy in your choice of lifestyle 17:44:01 WOE BE US, UNABLE TO DO ANYTHING BECAUSE OF COGNITIVE BIASES 17:44:20 itidus21: You say "the only regret" because it's "my only regret", right? 17:44:36 im making a prediction 17:45:08 elliott: I like how specifying a negative number in our delay functions produces a future value. 17:45:37 elliott: ok yes :P 17:45:48 elliott: and also breaks it for finite signals 17:45:57 kallisti: I object to this use of the term "our"; only I've presented a working delay function. 17:46:10 i hate the feeling of knowing that my mind tricked me for another day into doing nothing 17:46:19 clever mind that it is 17:46:23 yours is a conditional on top of my delay function, to assist dirty partial functions. 17:46:24 Damn you, mind! 17:46:28 Always tricking my brain! 17:46:46 kallisti: Please shut up. 17:46:55 elliott: that's not very nice. 17:47:03 Indeed. 17:47:06 -!- Klisz has quit (Read error: Operation timed out). 17:47:31 elliott: so you're just going to be a jerk without explaining yourself? it's a wonder you have any friends. 17:47:38 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 I do; they're considerably less annoying. 17:48:03 elliott: you have friends?!?!? 17:48:03 quintopia: You have 2 new messages. '/msg lambdabot @messages' to read them. 17:48:09 -!- Klisz has joined. 17:50:20 quintopia: On occasion! 17:52:43 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 kallisti: I really don't care. 17:55:29 oops 17:55:57 delay d f g = if' (d <) f (pureDelay (const d) g) 17:58:13 unfortunately booleans are not overloadable. :( 17:58:22 That's not what if' does. 17:58:26 I know 17:58:28 that's not if' if' 17:58:30 it's a different if' 17:59:17 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 actually instead of < I'd want something like... 18:06:28 " 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 class SigOrd s where { lt :: s a -> s a -> s Bool; gt :: ... } -- probably doesn't need to be a typeclass 18:08:04 fizzie: I think you might be exceeding the design limits. 18:08:23 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 THAT'S LIKE THREE EPISODES OF MY LITTLE PONY 18:13:07 elliott: http://www.haskell.org/haskellwiki/Package_versioning_policy do people actually follow this? 18:13:09 `addquote Two gigabytes is not really much to download. THAT'S LIKE THREE EPISODES OF MY LITTLE PONY 18:13:11 kallisti: Yes. 18:13:13 797) Two gigabytes is not really much to download. THAT'S LIKE THREE EPISODES OF MY LITTLE PONY 18:13:22 elliott: do people actually not follow this as well? 18:13:58 Most packages follow the PVP. 18:14:14 good. everything is as it should be. 18:15:14 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 No. 18:15:43 I wouldn't either. :P 18:15:45 I do. 18:16:21 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 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 hmm 18:23:52 if fourier transform only worked with positive frequencies 18:24:03 would it only be able to accurately preserve periodic functions? 18:25:13 -!- Sgeo has joined. 18:25:20 or are there combinations of phases that produce non-periodic results? 18:27:36 actually... 18:27:54 negative frequencies are equivalent to being "perfectly" out of phase 18:29:21 so... I guess fourier transform would only preserve periodic functions if it only represented natural coefficients (representing positive frequencies) . 18:29:23 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 hmm, what's that funny quote about causation causing correlation causing the correlation implies causation fallacy? 18:30:09 olsner: "causation causing correlation causing the correlation implies causation fallacy" -olsner 18:30:18 And if you flip it so that F(-x) = -conj(F(x)) you'll get a purely imaginary f(x). 18:30:25 elliott: no, not that one 18:30:32 fizzie: I meant if the fourier series was only positive real parts. 18:30:39 but now I mean only natural numbers. 18:30:55 istr it was more similar to "Causation causes correlation causes correlation causes causation." but that doesn't sound quite right either 18:32:00 `pastelog causation 18:32:13 fizzie: basically my question is: what subset of all possible Fourier series represents only periodic functions. 18:32:31 http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.25517 18:34:07 `pastelogs causation 18:34:20 http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.21658 18:34:21 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 oh nevermind.. 18:35:05 olsner: don't repaste, just wait a bit and refresh 18:35:11 -!- Sgeo has quit (Quit: Leaving). 18:35:18 olsner: wtf, causation has only been said that few times in here? 18:35:23 correlation correlating with causation is correlated with correlation causing causation, and thus causes correlation to cause causation 18:35:41 fizzie: hmmmm is the fourier transform still a time-varying signal? 18:36:56 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 elliott: didn't I misspell it the first time, since pastelog gave nothing and pastelogs gave me results? 18:37:36 fizzie: I'm basically confused as to how a fourier transform can represent a non-periodic signal. 18:38:20 olsner: the "error: not in manifest" thing is usually just a delay but i dunno what happened there 18:38:22 `cat bin/pastelog 18:38:25 ​#!/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 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 `run ls -l bin/pastelog 18:38:38 ​-rwxr-xr-x 1 5000 0 602 Jan 11 18:38 bin/pastelog 18:38:40 `run ls -l bin/pastelogs 18:38:43 ​-rwxr-xr-x 1 5000 0 602 Jan 11 18:38 bin/pastelogs 18:38:49 wtf 18:38:50 fizzie: I can't read that... 18:38:51 `run diff bin/pastelog{,s} 18:38:55 No output. 18:39:01 olsner: yeah no it's fine 18:39:04 fizzie: oh yes I can 18:39:05 just a glitch 18:39:07 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 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 fizzie: so is it because it's an integral and not a summation? 18:41:23 fizzie: I'm confused as to how the inverse transform can produce a non-periodic signal, as well. 18:43:09 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 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 `addquote [...] and then you just shuffle the integral signs around a bit and hope no mathematicians notice. 18:44:12 798) [...] and then you just shuffle the integral signs around a bit and hope no mathematicians notice. 18:44:53 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 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 fizzie, I NOTICED 18:48:12 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 kallisti, so in other words you grasp the Fourier transform as a magic box that turns a function into a series. 18:48:23 yep 18:48:39 though I get all of its components too! 18:48:45 like Euler's formula 18:48:52 AKA "not grasping the Fourier transform at all". 18:48:52 and integrals 18:49:04 well, but not how to integrate complex numbers... 18:49:37 Fourier transforms don't require any integration of complex numbers. 18:50:37 well they require integration of real numbers within complex number functions 18:51:28 \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 Oh, wait. 18:51:39 Being really bad at calculus is a great position to be in if you want to write signal processing code. 18:51:40 Oops. 18:52:09 Yeah that's still valid even with the f(x). 18:52:39 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 Phantom_Hoover: Just put suitable things in the {...} to compensate. 18:53:34 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 No, just f(x) before the sin and cos. 18:53:58 -!- kallisti has left. 18:55:29 He could've at least quit first. 18:56:34 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 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 On a programming channel, at that. 19:01:15 Phantom_Hoover: One expressly dedicated to languages with absolutely no practical use. 19:01:26 If you can read this text, you are wasting your life 19:01:44 olsner: The blind people in the room thank you. 19:02:06 elliott, that's not how esolangs are defined, is it? 19:02:07 If you can hear this text, you are doubly-wasting your life. (Take that, screenreader users.) 19:02:31 fizzie: BRAILLE DISPLAY 19:02:33 If you can feel this text, you are wasting your life 19:02:34 S 19:02:38 Damn,. 19:02:39 Uh. 19:02:41 That was fast. 19:02:50 If you can smell this text, I don't know what's going on. 19:02:50 Phantom_Hoover: Well, no, but it's practically true. 19:02:56 fizzie: :D 19:03:00 If you can fnarf this text, you are Gregor 19:03:29 If you can taste this text, stop licking your screen. 19:03:44 If you can propriocept this text, wtf? 19:04:45 If you can equilibriocept this text, don't you get seasick in your fancy rotating ball thing, huh? 19:04:48 If that were a word, I think it should be "proprioceive". 19:04:49 If you can... balance this text, you used the wrong cables. 19:04:56 fizzie, damn you. 19:06:05 If you couldn't divine this text, you suck at fortune telling 19:06:09 If you can feel this text as pain, you're probably not the only one groaning. 19:06:21 Deewiant: You're a proprioceive. 19:06:35 No, I'm a noun. 19:06:42 If you can synesthese this text, cool! 19:06:46 Deewiant: Your MOTHER was a noun. 19:06:49 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 inb4 Deewiant complains about my verbing. 19:07:03 -!- pikhq has joined. 19:07:44 If you can feel pain in your heart because of the intense predictability of this text, I empathise. 19:07:57 If you can echolocate this text, hello to our dolphin/bat/batman/etc. friends. 19:08:39 omg do we have any dolphins in the channel 19:09:26 They're probably just hiding. 19:09:34 hi dolfins :DDDDDDDddddddddd 19:12:50 And that is /why/ they're hiding. 19:13:58 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 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 M A G N E T O C E P T I O N 19:18:59 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 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 kallisti: Just so you know, the joining-and-throwing-the-gauntlet-down thing works better if you /quit afterwards. 19:22:48 kallisti, you could go after iti, but he at least acknowledges his ignorance. 19:23:45 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 fizzie: I think I'm going to have to step down from the Ragepart Professorship of Drama Kingliness. 19:25:51 I'm not worthy. 19:25:53 *Ragepat 19:25:58 HOW CAN I TYPO A TYPO 19:27:40 elliott, I don't know about that. 19:27:50 It would be pretty hard to top the Optbot Incident. 19:28:31 Phantom_Hoover: Like you haven't gotten annoyed about inconsistent op decisions. 19:29:44 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 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 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 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 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 It would be pretty hard to top the Optbot Incident. ← look at this ridiculous comment. 19:34:24 Look at it. 19:34:32 oh, ragepat means ragepaRt? makes more sense now... 19:35:28 Phantom_Hoover: OK, you're clearly not going to be satisfied no matter what I say, so whatevs 19:35:42 Yes, clearly. 19:35:45 Let's end it now. 19:36:34 That was ending it. 19:37:13 argh! gitweb is doing git archive on everything, for no good reason 19:37:54 http://www.youtube.com/watch?v=W7iuXAQYRcI 19:38:10 olsner: gitweb offers tarball downloads 19:40:20 elliott: that's not good enough! 19:40:51 olsner: disable them then 19:41:28 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 $feature{'snapshot'}{'default'} = []; 19:52:47 -!- Vorpal has quit (Read error: Operation timed out). 19:59:37 -!- kallisti has joined. 19:59:54 olsner: you can omit those single quotes, btw. 19:59:59 :) 20:00:14 -!- Klisz has joined. 20:00:26 kallisti, ... 20:01:08 Phantom_Hoover: what? it's a valuable piece of information. 20:01:31 kallisti, you're not very good at ragepatting, are you. 20:01:40 I went to go pay a thing. 20:01:45 with money I conjured out of thin air. 20:01:51 from a little machine that gives out money. 20:02:11 I don't recall you fixing your rehosting problem. 20:02:12 god bless America land of free money* 20:02:21 (*see terms and conditions) 20:02:39 Phantom_Hoover: there never was one. 20:02:41 You reconnected and joined here later. 20:02:54 that happened once because I don't remember why. 20:03:05 -!- DCliche has quit (Ping timeout: 260 seconds). 20:04:32 anyway I can just put elliott on ignore and then have (mostly) a channel that is constructive. 20:04:39 so no need to quit. 20:05:34 I doubt he would mind either. 20:05:42 so much drama 20:06:41 so much drummer 20:07:28 cheater_, fuck off. 20:07:30 -!- Sgeo has joined. 20:07:37 Sgeo: hey 20:07:44 Phantom_Hoover, fuck on 20:07:46 Hi 20:08:03 * Sgeo registered for classes 20:08:05 :/ 20:08:07 kallisti: Nobody ever puts me on /ignore. 20:08:54 so much drarmar 20:09:09 ^ul (Or at least, nobody ever puts fungot on /ignore.)S 20:09:09 Or at least, nobody ever puts fungot on /ignore. 20:09:13 Sgeo, which classes. 20:09:33 fungot: hi 20:09:33 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 "Virtualization/Cloud Computing", Human Body/Health & Disease, The West and the World 20:10:00 (+lab for Human Body Health and Disease) 20:10:55 Uh, I forgot something, blargh 20:11:08 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 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 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 unless you count intro to advanced math. 20:12:47 where I get learn about COUNTABLE AND UNCOUNTABLE SETS. 20:12:51 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 how do you get a Ph.D if you're really bad at school? 20:13:49 I doubt that's even something I want to do. 20:13:53 Sgeo, the problem is that your college is terrible enough that nobody will care what you did there. 20:14:10 Sgeo: a BS in bullshit? 20:14:15 olsner, indeed 20:14:57 you should just go get a job instead 20:15:14 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 olsner, I'm going to look for an internship at some point 20:19:16 after your brain has rotted to mush at this school of yours? :) 20:23:50 Sgeo, how do college admissions even work in the US? 20:24:04 Good question, I don't remember 20:24:14 poorly 20:24:17 ... 20:24:24 Phantom_Hoover: Don't be silly, I'm sure his father took care of that. 20:24:29 Surely you had to go through the process? 20:24:38 Phantom_Hoover, yes, in 2008. 20:24:48 Wait, actually 20:24:57 Phantom_Hoover: they look at grades and SAT scores mostly. 20:25:03 I was enrolled as non-matriculated for a while at first, then "transferred" in 20:25:04 and soemtimes you have to write about things. 20:25:07 depending on the school 20:25:07 Yes, but what do you actually /do/? 20:25:09 it's basically dependent on each school. 20:25:24 I assume you don't have anything as pinko commie as UCAS. 20:25:44 if it can be described as "pinko commie" then no. 20:25:46 Phantom_Hoover: Fill out application form, hand them information they ask for (typically school transcripts, SAT/ACT scores, maybe an essay) 20:25:46 we don't have it. 20:25:54 anything can be described thus 20:26:00 there is a common application accepted by many but not all US schools 20:26:10 https://www.commonapp.org/ 20:26:20 some also require supplemental materials 20:26:25 pikhq_, so you could apply to an indefinite number of colleges? 20:26:35 If you have the patience, yes. 20:26:35 sure. there are fees usually. 20:27:28 Sgeo, did you even *try* to get into anywhere other than Farmingdale? 20:27:38 also some states have common applications 20:27:41 Phantom_Hoover, no. 20:27:43 for their public school systems 20:27:56 like you apply to all the University of California schools at once 20:28:08 you just say which ones you are interested in 20:28:25 -!- oerjan has joined. 20:28:32 oerjan: hey 20:28:36 evening 20:29:52 Phantom_Hoover: Hey, he aimed high. You're the one applying to Cambridge! 20:30:34 cambridge isn't high? 20:31:14 Obviously not, if dead household appliances can apply. 20:31:42 oerjan: Yes, so Phantom_Hoover's a hypocrite. 20:31:50 He's just jealous of Farmingdale students. 20:32:30 do they have hills there there aren't any hills in cambridge it scares me 20:32:37 it's just 180 degrees of sky 20:32:39 BUGS 20:32:39 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 http://search.cpan.org/~rgiersig/Tie-Persistent-1.00/Persistent.pm 20:33:37 why 20:33:59 no idea. 20:37:10 !perl use Tie::File 20:37:13 No output. 20:37:45 !perl tie @arr, 'Tie::File', 'foo.txt' or die 20:37:46 Can't locate object method "TIEARRAY" via package "Tie::File" at /tmp/input.30334 line 1. 20:37:59 !perl use Tie::File; tie @arr, 'Tie::File', 'foo.txt' or die 20:38:00 Died at /tmp/input.30398 line 1. 20:47:06 -!- Ngevd has joined. 20:47:20 Hello! 20:55:18 -!- elliott has quit (Ping timeout: 276 seconds). 20:55:38 Ngevd: ey 20:55:40 +h 20:55:50 How are you, kallisti? 20:55:51 -!- monqy has joined. 20:56:22 Ngevd: not bad. working on programming stuff as usual. 20:56:35 :) 20:57:30 Did I mention that during my General Studies exam I temporarily exchanged my phone for a raffle ticket labelled "128"? 21:00:04 `frink c -> m/s 21:00:16 299792458 21:00:35 `frink c -> yards/s 21:00:48 374740572500/1143 (approx. 3.278570188101487e8) 21:00:51 Ngevd, you mean they had a phone exchange system? 21:01:06 Phantom_Hoover, precisely. 21:01:25 (hahahaha general studies) 21:01:45 I think they just give you back the phone you gave them, without bothering to even exchange them 21:01:57 (school put us all in, too much effort to bother to opt out) 21:02:34 Ngevd: lucky you won it back 21:02:49 oerjan, nah, there're better prizes 21:03:21 -!- zzo38 has joined. 21:06:06 Ngevd, like an A-level in General Studies! 21:06:09 Whoops no that's worthless 21:06:40 I fell asleep during the exam 21:06:45 And now I will brb 21:07:30 * oerjan is irritated by windows update slowing his google searches to a halt. 21:08:07 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 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 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 Hello 21:11:57 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 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 fizzie, aaaaand Finland is off the list of places to visit. 21:21:00 Phantom_Hoover: There's some hills up there in the north, but they're not much to speak of. 21:21:34 so im not the only one running windows 21:21:38 come to hilly norway 21:21:47 also chilly 21:22:16 fizzie, OK, when we get rid of Sweden, maybe we can give you its hills? 21:22:27 Sweden has hills? 21:22:30 come to australia, we have deserts, surf beaches, snow capped mountains, forests 21:22:31 oerjan: "c?hilly". 21:22:36 olsner: More than we do. 21:22:36 I walk uphill every time I travel to and from school, I don't know what you're talking about. 21:23:35 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 Phantom_Hoover: I sure hope you've already discounted Denmark, though? http://satwcomic.com/highest-points 21:24:01 And thus fizzie finds out exactly where Deewiant lives 21:24:31 Ngevd: I'd've assumed the student village, but he said he's in Helsinki somewhere. 21:24:53 Deewiant: Unless you mean "uphill" from the Lehtisaari side? 21:25:05 I don't. 21:25:22 Phantom_Hoover won't visit a place unless it has hills? 21:25:38 Does walking up a long staircase from underground count as going uphill? 21:25:39 Except in exceptional circumstances. 21:25:52 No. 21:26:40 There is a place in Hexham called "Windmill Hill" 21:27:01 And another called "Causey hill" 21:27:20 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 It's mostly just parking places. 21:27:32 The street I live on even has "mountain" in its name. 21:27:55 Edinburgh has Seven Hills, but nobody can agree on what they are 21:28:14 Like Rome and Istanbul! 21:28:47 But some people cannot agree on the splitting of the Ten Commandments either. 21:28:59 Deewiant: Vuorimiehenkatu? Punavuorenkatu? (I've lived there!) Okay, I'm just guessworking here. 21:29:57 Going to iterate through all the possibilities? :-P 21:30:22 Deewiant: Not unless you're going to say #t to one. 21:30:47 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 That's marksman as in sharpshooter, I don't really know which term is proper. 21:32:03 -!- pikhq has joined. 21:32:43 There's a street in Edinburgh called Princes street, which confuses everyone. 21:32:44 And now you're on some kind of "flatland street" with no hills anywhere? 21:32:48 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 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 Yes, that was mostly it. At least the economical WaveU has a bit of a hill going on, too, though. 21:34:47 I don't really mentally consider those WaveUs yet. 21:35:30 And there is that dipoli business, although it's not particularly WaveU in my opinion. 21:36:05 WaveU? 21:38:27 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 There was some place, it even had heights of buildings and all. 21:38:51 Google Earth? 21:38:54 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 /usr/bin/googleearth: 14: /usr/lib/googleearth/googleearth-bin: not found 21:39:15 Whoops, it has borkened. 21:39:26 as well as performances of said compositions. 21:39:33 fizzie: Google maps as well, evidently. 21:39:43 Use the Cloud. 21:39:48 so that I can, say, analyze what happens when sheet music says "legato" 21:40:41 Deewiant: I don't know what that means. I know it has the "terrain" map, but can it also tell heights? 21:41:04 Use that Minecraft scale model. 21:41:19 I assumed it could but it seems as though not, after all. 21:41:45 @where faq 21:41:46 http://www.haskell.org/haskellwiki/FAQ 21:41:49 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 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 fizzie: You can order one from maanmittauslaitos.fi. 21:43:12 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 Dunno. 21:44:06 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 Do you have a GPS device? 21:44:50 Well, I guess that's good enough. 21:45:01 It probably gets the order of magnitude right. 21:45:27 And I guess 40 metres counts as a hill. (The top is probably ten metres or so higher up still.) 21:46:33 I'm only at +27m. 21:47:28 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 Deewiant: Munkkivuoren puistotie? Siltavuorenpenger? I'm grasping at straws here. (Sorry, had to empty a waiting laundry machine.) 22:10:13 I hope you're checking that those are at +27m. 22:10:45 No, and I don't think e.g. Munkkivuoren puistotie is. 22:11:20 Or could it be just Vuorikatu? That'd be dastardly. 22:11:48 Heh, sorry, I'm not that dastardly. 22:20:36 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 I'll be back to check the heights of all these when I have some free time. 22:21:53 Or maybe I'll just give up; what's the point of any of this, anyway? 22:22:12 In fact, why on earth are you making me do this? This is stupef. I quit. 22:22:18 you're an anorak 22:24:43 Isn't that some sort of a jacket? 22:25:25 I submit that I wasn't making you do anything. 22:25:26 precisely 22:25:37 Implicitly. 22:25:42 oh hmm 22:25:50 But I can give you your #t now. 22:26:12 Okay, then I'll feel justified in stopping. 22:26:31 an anorak is a term for someone who wears an anorak due to their fairly specific hobby 22:27:05 i think it is something llike going out to the piers with a shortwave radio and listening in on ships broadcasts 22:27:21 not entirely sure 22:27:40 i was getting them confused with trainspotters when i said it 22:28:33 ive probably muddled up my facts somewhere in it 22:29:05 Is this a global term or just something you do? 22:29:24 I mean, not "you" personally. 22:29:34 But a regional group of people. 22:29:36 Or something. 22:29:58 Apparently it is a well-established thing. 22:30:02 The more you know, I guess. 22:30:21 Should've followed the "Anorak (Slang)" disambig link when I was at the Anorak page the first time. 22:30:36 British slang, they say. 22:30:38 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 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 !perl sub test {return (1,2);}; print test{1} 22:58:41 12 22:58:47 !perl sub test {return (1,2);}; print (test{1}) 22:58:47 12 22:58:50 erm 22:58:59 !perl sub test {return (a=>b);}; print (test{a}) 22:59:00 ab 22:59:03 wat 22:59:15 !perl sub test {return (a=>b);}; print ((test){a}) 22:59:16 syntax error at /tmp/input.10384 line 1, near "){" \ Execution of /tmp/input.10384 aborted due to compilation errors. 23:01:50 :t Kleisli 23:01:51 forall a (m :: * -> *) b. (a -> m b) -> Kleisli m a b 23:03:07 eta :: Kleisli m a (T a); mu :: Kleisli m (T (T a)) a 23:03:56 *eta :: Kleisli m a (T a); mu :: Kleisli m (T (T a)) (T a) 23:04:03 tha latter isomorphic to T (T a) -> m (T a) 23:04:34 and the former a -> m (T a) 23:04:54 which looks a bit like a transformer 23:05:21 zzo38: maybe monad transformers give monads in the kleisli category? 23:06:28 or maybe T itself just needs to be a monad 23:07:12 eta = return . return; mu = return . join 23:11:34 oerjan: I thought about that still I don't know 23:23:57 `perl @{undef} 23:24:01 Can't open perl script "@{undef}": No such file or directory 23:24:06 !perl @{undef} 23:24:07 No output. 23:24:32 !perl use strict; @{undef} 23:24:33 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 oh lol 23:24:43 !perl use strict; @{+undef} 23:24:43 Can't use an undefined value as an ARRAY reference at /tmp/input.13351 line 1. 23:25:31 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 Sgeo: I'm rapidly becoming sure you don't understand how locks work <-- maybe he's actually a talking dog 23:32:59 hm elliott deficiency 23:33:05 no wonder it was silent 23:33:12 locks are used for closing something so so hard that you need a whole key to open it 23:33:49 that's what topology lacks 23:33:53 keys and locks :o 23:33:57 ic 23:34:09 you do? 23:37:43 i can confirm i don't recall any keys or locks in topology 23:42:17 math has been overwhelmingly awesome this week 23:42:22 it's scary 23:43:52 oklofok: the universe is probably balancing out the collapse of my ZipList monad definition 23:44:14 well i didn't say i've actually succeeded in anything 23:44:33 although sofar, i've managed to stick to my at least one result a day policy this year 23:49:55 although today's results were rather silly. but i may just have the awesomest conjecture 23:50:03 let X be a zero-entropy subshift 23:50:15 then X is totally disconnected in the Weyl topology 23:50:19 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 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 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 (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 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 fizzie: well the discussion sounded like people were assuming mirroring a drug was a trivial change 23:54:12 "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 oklofok: well, it's true. 23:57:15 but WHY? 23:57:41 Because CHEMISTRY. 23:58:04 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 *version of molecules 23:58:36 oh you didn't mean that EVERY molecule of the drug is flipped? 23:58:50 um yes. 23:59:06 well i mean 23:59:16 it's obvious that it will work differently on a human 23:59:32 but if you flip him 23:59:37 won't it be the same drug? 2012-01-12: 00:00:01 yes, probably, but the supply of flipped humans is remarkably low. 00:00:20 There's an Asimov (IIRC) story about a flipped human. 00:00:34 He has problems digesting, if I recall correctly. 00:00:43 to me that sounds like an excuse for being able to patent the same thing twice. 00:00:52 But it might not be altogether factually accurate. 00:00:59 fizzie: not to mention being LEFT-HANDED 00:01:13 oklofok: but it won't have the same effect on a human, so why should they be equivalent patents? 00:01:14 dear god. 00:01:45 umm 00:01:51 i have to think about this 00:02:02 i mean 00:02:18 http://en.wikipedia.org/wiki/Chirality_(chemistry)#In_biology 00:03:13 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 of course i suppose the situation is a bit different 00:03:34 more like 00:03:45 a bijection is built between humans and stones 00:04:01 okay so maybe you win for now 00:04:15 * oerjan victory dance 00:04:16 Oh no, it's the glove example (in Wikipedia). 00:05:15 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 that's the best description of lsd i've ever heard 00:07:35 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 :O 00:08:00 lsd must be the second coming of fucking jesus o_O 00:08:59 Also you can hear God's voice if you put some in your ear. (Not true.) 00:09:56 i think you'd hear a lot of things 00:11:08 I was probably thinking of that seashell/ocean thing there. 00:13:43 kallisti, update 00:28:41 It is why I say they should abolish patents 00:36:18 Done next recording of D&D game. 00:37:16 -!- DeadlyFugu has left ("Leaving"). 00:37:38 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 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 there was a topic? 00:38:31 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 itidus21: yes, it said "We apologize for the recent topic change delay | http://codu.org/logs/_esoteric/" 00:40:04 well recently i have heard about a flood of new laws in usa all of which are terrifying 00:40:36 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 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 i think it's best to nip this in the bud 00:42:22 itidus21: How does that work? 00:42:50 another is the thing about how us military can now take you away if they want to 00:43:03 i think.. i dunno if that one is gone though 00:43:14 then again theres SOPA.. i dunno much about that, probably going through 00:43:22 They are certainly seems dumb laws 00:43:35 i dunno how factual i am being since i dont research well 00:43:55 anyway, theres also some business about changing the way the patent system works drastically 00:44:45 Then, hopefully they will correct it instead of making it stupid a second time. 00:45:00 ha ha ha 00:45:12 well it's obvious that humanity is doomed anyway so who gives a fuck 00:45:15 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 But they probably don't know how to correct it 00:45:43 itidus21: cannabis addiction? no such thing. 00:45:48 not in the same way as nicotine. 00:46:01 i don't belive in nicotine addiction 00:46:17 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 I still smoke hookah occasionally but it's pretty much neglible to my health. 00:46:46 like once a week at most. 00:46:52 lately it's been like a month. 00:46:54 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 i just find random bits of troubling news i think 00:47:28 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 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 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 nicotine is comparable to heroin in terms of addictive potential 00:50:26 cannabis, on the other hand, is incapable of creating a physical dependence. 00:50:33 I don't see what a patch would accomplish 00:50:38 aside from being another source of THC for someone to take. 00:51:01 well apparently they're able to take out the THC a bit or something 00:51:09 and i assume it feels nice because you don't get as much oxygen as you need if you smoke passionately. 00:51:13 so you get a bit dizzy 00:51:26 snus doesn't have this, and probably for this reason never feels like anything 00:51:26 oklofok: that's part of it 00:51:31 I get crazy light-headed when I smoke hookah 00:51:41 because you take deep hits 00:52:10 but do you agree with my opinion on nicotine addiction? (that it's impossi) 00:52:12 ble 00:52:37 no. 00:52:46 >_>? 00:52:51 Science has demonstrated that nicotine addiction is not merely possible but highly probable with nicotine intake. 00:53:12 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 oklofok: No, but I agree that you have smoking addiction but not nicotine addiction, maybe? 00:53:49 well i have no idea what any sort of physical addiction is supposed to feel like. 00:53:58 oklofok: like that. 00:54:46 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 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 oklofok: sure. some of those things are reasonable statements. 00:55:23 so obviously cannabis is just as addictive as tobacco 00:55:29 hmmm... 00:55:30 no 00:55:50 there is a distinct difference between a normal habit and a physical addiction to a substance. 00:55:51 well it actually does something to you, so you might want to avoid it when, say, at work. 00:55:55 I suppose, different people are affected in different way 00:56:08 yeah i don't get it 00:56:11 So, it is the difference! Sometimes. 00:56:19 oklofok: uh, sure. that's irrelevant to the conversation. 00:56:52 actually i suppose i don't have a physical addiction to sex 00:57:08 because i actually feel that i need to have sex occasionally (90 times a day) 00:57:12 nor food 00:57:34 nor the computer, really 00:57:40 i specifically feel i want to use the computer 00:57:49 i never specifically feel i want to smoke 00:57:59 i could just as well buy an energy drink or a cola 00:58:03 it just costs way more 00:58:07 and isn't nicotine. 00:58:24 well note that i often do just buy another energy drink 00:58:32 and then i don't need to smoke for another 3 hours. 00:58:35 then i have another choice 00:59:04 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 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 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 I smoked for several months and could immediately notice that I was addicted. 01:00:29 also when it's cold outside i don't smoke, i fill a bottle of water and drink it. 01:00:56 two of the most addictive and detrimental substances to humanity are perfectly legal. 01:01:01 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 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 are there nicotine-free cigarettes? 01:02:23 yes. 01:02:24 i guess that would be the easiest way to check 01:02:26 herbal cigarettes and such. 01:02:42 also "e-cigarettes" which are basically just vaporizers. they're healthier but more expensive. 01:02:57 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 ah yes 01:03:11 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 fizzie: I'm confused as to how the inverse transform can produce a non-periodic signal, as well. 01:03:52 itidus21: I can't take anything seriously when it says "pot addicts" 01:04:14 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 kallisti: i've heard that heroin addicts start shaking and stuff if they don't get heroin 01:04:56 i've also heard this about nicotine, but that's obviously not true 01:04:57 So, they're actually making an Ender's Game film. Should I be horrified preemptively? 01:05:01 and caffeine 01:05:48 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 i mean why the fuck is it called physical addiction if there are absolutely no physical signs o_O 01:06:04 >_> 01:06:06 <_< 01:06:25 Also, caffeine's withdrawal symptoms tend to be in the form of headaches. 01:06:28 oklofok: perhaps you should try heroin, then. 01:06:32 kallisti: you realize that if a/b is irrational, then e^(iat) + a^(ibt) is not periodic? :) 01:06:40 er 01:06:45 kallisti: i just said i would probably never want to give that up 01:06:48 lol a/b is irrational 01:06:51 how would that be a good choice for me? 01:06:51 *e^(iat) + e^(ibt) 01:07:09 oerjan: no I did not know that. 01:09:37 hth then 01:09:44 not really... 01:09:55 it's just something I'll need to learn when i have some time. 01:10:09 kallisti: well it shows you can get non-periodic functions even with two terms 01:10:11 numbers are trivial, you should learn symbolic dynamics instead 01:10:41 oerjan: I didn't know that either, but now I know 01:11:00 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 oerjan: can you sic e^(iat) + a^(ibt)? 01:12:26 oklofok: wat 01:12:29 (sic) 01:12:51 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 oviet Union before 1973) had their copyrights restored on January 1, 1996. 01:13:18 itidus21: I'm going to get oerjan to ban you due to excessive self-quoting. 01:13:39 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 kallisti: guess what i'm going to do now btw :D 01:14:05 oklofok: i know what (sic) means, but why should i put it on something i already corrected 01:14:23 oerjan: because i wanted to know that was correct 01:14:27 oh 01:14:29 ! 01:14:33 sorry, i missed that line. 01:14:41 i won't learn 01:14:43 now i understand all kinds of thing. 01:14:47 yay! 01:15:36 oklofok: i suppose the other is also correct if a/(b ln a) is irrational 01:16:21 i was gonna say i have no idea, but actually i now realize you're talking about trivial stuffs. 01:16:38 maybe if i must rant i should do it by pastebin 01:16:38 EXCELLENT 01:16:51 itidus21: or on the channel 01:17:07 only everyone except me is annoyed, so who gives a fuck 01:17:52 Are you sure everyone except you is annoyed? 01:17:57 not really 01:18:10 i'm the only one actively unannoyed though. 01:18:29 some of you just stand in a list and keep your mouths shut 01:18:30 I am not annoyed by it either 01:18:42 you must be immune 01:19:55 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 (or maybe slightly it does im not sure) 01:20:23 and in the same way more laws doesn't bring more and more fairness or justice 01:20:40 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 If you can read this text, you are wasting your life <-- NOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO 01:21:07 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 in other words, all these laws that get introduced year after year don't make anything any better 01:21:47 maybe its a very wrong and cynical view 01:22:21 after all.. capital punishment is being outlawed many places.. = good.. 01:23:19 if half of humanity was randomly slaughtered, the rest of us would have twice as much money 01:23:20 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 though 01:24:26 AND cows. 01:24:31 zzo38: that makes a complete mockery of referential transparency 01:24:33 we could all make our own milk :o 01:28:59 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 zzo38: i don't know what to say but it would be a fundamentally different language. 01:36:53 you fundamentalists are all the same 01:37:44 oerjan: Are you sure? Current way seems not mathematically correct to me? 01:40:53 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 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 oerjan: Can you describe better please? 01:45:25 no, i don't know the details of the theory. 01:46:28 if you want auditory hallucinations specifically you should take diisopropyltryptamine 01:47:02 also auditory distortions like nonlinear pitch shift and "flanging" 01:47:06 kmc: Is it enough just to listen to someone trying to pronounce it? 01:48:20 :D 01:49:00 * shachaf realises that's probably "di-iso-", not "diiso" pronounced as in Finnish. 01:49:05 correct :) 01:49:42 also pot addiction is a real thing, but it affects small minority of people who take pot ever 01:50:02 you can become addicted to pretty much any sensation or activity 01:50:05 some draw the distinction between physical addiction and psychological addiction 01:50:18 i don't know the field well enough to know if this distinction makes sense or if it's bullshit dualism 01:50:48 oklofok, but what would the money be worth 01:51:07 it's weight in fucking money that's what 01:55:05 ... 01:59:26 oklofok: ah but most money is electronical these days 02:00:21 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 *-. 02:01:01 or things that subvert evolved systems 02:01:29 i suppose, but i can't come up with such 02:01:48 cocaine, heroin, etc 02:02:00 oerjan: i would probably take my cast out of the bank the day everyone i know is slaughtered 02:02:17 kmc: i hear heroin = nicotine in terms of addiction 02:02:23 so... obviously not 02:02:50 cocaine is a dopamine reuptake inhibitor; it increases the amount of dopamine in the space between neurons 02:03:05 which increases dopamine-related signaling 02:03:35 dopamine is one of the main chemicals involved in reinforcement and reward-seeking behavior 02:04:08 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 the brain has evolved to seek activities which are evolutionarily useful, like exercise, sex, food, etc 02:04:30 hmm 02:04:35 drugs like cocaine are addictive not because they're evolutionarily useful 02:04:48 but because they directly screw with the system for rewarding evolutionarily useful activity 02:05:16 so yes the addiction is every bit as physical as the need for sex or pull-ups 02:05:20 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 right 02:05:31 similarly "oh god i need some cocaine" 02:05:45 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 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 but, at least i, feel "smoking is so much fun, i wish i could do it all day" 02:06:38 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 so maybe you are not "physically addicted" to nicotine 02:07:01 i must be 02:07:15 i've been smoking half a year, and a god-awful lot 02:07:22 i hear this i'm in denial 02:07:30 you seem not to understand a damn word i'm saying 02:07:33 that's ok 02:08:03 well i mean sure, it seems that i am not physically addicted to nicotine because i feel this way, by definition. 02:08:19 but how could i not be, if it is possible to be physically addicted to it? 02:08:26 luck of biochemistry 02:08:34 everyone's brain is a bit different 02:08:42 some people can take cocaine or heroin and not get addicted 02:08:47 there aren't a whole lot of them, but they do exist 02:08:55 but i get addicted to everything i do! i need to eat pizza *every day* nowadays 02:09:07 well 02:09:23 yeah but what does pizza have to do with single-codon mutations in your nicotinic acetylcholine receptors 02:09:40 i'm saying this stuff hinges on really specific genetic and biochemical details 02:09:50 which are different for everyone 02:09:55 :P 02:09:55 that's one reason why drug addiction is heritable 02:09:56 true 02:10:35 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 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 my family is full of drunks 02:11:38 Is it still OK after thirty years? 02:12:32 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 zzo38: yes, forever. 02:13:53 perhaps that has to do with my... let me copypaste alcoholic stuffoline receptors 02:15:44 which i inherit from my true parents, who are lizard kings. 02:15:46 -!- Jafet has joined. 02:19:55 i am the lizard king, i can do anything 02:28:43 are you my parent? 02:42:25 doubtful 02:42:48 sixth cousin once removed 02:53:04 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 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 hey... I think I've got an intersting idea for a CPU design 03:28:10 a friend had an optimization to TOD 03:28:37 to make it go faster the system could run a modified ntpd system to change the speed at which seconds progress 03:29:41 Have each cpu instruction output a result 03:29:50 -!- GreaseMonkey has joined. 03:30:06 And then instead of reading operands from registers, reading them from the results of the N previous instructions 03:30:44 Because fuck pipelining. 03:31:14 Essentially it's a form of out of order execution 03:33:27 pikhq: eh I guess it's a sort of mobile pipeline instead of a staged one... I think 03:35:45 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 So operation results become valid one after the other and trickles down the scheduled units 03:39:00 You'd have to do "out of band" instruction scheduling though 03:39:28 ie have the number of loop iterations etc determined some other way than branching instructions 03:41:38 Would probably mostly be interesting as a coprocessor to a RISC cpu 03:44:37 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 madbr: while you're at it, why not switch to an fpga on the fly 03:53:38 http://www.microsemi.com/en/products/whats-new/smartfusion 03:55:31 jafet: looks nice 03:58:53 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 " 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 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 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 Good night, sir. 06:15:57 zzo38, you wanted a pure function in Haskell to catch exceptions? 06:16:19 like tryPure (error "foo") => Left (ErrorCall "foo") 06:16:19 ? 06:16:31 kmc: No. Not quite what I asked. 06:16:38 what then? 06:17:04 -!- Klisz has quit (Read error: Connection timed out). 06:17:36 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 ah 06:17:54 that seems reasonable 06:18:10 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 maybe you can write a combinator library for that 06:18:18 and not need macros 06:20:24 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 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 ii'm confused 06:22:39 @type Control.Exception.try . Control.Exception.evaluate 06:22:39 forall a e. (GHC.Exception.Exception e) => a -> IO (Either e a) 06:22:46 isn't this the one-argument version of what you want? 06:22:54 for whnf strictness 06:23:08 Like, say you have: f :: Int -> Int -> Int; f 0 x = x; g :: Int -> Int -> IO Int; g = xyz 2 f; 06:23:35 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 (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 Now, g 1 5 is IO action calling the pattern match exception, and g 0 8 is same as return 8 06:26:13 kmc: oh, are you and zzo38 discussing haskell? 06:26:14 Are you less confused now, or even more confused? 06:26:19 great! 06:26:20 i guess we are 06:28:30 -!- ais523 has joined. 06:31:57 -!- DCliche has joined. 06:32:22 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 ais523: You have 1 new message. '/msg lambdabot @messages' to read it. 06:32:51 in other words, anyone know of any Funge-98 tutorials? this seemed like a good place to ask 06:33:12 kmc: Do you have any more answer to me by now? 06:33:15 although probably a bad time, this is an awful time for people in most of the most common timezones for #esotericers 06:33:17 ais523: wow, I assumed Susan had abandoned rcfunge 06:33:17 Or anyone else answer? 06:33:20 no 06:33:34 Do you even understand what I mean, finally? 06:33:36 elliott: esolangs tend not to need all that much maintenance 06:34:01 ais523: well, no 06:34:44 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 elliott: What is your opinion of my comments about this Haskell programs? 06:34:50 also, what are you doing awake? 06:34:55 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 ais523: good question 06:35:01 is this late at night or early morning for you, or do those terms have no meaning nowadays 06:35:09 zzo38: i have no idea what the context is 06:35:15 ais523: early morning right now 06:35:31 elliott: I decided the same thing, so I went to work 06:35:38 I had to get in early, by around 9am, to prepare a tutorial 06:35:41 elliott: Then read it! 06:35:44 zzo38: :( 06:35:48 so I'd have at most 3 hours sleep even if I managed to get to sleep instantly 06:35:51 so I decided it wasn't worth it 06:36:06 (I slept much of yesterday afternoon, due to only getting 2 hours sleep the day before) 06:36:19 ais523: no, I've slept 06:36:44 ah, OK 06:36:52 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 what timezone would you say you're in at the moment? 06:37:16 (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 elliott: Now do you understand? 06:37:53 zzo38: Now do I understand? 06:37:59 elliott: no 06:38:28 ais523: err, I'm not sure; I slept about 8 hours, at least, from 21:00-05:00 or so 06:38:34 ais523: Do you know? 06:38:52 elliott: ooh, I envy that sleep schedule 06:39:00 I used it deliberately for a few days, but it made me ill 06:39:13 ais523: it's awful, i get tired in the afternoon 06:39:30 maybe it'd be better if it got bright earlier 06:39:32 actually, I think mine was even more extreme, along the lines of 18:00-02:00 06:39:42 and yes, I came to the conclusion that it works great in summer but doesn't work in winter 06:39:57 (current thoughts as to the optimal sleep schedule: sleep 6-8 hours and wake at sunrise, regardless of when sunrise is) 06:40:22 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 ais523: you misspelled 10+ 06:41:08 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 But I do sometimes wake up as early as 02:00 06:41:33 Not often, though. 06:42:16 -!- DCliche has changed nick to Klisz. 06:48:30 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 "south of the Antarctic" 06:49:29 Circle. 06:49:39 I didn't feel like repeating. 06:49:43 "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 fizzie: Months, on the South Pole. 06:50:01 fizzie: I was basing it on UKish latitudes 06:50:09 Then you just sleep for another 3 months or whenever it was. 06:50:17 I... guess it's efficient? 06:50:42 -!- _Slereah has quit (Ping timeout: 276 seconds). 06:50:57 -!- _Slereah has joined. 06:51:16 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 Oh, yes, quite. 06:51:47 Well, it's even more efficient. 06:54:38 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 01:14:00: kallisti: guess what i'm going to do now btw :D 07:04:04 oklofok: how was the heroin 07:04:14 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 02:09:23: yeah but what does pizza have to do with single-codon mutations in your nicotinic acetylcholine receptors 07:08:23 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 Omnomnom,. 07:38:39 ais523: what's the opposite of infinitesimal? 07:38:41 as in, not infinitesimal 07:38:53 Large? 07:39:19 no. 07:39:21 as in, not infinitesimal 07:39:25 0.00001 is not large 07:39:26 -!- madbr has quit (Quit: Page closed). 07:39:28 elliott: "standard" means not infinitesimal and not infinite 07:39:30 but it isn't infinitesimal, either 07:39:33 in nonstandard analysis 07:39:41 ais523: hmm, that could work 07:49:31 What's the opposite of purple? 07:56:01 Jafet: purpl 07:56:01 e 07:56:04 green 07:56:09 elprup 07:56:55 checyr 08:01:35 monqy: checyr 08:01:53 checyr 08:01:59 checyr 08:04:01 http://stackoverflow.com/questions/8831630/whats-benefits-of-nancyfx 08:06:03 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 What happens if I use the benefits? 08:06:12 thanks 08:06:38 "if i was elliott, that's what i would say" - monqy 08:07:06 elliott: hmm, one of the agora backup lists just got conference spam 08:07:28 ais523: criminal cfj + playerhood inquiry cfj 08:07:31 it's the only reasonable response 08:07:37 * Sgeo doesn't see it 08:07:46 elliott: you can do it 08:07:59 Sgeo: it was sent to tue, are you subscribed to that one? 08:07:59 ais523: but i'd have to figure out a rule to charge them under 08:08:11 err, Sgeo isn't subscribed to tue? 08:08:13 that's worrying 08:08:17 come to think of it, why did tue even accept that? 08:08:31 elliott: 101? 2029? 08:08:33 ais523: presumably they registered for the list 08:08:42 I know I'm subscribed to at least one backup list, not sure if both or not 08:08:55 Sgeo: I'll let the invaders know to use the backup lists 08:09:01 ais523: heh 08:10:16 I wouldn't be able to get to the password reminder thing if I wasn't registered, right? 08:10:55 oh no, reddit was mentioned on slashdot 08:11:01 and I didn't realise it'd lead to a moderation system flamewar until I saw it 08:11:05 I should have done, obviously 08:16:15 Sgeo: it's likely it's just going ito 08:16:18 into your spambox 08:16:53 ais523: "'Smaller' sites like Reddit start the ball rumbling, Slashdot joins in, [...]" 08:16:55 ais523: i lol'd 08:17:02 slashdot "bigger than reddit" 08:17:10 people correct them later 08:17:34 start the ball rumbling? 08:17:38 but yes, most Slashdotters seem to be under the misconception that it's a major site 08:17:52 elliott, it's not in my spambox though 08:17:59 monqy: rumbly ball 08:18:01 IMO it's historically important, and worth subscribing to, but not /large/ 08:18:01 To be fair, once upon a time it was relatively large. 08:18:19 Slashdotting really was a major phenomenon. 08:18:25 ais523: I think the only thing that can be slashdotted nowadays is, e.g. a teacup 08:18:37 But the web grew, and Slashdot did not. 08:18:38 What about that potato web server? 08:18:50 That's teacup-sized. 08:19:03 Note: Either an actual potato or Debian Potato would do. 08:19:15 THE POTATO HAS LANDED 08:19:56 elliott: actually, I think it's more a case of data having got larger 08:20:07 nowadays, webservers are used to serving up gigabyte-large videos 08:20:13 FSVO gigabyte 08:20:36 elliott: well, I know I've watched videos over 1GB large, either metric or binary 08:20:59 ais523++ # metric or binary 08:21:04 "Webservers" aren't used to that; big webservers are 08:21:20 -!- cswords has quit (Read error: Connection reset by peer). 08:21:46 peer :( 08:22:29 context is that reddit's planning to shut down for a while to protest against SOPA 08:22:45 peer++ # eh resets connectoins and doesn't afraid of anything. 08:22:56 shachaf: no no 08:22:57 bad 08:22:57 person 08:23:00 bad 08:23:07 bad 08:23:10 b 08:23:11 ad 08:23:17 bad!!! 08:23:18 If elliott won't go to the Reddit, the Reddit will come to the elliott. 08:23:31 bad :( 08:23:45 b a d 08:24:01 bad 08:24:40 bad 08:27:07 holy shit. 08:27:14 there's a sour melon flavor of powerade. 08:27:15 it's so 08:27:16 good. 08:27:18 oh my god. 08:27:35 elliott, kallisti SBaHJ update 08:32:31 ooh 08:33:06 fucking incredible 08:33:30 its very good but already hours old 08:33:33 sgeo how could you... 08:33:44 monqy, I only found out about it recently 08:33:52 :o 08:34:57 Sgeo lied to monqy 08:34:59 with his words :( 08:35:10 -!- ais523 has quit (Ping timeout: 255 seconds). 08:35:44 sgeo knows all therefore he knew about the sbahj update BUT DIDN'T SAY ANYTHING 08:35:52 ;_; 08:37:23 what's all this then 08:37:32 kmc: monqy 08:37:47 the channel's in monqy mode 08:37:53 delay expectations of coherency 08:38:00 -!- ais523 has joined. 08:39:59 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 s/?/"/ 08:40:58 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 i've already decohered 08:41:09 BUILT IN FUNCTIONZ 08:41:16 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 guido van rossum says that functional languages are the ones where map and filter etc are magical builtins 08:41:45 python isn't functional because you can implement map in a few lines of code 08:42:06 a few lines? how stupidly verbose 08:42:06 well you need them to be builtin if you want performance 08:42:16 22:47:58 how may I get a call stack when my program crashes? 08:42:16 22:48:09 You may not. Thanks for asking. 08:42:20 shachaf: Hey, -xc works /most/ of the time. 08:42:23 #haskell? 08:42:27 hehe 08:42:29 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 shachaf tells it like it is 08:42:31 kmc: Maybe# 08:42:32 (each, that is) 08:42:33 *! 08:42:44 Maybe# 08:42:46 :D 08:42:47 data Maybe# = Just# a | Nothing# 08:42:51 kmc: Hey, I elaborated a little more later on! 08:42:54 it just uses a null pointer for nothing 08:42:55 it's faster!!!!!!1!!!! 08:42:58 YESSS 08:43:01 omg the optimizationsz 08:43:03 and is otherwise a pionter to the just value 08:43:07 elliott, you're onto something here 08:43:08 that was my interpretation of Maybe# too 08:43:14 that would be srsly better right 08:43:14 this means that Maybe# Int# can't represent 0 08:43:19 although I hadn't thought it through in that much detail 08:43:26 elliott: hmm, Maybe# would have to always use a pointer 08:43:26 elliott, the kind of Maybe# would forbid that anyway 08:43:35 it would be * -> * like the regular Maybe 08:43:41 kmc: nah, kind polymorphism, dude 08:43:43 ais523: Heck, even an unreasonable functional language can pull them off in 10 or 15 lines. 08:44:17 (for my canonical example of "unreasonable functional langauge" I shall point you to clambda) 08:44:19 now I want to invent a functional language in which map is incredibly hard to write 08:45:15 ursala? :P 08:49:12 it's probably only a couple of characters in ursala 08:49:23 and only hard to write, because doing so would actually require learning ursala 08:49:35 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 first result for ursula is arc forum and the link in the post title is broke :( 08:51:14 I mean 08:51:17 ursula programming language 08:52:11 yeah the site is gone 08:52:38 was it good 08:52:52 elliott, http://hpaste.org/56368 08:53:03 monqy: as consolation: http://arclanguage.org/item?id=6155 08:53:10 it works except sometimes nothing# segfaults 08:53:16 but that's just the price you pay for SPEED 08:53:22 kmc: oh my god 08:53:37 kmc: i want to show #haskell 08:53:41 you should do it 08:53:51 elliott: that post is too mysterious for me to tell if it's good or bad 08:53:59 but it looks a bit on the absolutely crazy side 08:54:21 #comment -[ yes good ]- 08:54:28 kmc: Help!! I've been trying to optimise my code with unboxed Maybes but nothing# sometimes segfaults! http://hpaste.org/56368 08:54:43 elliott u troll 08:54:47 y u troll 08:55:06 kmc: it's ok i put a :P face after it 08:55:20 i really should have put "just say maybe to drugs" as the module haddock 08:55:21 o well 08:55:28 elliott: hlint tells you why it's broken. 08:55:34 You're not usingCamelCase. 08:55:34 kmc: Put it on Hackage. 08:55:37 There is no place to camelcase! 08:55:42 acme-maybehash 08:55:55 kmc: acme-maybe-fast 08:56:14 kmc: I think maybe#'s type doesn't have enough #s in it. 08:56:24 yeah it would be faster if it were maybe### 08:56:36 truly optimized haskell code is about 40% hash by weight 08:56:36 * shachaf Maybe# (Maybe# a) 08:57:00 «just# = M# . unsafeCoerce#» 08:57:07 fuck, why did i compose a newtype constructor with unsafeCoerce# 08:57:08 nothing# should be (void*)0, just# nothing# should be (void*)1, etc. 08:57:10 that's just sloppy 08:57:16 kmc: safety 08:57:19 haskell's all about safety 08:57:39 yeah i used howard's curry to prove that Maybe# exists, in the type system 08:57:47 thanks howard 08:58:02 howard's curry with a side of samosas and bhang lassi 08:58:05 Curry-Howard. Coward. 08:58:16 curry-howard. chowder. 08:58:17 shachaf: I've already said "Hurry-Coward isomorphism". :( 08:58:38 i always dyslexia it into hurry-coward in my head oops 08:58:41 i'll have a jumbo bhang lassi, extra bhang, hold the lassi 08:58:49 monqy: http://web.archive.org/web/20090113084759/http://www.basis.uklinux.net/ursala/ 08:59:01 http://web.archive.org/web/20080704174715/http://www.basis.uklinux.net/ursala/manual.pdf doesn't load :( 08:59:11 at least i can read the 08:59:14 design philosophy 08:59:22 kmc: hey how do i get repa to put an array at an address thanx 08:59:30 moar unsafeCoerce# 08:59:40 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 damn i should make a quasiquoter for inline FORTRAN 08:59:59 I mean, fromJust and fromMaybe occured to me sooner 08:59:59 then Haskell can take over the scientific HPC world 09:00:07 `addquote damn i should make a quasiquoter for inline FORTRAN 09:00:12 :t maybe True (const False) 09:00:13 forall a. Maybe a -> Bool 09:00:19 799) damn i should make a quasiquoter for inline FORTRAN 09:00:20 (Actually, in one place I'm using maybe where fromMaybe makes more sense 09:00:21 Sgeo, you can make anything that operates on Maybe from maybe 09:00:34 :t maybe Nothing Just -- or did I just blow your mind 09:00:34 It's almost like some kind of dogamorphism. 09:00:35 forall a. Maybe a -> Maybe a 09:00:49 woof woof 09:00:50 @quote ddarius isJust 09:00:50 dogamorphism? 09:00:50 ddarius says: isJust :: Maybe a -> Bool; isJust = unsafeCoerce 09:00:57 unsafeFromForeignPtr sh fptr 09:00:57 = fromFunction sh 09:00:57 (\ix -> unsafePerformIO 09:00:57 $ withForeignPtr fptr 09:00:57 (\ptr -> peekElemOff ptr $ toIndex sh ix)) 09:00:59 it works too (fsvo) 09:01:04 NO REPA NO THAT ISN'T WHAT I WANT 09:01:28 http://mainisusuallyafunction.blogspot.com/2010/09/executing-bytestring.html do it this way 09:02:01 AxioSep 29, 2010 07:32 PM 09:02:01 >> Why not! 09:02:01 For security reasons, of course ! 09:02:01 Unless you want Haskell to be the new C, as far as execution of arbitrary code is concerned… 09:02:08 kmc: you're a bad person. you made haskell insecure 09:02:26 Y¬ 09:02:44 that code segfaultz on my system now 09:02:48 prolly stupid NX bit 09:02:59 More like No funX bit. 09:03:19 * kmc stomps off in search of mprotect binding 09:03:55 kmc: 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 unsafeCoerce# can cast between kinds 09:04:26 it's just that powerful 09:04:38 you can't ignore my techno 09:04:39 Can it cast * to * -> *? 09:04:46 kmc: Your Show instance is wrong. 09:04:55 no your brain is wrong 09:05:16 :( 09:05:23 * elliott cries. 09:06:08 why am i reading repa's code 09:06:32 {-# INLINE [2] force #-} 09:06:33 force arr 09:06:33 = unsafePerformIO 09:06:33 $ do (sh, vec) <- forceIO arr 09:06:33 return $ sh `seq` vec `seq` 09:06:33 Array sh [Region RangeAll (GenManifest vec)] 09:06:36 best indentation ever 09:06:39 idiomatic haskell 09:07:03 Array sh _ 09:07:03 -> do mvec <- VM.unsafeNew (S.size sh) 09:07:03 forceWith (VM.unsafeWrite mvec) arr' 09:07:05 oh! 09:07:09 i could write my own forcing function 09:07:13 assuming vector gives me the kind of placement i need 09:07:17 use strength reduction 09:07:25 wow that indentation 09:07:26 is so good 09:07:36 this must be how dogs see 09:07:58 hmm... Data.Vector.Unboxed.Mutable doesn't have any "cast pointer to vector lol" functions 09:08:07 use storable vector 09:08:15 kmc: oh, fair enough, i thought you were just crazy :P 09:08:29 i should have more booze 09:08:45 kmc: I don't think a storable vector would work. 09:08:57 At least, Repa has unboxed ones under the hood and I don't think they're compatible. 09:09:06 Although I suppose I could throw away the Repa array after forcing it... 09:09:30 -!- monqy has quit (Quit: hello). 09:09:58 did you know the last segment of _2001: A Space Odyssey_ synchs up with "Echoes" by Pink Floyd 09:10:11 Whoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 09:10:17 Nobody has ever said that in the history of ever. 09:10:45 true fact 09:13:37 Data.Array.Repa.Internals.Forcing isn't exported :( 09:18:10 bleh, I'm trying to print out a marksheet on this Windows computer here 09:18:16 but apparently there isn't enough disk space to open Excel 09:18:21 * ais523 boggles slightly 09:19:08 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 meanwhile, OpenOffice, which is also here, complained but allowed me to open the file 09:21:06 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 heh, OpenOffice crashed, then went into an infinite loop of asking to clear disk space trying to save its recovery data 09:29:08 have you tried deleting something 09:30:29 For example, Excel. 09:31:40 -!- Vorpal has joined. 09:32:55 yes 09:35:31 have you tried starting some fires 09:37:14 maybe it would work better if nothing# were the pointer 1 instead of 0 09:38:29 kmc: What about ~0? 09:38:40 that might be the best pointer of them all 09:49:32 this must be how dogs see use storable vector i should have more booze did you know the last segment of _2001: A Space Odyssey_ synchs up with "Echoes" by Pink Floyd 09:49:40 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 minecraft 09:50:02 doubtful 09:50:10 desert bus 09:50:13 haha 09:50:34 big rig 09:50:35 s 09:50:35 i've never played desert bus 09:50:38 this must be how dogs see 09:50:46 this must be how dogs see 09:50:49 elliott, trying to remember which that one is. I heard the name before... 09:50:52 Dogs see with a storable vector? 09:50:52 this must be how dogs see 09:51:02 this must be how dogs see 09:51:10 Vorpal: http://en.wikipedia.org/wiki/Big_Rigs:_Over_the_Road_Racing 09:51:17 oh no, not that game 09:51:27 with the absence of collision detection 09:51:29 "a severe lack of collision detection and frequent violation of the laws of physics were the game's main problems." 09:51:33 Vorpal: Sega Bass Fishing. 09:51:43 100 years from now womankind is extinct and so they only play dating sims 09:51:49 fizzie, I never even heard about that one :P 09:51:59 so this immediately turned into a list of the worst games? 09:52:18 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 wow 09:52:39 Best article. 09:53:05 no the best article is http://en.wikipedia.org/wiki/List_of_animals_with_fraudulent_diplomas 09:53:26 I only know about it because it's in the four (four!) games chosen for the Dreamcast Collection for some reason. 09:53:36 "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 (Sonic Adventure, Crazy Taxi, Space Channel 5: Part 2 and Sega Bass Fishing.) 09:53:40 fizzie, wow. are the other games as bad? 09:54:28 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 sounds like its not a good one 09:55:21 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 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 itidus21, I heard that the recent sonic generations is pretty good 09:56:09 "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 haven't played it. Haven't played /any/ sonic game in fact 09:56:37 fizzie: Isn't Crazy Taxi famous-ish? 09:56:43 sonic and knuckles is pretty cool though.. the way they stack up the cartridges 09:56:48 http://upload.wikimedia.org/wikipedia/en/7/75/CrazyTaxi_cover.png certainly rings a bell at least. 09:56:56 elliott, the font for a start 09:57:06 Sonic Adventure was I think the first "good" 3D Sonic; of course not everyone likes those, but quite a few do. 09:57:09 (most likely cause even) 09:57:17 "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 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 sonic and knuckles is pretty cool though.. the way they stack up the cartridges <-- eh? 09:58:09 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 fizzie, combined as in physically connect them? 09:58:29 (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 or what 09:58:31 Yes. 09:58:37 interesting 09:58:44 fizzie, so it is an expansion pack of sorts? 09:58:44 You stick Sonic 3 on top of the Sonic & Knuckles game. 09:59:05 or can it be used standalone? 09:59:07 You can also stick other cartridges there, and usually get to play one of the "collect the spheres" bonus levels. 09:59:12 It works as standalone too. 09:59:15 fizzie: I'm imagining you just sort of balance them on top of each other. 09:59:35 fizzie, that is probably an unique system they had there 09:59:37 Vorpal: But when you have Sonic 3 plugged in, you can play through the levels of both in one seamless "story". 09:59:59 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 "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 I hate reddit. 10:00:21 ... 10:00:34 elliott, that... is just stupid? 10:00:42 yeah UTF-8 is a vastly superior alternative to Unicode 10:00:48 XD 10:00:48 It's half the bits. 10:00:50 lol. it sounds like politics 10:00:58 fungot: Politics! 10:00:59 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 elliott, there are so many things wrong with that stuff 10:01:15 the trick is that you need only the bottom half of a '0' to distinguish it from a 1 10:01:18 fungot, fisheries? Are you talking about that game too? 10:01:18 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 and you don't need the flag or the little base on the '1' neither 10:01:27 so that's some serious space savings 10:01:38 Yay, the guy finally accepted my MONADS. 10:01:43 M O N A D S 10:02:26 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 Rabble! 10:02:56 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 Rabble rabble rabble! 10:03:31 fizzie, heh 10:03:41 fizzie, and hyper sonic does what? 10:03:54 It's like Super Sonic, except more. 10:03:57 (also super sonic? Nintendo can't have been happy with that one) 10:04:23 "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 i wanna take back my comments about post-megadrive/genesis sonics 10:06:37 itidus21, oh? 10:06:53 since i have indeed not played any, or looked in depth into the question 10:07:03 right 10:07:11 shachaf: Help!! The anti-ByteString-for-Unicode contingent is failing!! 10:07:17 itidus21, I looked at some lets play of the last one at least 10:07:33 elliott: Hey, man, I did my part. 10:07:36 I'm not getting involved. 10:07:40 (Any more.) 10:07:41 i had some kfc and i upset my teeth 10:07:48 Doctor's orders. It's bad for my mental health. 10:08:13 shachaf: IM CRYIN;G 10:08:19 -!- cheater has quit (Ping timeout: 255 seconds). 10:08:22 ok i have an idea 10:08:32 elliott: Just... Ignore. 10:08:38 Let them use their ByteStrings for text. 10:08:44 shachaf: They should have merged that Text/UTF-8 stuff just to shut people up about it. 10:08:49 shachaf: Help!! The anti-ByteString-for-Unicode contingent is failing!! <-- what is it about? 10:08:51 ByteStrings for breakfast. 10:08:54 people will never shut up about anything 10:09:06 what about including the data to describe each character in the beginning of the document 10:09:50 ... 10:09:56 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 or something 10:10:13 Like, uh, a PDF file with embedded fonts? 10:10:33 aren't ByteStrings mostly for handling (large) amounts of binary data? As opposed to actual text? 10:10:37 kmc, elliott GreaseMonkey (does GreaseMonkey want on the list?) update 10:10:39 hmm embedded fonts yeah, thats the word i didnt know until now 10:10:39 I think 10:11:05 hi kmc 10:11:05 you could use embedded fonts on every document :D 10:11:11 I'm glad elliott GreaseMonkey got updated 10:11:20 itidus21, you usually embed the used subset of the font in .pdfs 10:11:22 he was getting so rusty 10:11:24 hi elliott 10:11:27 totally unlike his formerly-greasy self 10:11:34 this must be how dogs see 10:12:16 ok so embedded fonts probably isn't the solution to unicode 10:12:21 this must be how dogs see 10:12:27 itidus21, obviously 10:12:27 unicode is a disease, we have the cure 10:12:33 the cure is that foreigners need to learn english 10:12:42 also mathematicians should quit their abstract mumbo jumbo and use real words 10:13:07 elliott, what? Through recursive quotations? 10:13:40 we will convert to ASCII and use the other 128 bytes to encode a series of pleasing softcore pornographic images 10:13:54 kmc, why softcore? 10:14:05 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 fizzie, *waits* 10:14:36 the set of all mathematicians should define a mapping of abstract mumbo jumbo words to real words 10:14:45 ah there 10:14:45 itidus21, they have that 10:14:49 it's called "learn math" 10:14:53 fizzie, what is it? 10:15:12 i was trying to rephrase " also mathematicians should quit their abstract mumbo jumbo and use real words" for irony 10:15:24 fizzie, there is the sonic stuff, and a game genie, what are the rest? 10:15:47 unicode is a disease, we have the cure 10:15:47 the cure is that foreigners need to learn english 10:15:51 i have seen people express this opinion seriously 10:15:56 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 ah 10:16:28 and the thing between that an the game genie? 10:16:41 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 elliott, sure 10:16:51 fizzie, also: what happened if you put a sonic & knuckles in another sonic & knuckles? 10:17:00 people will also express seriously the opinion that the jews should be rounded up & killed 10:17:04 Vorpal: It exploded. 10:17:10 elliott, really? 10:17:17 Vorpal: I think there are two Sonic & Knuckleses in that pile. 10:17:20 ah 10:17:22 yes indeed 10:17:36 I'm not sure if that tower would actually run, but it looks fancy. 10:17:40 in Germany it is illegal to disparage Unicode 10:18:03 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 i have seen people express this opinion seriously <-- ouch 10:18:48 it would be more cool if the combined object resembled a humanoid robot with a sword 10:19:07 Vorpal: Here's another confusing contraption: https://img.skitch.com/20111206-bg8k8khjfknd7siqbj825nph18.jpg 10:19:40 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 fizzie, not quite as absurd 10:20:08 this is what it should resemble http://gadgetsin.com/uploads/2011/11/robot_shaped_4_port_usb_hub_3.jpg 10:20:36 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 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 fizzie, no description offered on the page it was on? 10:22:23 No, it was a second-hand find. 10:22:27 ah 10:22:32 fizzie, same for the other picture? 10:22:53 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 also that cleaning system thingy looks highly suspect. Cleaning what. 10:23:18 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 n) and then Sonic 3. Also, a Sega CD to the side." 10:23:37 "About the biggest functional stack you could have would be Console + Sega CD + 32x, +Game Genie + Sonic & Knuckles, + another cart. 10:23:37 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 heh 10:24:54 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 That would probably look even more ludicrous. 10:25:14 heh 10:25:34 "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 Aw. 10:25:41 fizzie: I'm imagining a project to plug as many pieces of tech into each other as possible. 10:26:03 Like, start from a laptop with a shitload of USB hubs, then USB adapters to everything, ..., TV, console, catridge, ... 10:26:07 You could fill a house with it. 10:26:09 I don't really think 32X would run (at least for long) with batteries, anyway. 10:26:42 It's got 30 minutes of battery life with non-rechargable batteries, anyway. :p 10:27:01 fizzie, heh 10:27:33 did anyone ever make a laptop that's powered by a small internal combustion engine 10:27:40 kmc: Hi, how can I create a list with an immutable length please? 10:27:50 like the ones on model aircraft 10:27:52 elliott, hm, you could probably do even more with a desktop 10:28:13 #esoteric: All the frustration of #haskell, with none of the good parts of #haskell! 10:28:34 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 2 in the front, 1 in the back 10:28:48 shachaf: Yep! 10:29:01 kmc, that sounds more like a laptop? 10:29:08 except it would be the side there 10:29:22 oh wait, misread the context 10:29:22 They've had some fuel cell laptop prototypes, but that probably doesn't count as a combustion engine. 10:29:33 now merijn will guess not only the question but the entire backstory of the question-asker 10:29:43 haha 10:29:50 kmc: elliott: I suspect python experience, because python's tuples are essentially immutable lists 10:30:39 elliott, the most USB ports I ever seen on a laptop was 6 hm. 2-4 is more usual 10:31:02 Vorpal: Thus the hubs. 10:31:17 elliott, yes but there is a limit to the number of devices on a single host controller 10:31:19 127 iirc 10:31:39 elliott, since every port on my desktop has a separate host controller that means a lot more devices 10:31:49 Vorpal: I never said it had to work. 10:31:54 elliott, oh 10:31:58 I assumed it had to 10:32:09 Well, it would be cooler. 10:33:38 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 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 but I believe the limit for firewire is 63 devices? 10:33:57 or some such 10:33:58 per chain 10:34:52 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 let's fill the planet with interconnected computers 10:35:23 fizzie: Well, you want to optimise for the number of different device-types. 10:35:25 i call it "the internet" 10:35:28 kmc: Some kind of... internetworking? 10:35:31 Vorpal: They make those clevur eSATA/USB hybrid ports into laptops too these days. 10:35:42 oh yes I have one or two eSATA ports too 10:35:47 none of the hybrid ones 10:35:53 (on my desktop) 10:36:01 (no such thing on my laptop, it is too old) 10:36:13 (like, uh, almost 3 years) 10:36:19 "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 "You'll plug your eye out?" 10:36:39 s/\?/!/ 10:36:44 fizzie, what? 10:37:10 The "at your own risk" makes it sound like that. 10:37:17 also what about that new intel/apple thingy. The uh, lightsomething 10:37:20 forgot the name of it 10:37:28 Thunderbolt. 10:37:31 ah 10:37:38 elliott, I'm pretty sure it used to be lightsomething 10:37:41 did they rename it? 10:37:48 Thunderbolts and lightning, very very frightening. 10:38:09 Light Peak was a codename for it. 10:38:11 does anything use it (apart from apple products)? 10:38:13 fizzie, ah okay 10:39:30 http://www.youtube.com/watch?v=YmCVYbTWU60 10:41:10 -!- cheater has quit (Ping timeout: 255 seconds). 10:42:39 hm they dropped the actual fibre stuff? How boring 10:43:08 Can't send power over fibre (yet). 10:43:28 But yes, it's just boring copper. 10:43:35 fizzie, yes you could by using a solar cell thingy at the end :P 10:43:59 but more seriously you could use fibre for the data and copper for the power in the same cable 10:44:54 it is not like you wouldn't need separate wires for data and power anyway 10:45:27 (well okay, you can do networking over the mains and such, but iirc performance is rather bad) 10:46:50 1-wire does it 10:47:15 Copper is also cheaper, which is probably the more important reason. 10:47:29 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 dallas 1-wire 10:47:40 also how does it form a circuit? 10:47:43 and the data rate is not that high 10:47:49 it's 2 wires incl. ground 10:47:53 ah right 10:47:59 there's a ground wire and a power/data wire 10:48:25 kmc, anyway for high speed connections (over copper) you usually use differential signaling afaik 10:48:30 yeah 10:48:49 I wonder how that works for stuff like networking over the mains 10:48:59 you can't really do that there 10:49:10 Not quite 2x2x10Gbps over 1-wire, I don't think. 10:49:27 indeed 10:49:58 what sort of data rate does 1-wire have? I would guess in the range of kbps 10:51:25 also youtube just spazzed out. It now says that every video was uploaded 42 years ago for me 10:51:26 wtf 10:51:44 (in the channel video list thingy) 10:51:50 (the date on the actual video is correct) 10:51:57 wait no, they are not correct 10:51:59 they are all today 10:52:01 okay wtf 10:54:40 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 ah 10:55:28 do they transmit only around the AC zero crossing, or all the time 10:55:31 fizzie, xDSL uses phase modulation iirc? 10:55:51 (which I have to admit I have no clue how it works) 10:56:37 kmc: I know of that thing solely thanks to menuconfig. 10:56:59 elliott, ah yes that is where I have seen 1-wire before 10:57:01 thanks 10:57:38 hmm, that was fun 10:57:43 going over past exam questions in a tutorial 10:57:49 there was a "spot the six mistakes in this code" question 10:57:51 and we found nine 10:57:54 :D 10:58:34 ais523, were three of them much less obvious than the other 6? 10:58:57 I don't think so 10:59:02 strange 10:59:03 although some of them stemmed from the same root cause 10:59:08 ah 10:59:16 there was an array that wasn't initialized at all, and initializing it just brought up more problems 10:59:28 which language was it? 10:59:38 Java 10:59:41 hm 10:59:51 but it would have been the same in C, apart from the different syntax for allocating an array on the heap 11:00:56 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 quite possible 11:03:43 -!- cheater has quit (Ping timeout: 248 seconds). 11:07:00 At least QAM is used, and that's sort-of amplitude-and-phase-modulation. 11:08:10 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 fizzie, QAM? 11:08:46 oh "Quadrature amplitude modulation" 11:08:51 wth is that 11:09:04 It's what they use very much. 11:09:09 right 11:09:33 Deewiant, ais523 was looking for a funge tutorial? Why? 11:10:02 hm how many esolangs have tutorials? 11:10:04 Vorpal: email request 11:10:13 heh 11:10:17 ais523, due to IFFI? 11:10:21 no 11:10:25 due to me being known as an esolanger 11:10:28 ah 11:10:41 I can't think of a single esolang that I know of any tutorial for 11:11:15 ais523, are there intercal tutorials? 11:11:22 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 Vorpal: one unfinished one by Clinton Forbes 11:11:40 fizzie: I meant a null pointer where an array should be 11:11:44 heh 11:12:07 I've been wondering about writing one myself, but I'm not sure if there's an audience 11:12:13 perhaps I'll write a monad tutorial instead to annoy elliott 11:12:32 ais523, I might read it. Actually being able to code in intercal would be cool 11:12:55 ais523: Does that "unfinished one" equal the "Diving into INTERCAL" blog? 11:13:09 Oh, the name's at the end of the comments; apparently so. 11:13:26 fizzie: yes 11:13:43 Vorpal: I think the author got lost right around when he tried to make a non-infinite loop 11:13:44 So which animal would the O'Reilly INTERCAL book have? 11:14:09 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 different in nature, rather than just a different animal 11:14:48 O'Reilly has quite a few non-animal books already. 11:15:20 oh, in that case, it'd have to just not have a cover at all 11:15:42 They have a set of "X Hacks" books which have tool covers, for example. 11:15:48 perhaps I'll write a monad tutorial instead to annoy elliott 11:15:56 ais523: Is "annoyance" an appropriate description of a murder? 11:16:06 * Sgeo had alcohol in his mouth :/ 11:16:09 Sgeo: You am will die now. 11:16:22 -!- cheater has joined. 11:17:02 So which animal would the O'Reilly INTERCAL book have? 11:17:05 An alot, perhaps? 11:17:09 fizzie: Also you SPACED AFTER THAT QUESTION AGAIN. 11:17:20 IT KEEPS HAPPENING. 11:17:24 fizzie: Should I set up a bot that does annoying things on "\? $"? 11:17:26 Perhaps even: happening. 11:17:30 That might help you kick the habit. 11:17:32 elliott, why do you care about that space? 11:17:37 Vorpal: It's bad for him. 11:17:40 elliott, why 11:17:48 it's not as bad as the enigma punctuation style ! 11:17:57 Vorpal: Stop being irresponsible. 11:18:02 ais523: Isn't that just French? 11:18:11 elliott, no I'm curious. 11:18:40 elliott: perhaps, but it still gets on my nerves slightly 11:18:47 especially when sentences I write, in English, are corrected to it 11:18:56 ais523: wat 11:19:04 hmm, I wonder if there are Funge-98 tutorials in the #esoteric logs 11:19:09 Why do the There She Is animations take so long to load? 11:19:19 elliott: a level I submitted to Enigma is officially called "Choices, choices ..." 11:19:38 ais523: :( 11:19:41 ais523: kill them all 11:20:00 * Sgeo should play Enigma 11:20:10 Sgeo: do 11:20:13 even if development is mostly dead 11:20:13 Is it annoying to play with a touchpad? 11:20:20 I got used to it surprisingly quickly 11:20:25 it does take some getting used to, though 11:20:41 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 ais523, I never managed to play it with a trackpoint 11:21:13 and you need that tweaking when using the mouse depending on the level 11:21:16 a trackpoint sounds perfect for enigma 11:21:41 elliott, it really isn't 11:21:51 elliott, the level of control is too low 11:22:01 as in, not exact enough 11:22:31 `pastlog funge 11:22:32 Why are there so few trackballs around? I want to fondle some balls. :/ 11:22:44 fizzie: we have a trackball on the desktop at home, because there isn't enough table space for a mouse 11:22:56 thumb trackball, I find them much superior to the finger-controlled versions 11:23:06 No output. 11:24:06 " 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 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 ais523, how do they compare to mice? 11:24:17 oklofok: i was looking for something a little snappier 11:24:21 apparently ais523 already answered 11:24:38 fizzie: The privilege of fondling balls is restricted to the chosen few. 11:25:19 Vorpal: easy to use but slightly slower 11:25:44 easier to use in what way? Better precision or what? 11:26:06 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 Gah, I can't find even a picture of the horizontal-rod thing. What *are* they called? 11:26:09 and I didn't say easier to use 11:26:16 just, they aren't massively difficult to use 11:26:29 ah 11:26:31 I misread 11:26:32 sorry 11:26:33 `pastlog funge 11:26:36 `pastlog funge 11:26:38 `pastlog funge 11:26:39 `pastlog funge 11:26:41 `pastlog funge 11:26:43 what 11:26:48 `echo test 11:26:51 Vorpal: trying to find funge tutorials in the logs 11:26:59 -98, that is 11:27:01 ais523, I doubt spamming it helps 11:27:07 No output. 11:27:08 Vorpal: I wanted five different results 11:27:19 ais523, I thought pastelog includes all 11:27:25 "past", not "paste". 11:27:27 test 11:27:30 oops 11:27:36 No output. 11:27:47 Seems what you got was five similar results, sadly. 11:27:47 pastelog's an interesting thought 11:27:48 might be too much output, though 11:27:51 I'll try anyway 11:27:53 `pastlog funge 11:27:53 `pastlog funge 11:27:53 `pastlog funge 11:27:53 `pastlog funge 11:27:53 `pastlog funge 11:27:54 `pastlog funge 11:28:04 c Gah, I can't find even a picture of the horizontal-rod thing. What *are* they called? 11:28:06 fizzie: Roller mice? 11:28:19 Yes. 11:28:25 Apparently. 11:28:26 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 I'd'nvr've thought. 11:28:45 ("never" is not really easy to stick in like that.) 11:28:49 is it undecidable whether you reach the final config from the initial one? 11:28:55 fizzie: I'd'ne'er've thought. 11:29:31 No output. 11:29:47 we need this for a paper, but i don't know anything about minsky machines because computer science is such bleh :/ 11:30:23 No output. 11:30:23 No output. 11:30:23 No output. 11:30:28 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 oklofok: sorry we're all programmers here try #computejerisjojicience 11:30:33 oklofok: what do you mean by injective, here? 11:30:48 ais523: all configs that have successors have different successors 11:30:59 so all except the final config that doesn't have a successor. 11:31:29 ah, I was going to pigeonhole principle it, but then realised there are infinitely many states (obviously) 11:31:41 No output. 11:31:41 No output. 11:31:43 No output. 11:31:44 well infinitely many configurations 11:31:45 No output. 11:31:45 No output. 11:31:52 -!- pikhq has joined. 11:32:24 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 where's the logs repo? 11:32:42 I'll do this on my local machine, easier that way 11:32:55 -!- pikhq_ has quit (Ping timeout: 252 seconds). 11:33:15 ais523: !logs 11:33:20 from this we'd get that stability of a CA from a zero entropy SFT is undecidable 11:33:20 !logs 11:33:38 by running the machine backwards and some magic 11:34:04 thanks 11:34:55 oklofok: I don't see an obvious reason why reversibility would suddenly make termination decidable in an infinite-state program 11:34:59 but ofc that's not the same thing as a proof 11:36:40 reversibility certainly doesn't, but the specific problem statement might. 11:37:10 reversible minsky machines have a lot of undecidable problems, but we need a concrete reduction 11:37:17 oklofok: wait, how many counters does this machine have? 11:37:33 as many as you like. two will suffice. 11:37:42 (two always suffices) 11:37:45 right, ofc 11:37:49 oklofok: zero, one, infinity 11:38:10 that doesn't apply when you can prove something different happens at 2. 11:38:21 ais523: http://www.reddit.com/r/haskell/comments/ob9oj/til_about_planethaskellorg/c3g3rfp?context=1 11:38:25 elliott, this one is way better: http://hpaste.org/56369 11:38:26 ais523: you know what you have to do... 11:38:27 but we're not restricting the counters anyway. 11:38:49 kmc: you need pseq, not seq 11:38:51 given various assumptions about GHC, it even won't segfault 11:38:54 F- sloppy 11:38:57 sux 11:38:57 (I think) 11:39:01 you're right though 11:39:04 * kmc hangs head in shame 11:39:07 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 (zero entropy sofic subshift) 11:39:42 . o O ( unsafePerformIO ( evaluate x >> return y ) ) 11:39:58 it will be so awesome and no one will ever read it :) 11:40:00 kmc: isn't that just pseq but slower 11:40:09 oklofok: heh 11:40:13 sometimes I feel that way about my papers 11:40:16 unsafePerformIO (return $! x >>= return >> return y) -- i cba to expand it beyond this 11:40:26 unsafeDupablePerformIO ( evaluate x >> return y ) 11:40:31 hmm, no, pseq uses that lazy trick 11:40:38 fix (>=> return) 11:41:25 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 anyway i think this one is almost a reasonable api for users 11:41:40 except just# nothing# == nothing# 11:41:47 (4 are required, 3 would probably be tolerated) 11:41:49 kmc: just special-case nothing# in just# 11:41:55 bleh 11:42:00 kmc: by dynamically allocating new nothings 11:42:04 too many pigeons, not enough holes 11:42:13 i wonder if elliott will love me if i do two phds this year. 11:42:22 oklofok: y 11:42:24 oklofok, at the same time? 11:42:30 kmc: yes. 11:42:34 -- A nullary constructor gives a distinguished boxed value. 11:42:34 data Nothing# = Nothing# 11:42:38 note that i'm planning to do 0 11:42:38 kmc: so if it's boxed what does the # represent 11:42:40 * kmc has never "done" anyone with a PhD 11:42:48 elliott, dope 11:42:55 2003-09-25 15:50:10: I'm afraid I'll end up writing a mathematica-based befunge interpreter. happens with every new language I learn. 11:43:04 kmc: ah 11:43:29 ais523: Never did. (Or if I did, I've forgotten about it.) 11:43:33 man now i'm embarrassed i've never slept with anyone who has a graduate degree 11:43:41 much less two of them at the same time 11:43:42 good, I'm vaguely glad you didn't 11:43:53 seems my hatred for mathematica is greater than my love for befunge 11:44:17 kmc: does masturbation count? 11:44:18 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 well i don't have a graduate degree, so no 11:44:43 i know, someone without a PhD, programming Haskell 11:44:45 you can't make the rules based on whether you would win o_O 11:44:47 "Earn Earn Earn Earn Money Money Online Poundpyramid.com" 11:44:47 sounds impossible but here i am 11:44:54 that doesn't look like a plausible search query… 11:45:27 kmc: did you at least get your degree in haskell 11:45:33 the most academic of subjects 11:45:48 the nonexistent degree? 11:45:49 ais523: i know i want to earn earn earn earn money money online poundpyramid.com 11:46:00 poundpyramid.com sounds legit enough 11:46:19 it's a pound scheme 11:46:31 oklofok: possibly is, spambots often spam the names of legit sites to try to beat them in the search rankings 11:46:46 so many people search for a site rather than just visiting it… 11:47:37 ais523: it's squatted 11:48:09 (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 (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 2004-09-14 21:49:24: what's rms? 21:51:31: ZeroOne: richard stallman, stallman.org 11:48:27 wow 11:49:10 elliott: also, 2004-11-04 is an awesome log, read all of it (it's also very short) 11:49:43 well, it's certainly short 11:50:05 2004-11-05 is in the same "genre". 11:50:25 ais523: haha, two days later slava joins 11:50:32 who's slava? 11:50:37 ais523: pestov 11:50:42 ah, right 11:50:47 I have heard of him, but can't remember why 11:50:48 hmm, jDoctor, I remembe that name from old #concatenative logs... I guess it must have been mentioned there 11:50:50 ais523: jEdit, Factor 11:50:55 ah, OK 11:51:00 I remember now 11:51:30 hmm, this channel really has got more active over time 11:51:33 even though it feels like less 11:51:37 it's got less ontopic, though 11:51:46 03:35:33: i'm working on stack effect inference for postfix languages 11:51:46 hehe, factor has that 11:51:54 ais523: feels like less? 11:52:01 the last time people said this channel was dying was like 2005 11:52:08 elliott: I don't think it's less active 11:52:15 just that I have rose-tinted memories of it 11:52:24 come to think of it, I probably considered bsmnt_bot ontopic 11:52:45 ais523, are you talking about activity as number of lines said or number of persons saying stuff? 11:52:51 oh heh, just came across Gregor's first visit to the channel, advertising FYB 11:52:57 Vorpal: pretty much any plausible metric 11:53:04 even absolute amount of ontopic conversation, possibly 11:53:04 because elliott talks a lot (and so did I use to, I think I'm less active these days) 11:53:07 (rather than proportion) 11:53:10 and so do I 11:53:14 The number of "q" letters spoken. 11:53:25 08:28:34: why do you have those discussions at 05-06am? 11:53:25 08:39:28: I don't 11:53:25 08:44:29: 05:50:44 < heatsink> ooh, you do continuations too! 11:53:25 08:44:32: see, with proof. 11:53:37 fizzie, you should do a new graph showing who spoke most during the last year or so 11:53:38 elliott: I hadn't heard of time zones yet. 11:53:46 fizzie: :D 11:53:48 They're so confusing. 11:53:59 It's now... but it's not now now somewhere else. 11:54:06 It's, like... not now. Now. 11:54:13 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 Also it could be yesterday or tomorrow now. 11:54:26 elliott, hah 11:54:28 *mind blown* 11:54:29 fizzie: It is. 11:54:48 22:22:04: anybody thought about building a smart compiler that could optimize by replacing poor algorithms with better ones? 11:54:48 22:22:44: so if the programmer has used e.g. bubble sort the compiler would detect that and actually use quick sort 11:55:10 sufficiently genius compiler 11:55:13 isn't it always two dates on earth except in one specific instant? 11:55:25 probably would be mostly useless, because it's easier to just use library sort rather than implement it yourself 11:55:31 (per 24h period of course) 11:55:35 Vorpal: no, sometimes it's three 11:55:38 22:31:20: not related, but mooz could perhaps say something here about his "random programs" experiments. 11:55:38 22:31:37: hmm 11:55:38 22:31:40: it's esoteric enough. 11:55:38 22:32:14: apparently he keeps finding composite-number-factoring algorithms at a surprisingly high rate. :p 11:55:42 there are timezones that are more than 24 hours off UTC 11:55:42 fizzie: do tell, eight years later 11:55:47 ais523, oh okay 11:55:55 ais523, then I guess there are always 2 or 3 ones then 11:55:58 maybe the compiler could identify pieces of code that seem to remake an stdlib algo and give a warning though 11:56:12 ais523, also you mean 12 hours off? 11:56:17 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 oh, the channel turned 9 years old last month 11:56:45 elliott, oh nice, and we completely missed the bday 11:56:53 elliott: has it been logged from the start? 11:56:58 ais523: almost 11:57:04 fizzie: I thought there were 11:57:11 oh, I must have meant more than 12 11:57:19 indeed 11:57:26 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 anyway why more than 12 hours off? That is just silly 11:57:37 oh -- 8 dec was in UTC-0800 11:57:45 so yeah, 9 dec 11:57:46 hmm, befunge.org was all the rage back in 2005 11:57:50 fizzie: when are your early logs from, again? 11:57:51 Vorpal, 'cause it sucks if your neighbors are on a different day from you 11:57:53 and now it's been gone so long people can't even be bothered to squat it 11:58:04 either that, or fizzie is hanging onto the domain but isn't using it for anything 11:58:07 Vorpal: It goes up to UTC+14 in one direction, but only UTC-12 the other. 11:58:08 kmc, hm 11:58:16 ais523: he noted it was going to be dropped in here 11:58:17 14? wow 11:58:18 ais523: No, I let it expire. 11:58:43 in that case, I'm shocked it isn't being squatted 11:58:50 I thought expired domains got squatted forever just i ncase 11:58:51 like the Chatham Islands are 45 minutes ahead of New Zealand rather than 23 hours 15 minutes behind 11:59:19 fizzie: so /did/ you ever teach your girlfriend befunge? 11:59:36 kmc, 45 minutes. So not even full hour steps... 11:59:42 "Disagreed. In my way of thinking, scopes are static, and I/O is no more 11:59:42 in violation of scopes than passing of parameters or other such phenomena." 11:59:43 "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 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 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 languages that definitely should stay in wikipedia, are in my opinion the following: brainfuck, befunge, thue, malbolge, unlambda 11:59:53 ais523: seems like esoteric discussion being off-topic dates back to the lists :P 12:00:14 elliott: remember when we were discussing the list of top-stream esolangs? 12:00:19 (UTC+14) 12:00:30 Vorpal, yeah, half-hour timezones are pretty common; 15 minute less so but there are some 12:00:35 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 fizzie: Well, there are about ~40 days from the founding of the channel to clog. 12:00:50 also, whitespace, false and shakespeare were suggested in that conversation 12:00:59 ais523: err, which list? 12:01:10 kmc, I want a 2.512 minute timezone. 12:01:10 :D 12:01:24 oh 12:01:25 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 elliott: we were discussing a while back a list of esolangs that were best-known or most worthy of study 12:01:27 (or any other similarly small offset) 12:01:33 the classics of esolangs, as it were 12:01:41 ais523: my list was brainfuck, intercal, unlambda, underload, malbolge, I think 12:02:00 ais523: I'd add /// and BCT, personally 12:02:02 and strongly reject Thue 12:02:08 even if it is more well-known than /// 12:02:10 Vorpal, a few countries have declared their timezone to be centered on the capital 12:02:15 my list is toi, clue and oklotalk. 12:02:18 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 ^__^ 12:02:28 oklofok: oklopol-clue, or keymaker-clue? 12:02:36 ais523: keymaker-clue obviously 12:02:42 oklopol-clue is just silly 12:02:42 i've heard rumors of a Riyadh Mean Solar Time which adjusted every day based on sunrise in Riyadh 12:03:00 kmc, heh 12:03:01 one of the few timezones so fucked it's not in the tz database 12:04:13 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 Ooh, predecessors. 12:04:22 I don't think I ever joined *that*, though. 12:04:32 fizzie: "I can also". 12:04:46 fizzie: I imagine he joined it just because of that message. 12:04:53 And left the next time his IRC client restarted. 12:04:53 kmc, I first read that as Rlyeh 12:04:54 XD 12:05:14 haha 12:05:55 R'lyeh standard time. I wonder what that would be like 12:06:56 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 atehwa: ELABORATE 12:07:41 fizzie: I bet there's a flourishing esolangs community on some other network that we've just never heard of. 12:07:48 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 ... 12:07:55 :D 12:07:58 it's practically guaranteed now. 12:08:02 yes 12:08:05 oh dear fuck 12:08:18 http://stackoverflow.com/questions/8834582/is-haskell-a-lisp-dialect 12:08:33 someone actually voted that up 12:08:43 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 "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 no 12:10:16 i have a feeling that article is very bad 12:10:26 idea: esolang that's forward-polish, but not because it parses forward-polish, rather because it has a stack of functions 12:10:30 i was wondering if i'm just misunderstanding the sentence it fundamentally 12:10:51 just like you do reverse-polish with a stack of values 12:11:00 hmm, now I'm wondering if you could make it concatenative 12:11:02 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 oklofok: it fundamentally 12:11:04 and thus a sort of dual to Underload 12:11:04 i guess it often does require some intuitive leaps: "well brainfuck can simulate itself so obv it's tc" 12:11:19 elliott: yes not just fundamentally but IT fundamentally 12:11:23 oklofok: there are sub-TC languages that can simulate themselves 12:11:28 Text, for example 12:11:33 yeah 12:11:41 and you'd need quite an intuitive leap to prove it tc 12:11:49 Chris, you're saying a lot of silly things in this mailing list archive. :/ 12:11:51 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 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 what if there's life outside earth? :O that would be even worse 12:13:09 elliott: do you consider Ruby a Lisp dialect? 12:13:23 ais523: all languages are lisp dialects, apart from scheme 12:13:26 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 scheme is a clojure dialect 12:14:08 CAN SOMEONE PLEASE EXPLAIN TO ME WHY SOMEBODY UPVOTED THAT QUESTION, CHRIST 12:14:41 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 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 Vorpal: educated stupid 12:15:05 i've seen a channel where there was so much traffic that your messages appeared hours after you sent them. 12:15:13 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 there were only 4 ppl there though 12:15:46 Vorpal: #ubuntu, #archlinux and #debian were the only ones in my LIST >1000 of a moment ago. 12:15:59 Still all Lunnux distrubtions. 12:16:16 LIST supports queries like that? 12:16:21 fizzie, hm I guess #ubuntu has grown, back when I checked it and #gentoo were about the same size (~950) 12:16:24 oklofok: was it vjn 12:16:32 freenode LIST does. 12:16:39 elliott: part of it 12:16:40 and yes #archlinux is quite large 12:16:41 freenode? More like linuxnode, amirite? 12:16:51 Vorpal: #gentoo is only 852. 12:17:07 what's the second most popular linux distro? 12:17:11 elliott, nowdays yes 12:17:20 elliott, it used to be larger 12:17:23 it was on my irc server, my friend made this rpg and people spammed a few megabytes of commands there. 12:17:38 #pyt "NO LOL" hon has 923 people on it. 12:17:46 huh 12:17:54 no lol! 12:17:59 fizzie, on which network? 12:18:02 wow, the phone spambot that keeps contacting me seems to have hired a bunch of new voice actors 12:18:10 Vorpal: This one. 12:18:11 fizzie, oh #python 12:18:14 not #pyt 12:18:15 unless it's two different spambots that just happen to use the same script 12:18:16 right 12:18:41 Vorpal: Yes, I wanted a "firstname 'nickname' lastname" format, so had to split. 12:18:49 ais523, you get spam over your phone? ouch 12:18:57 oh right, did the wire-crossing problem ever turn out to be meaningful? 12:18:59 Vorpal: only at work 12:19:15 still wow 12:19:16 I was interested in it when I got into esolangs, and invented EL1 and Formula 12:19:21 fizzie: #pyt"NO LOL"hon is the best way to do that. 12:19:31 fizzie: Or #python "NO LOL" #python. 12:19:38 #python 923 NO LOL | NO PROJECT EULER | [...] 12:19:40 wow 12:19:45 why do they hate project euler? 12:19:53 With that many people, you have to rule with an IRON FIST. 12:19:59 because it sucks 12:20:18 lol can some1 help me with project euler #1 12:20:21 heres my code 12:20:25 class Euler: 12:20:26 do it 12:20:28 i'll join too 12:20:29 def __init__ 12:20:29 12:20:30 12:20:30 -!- ais523 has set topic: "NO LOL | NO PROJECT EULER" | http://codu.org/logs/_esoteric/. 12:20:31 where 12:20:34 if x=4 : 12:20:35 12:20:36 12:20:38 12:20:58 elliott, wth is up with the blank lines? 12:21:06 lazy 12:21:24 -!- oklofok has changed nick to oklopol. 12:21:33 cpressey: ever consider a timecube esolang? 12:21:57 elliott: what's the question? 12:22:00 i'd love to help 12:22:03 Hello tobegnuf: 12:22:08 http://projecteuler.net/problem=1 12:22:14 ah, fungot's long-lost distant relative 12:22:16 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 ais523: fungot isn't the first funge-98 bot? 12:22:30 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 00:09:37: JOIN 12:22:37 00:09:38: Hello xij 12:22:40 " 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 elliott: it's unclear whether fungebot was -98 or -93 12:22:46 ais523: lmao 12:23:28 if i solve a problem i immediately start running to keep my state of blissful thinking i did it rightness. 12:23:56 Perhaps it's a time-traveling fungot. 12:23:57 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 ais523, hm when was that funge bot from? 12:24:13 `pastlog 12:24:21 already gone way past that page 12:24:22 "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 12:24:23 1 12:24:23 12:24:24 that doesn't echo to the channel 12:24:24 I disagree, but what was the argument the authors gave? – Tobu Jan 14 '11 at 22:24 12:24:26 2 12:24:28 12:24:32 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 ais523, and did it use netcat or SOCK? And can anyone find the source? 12:24:37 `pastlog 12:24:39 ais523: did you remember to use -i? 12:24:42 2005-07-19.txt:00:14:18: Hello }^nevaR^{ 12:24:44 hmm, it's going to take me a while to check every mention of befunge in the channel ever 12:24:48 2005-07-19.txt:00:14:18: Hello }^nevaR^{ 12:24:49 hm 12:24:51 -!- elliott has changed nick to }^nevaR^{. 12:24:51 elliott: yep 12:24:52 okay 12:25:02 ais523, do you know who made it? 12:25:04 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 Vorpal: jix 12:25:18 ah 12:25:21 To think, that I missed a fungebot. :/ 12:25:22 }^nevaR^{: you never asked #python for help with your problem 12:25:24 who is here right now 12:25:26 <}^nevaR^{> fizzie: You weren't around much circa 2005, were you? 12:25:26 so you could ask him 12:25:27 <}^nevaR^{> oklopol: sry 12:25:31 <}^nevaR^{> ais523: constantly idle 12:25:48 hmm 12:25:48 -!- cheater has joined. 12:25:51 a nickping sometimes works 12:25:55 and a /msg sometimes works if a nickping doesn't 12:26:07 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 Consider it noted. 12:26:38 jix tried to do something with thue once and failed. i don't recall what. 12:26:59 00:36:55: Could you write this exact line to this channel? 12:27:00 00:37:46: Could I write what exact line to this channel? 12:27:11 the joys of IRP quines 12:27:21 it was back when that was not trivial 12:27:32 }^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 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 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 fizzie, I thought you used a bouncer? 12:28:42 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 oklopol: In 2003-06 I probably was "working" (civil service) in Vankeinhoidon koulutuskeskus, if that counts. 12:28:56 -fizzie- VERSION bip-0.8.2 12:28:57 -fizzie- VERSION xchat 2.8.8 Linux 2.6.35-31-generic [x86_64/2.00GHz/SMP] 12:28:57 -fizzie- VERSION irssi v0.8.15 12:28:57 hm 12:28:59 probably yes 12:29:10 oh that counts. 12:29:16 that counts to fucking million. 12:29:24 Vorpal: Nowadays; but only since 2009-03; before that, irssi. 12:29:29 ah 12:29:35 fizzie, bip is a bouncer is it? 12:29:43 oklopol: could you translate for the non-finns in the audience? 12:29:52 Vorpal: Yes. (Not that I had a disconnection habit with the irssi connection either.) 12:29:58 education center for taking care of prisoners. 12:30:00 heh 12:30:02 is a stupid translation 12:30:20 i don't quite understand what it means so that's the best i can do. 12:30:22 It's been renamed to Rikosseuraamusalan koulutuskeskus now, anyway. 12:30:33 fizzie, what is it for? 12:30:35 not sure how you educate taking care of prisoners 12:30:35 "The Training Institute for Prison and Probation Services" is the official translation. 12:30:36 fizzie: so were you sent there as a punishment? 12:30:42 yes 12:30:45 punishment for p 12:30:47 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 ais523: Civil service; it's an alternative for the regular compulsory military service. 12:31:07 fizzie, you still have conscription? 12:31:08 punishment for being a latent rapist 12:31:09 hm 12:31:10 fizzie: ah, I see 12:31:12 that is, male 12:31:29 oklopol: I don't know, females are convicted of rape sometimes 12:31:31 although much more rarely 12:31:39 yeah can you imagine :D 12:31:40 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 (typically the sort that involves drugs rather than physical violence) 12:32:05 oh right, INTERCAL's EOF handling is hilarious 12:32:08 "you CHEATED on me?" "no i was raped!" 12:32:11 ais523, oh? 12:32:14 is what that means. 12:32:15 (it crashes on EOF, with no way to catch the error or seeing it's coming) 12:32:38 ais523, so what do people normally do to avoid this? 12:32:38 Vorpal: We do, yes, unless you invent a proper excuse. 12:32:56 fizzie, like medical reasons? 12:33:02 Vorpal: they don't 12:33:08 heh 12:33:09 nothing you /can/ do about it 12:33:15 -!- }^nevaR^{ has quit (Quit: Leaving). 12:33:24 ais523, is this for c-intercal or clc-intercal? 12:33:29 you can do a lot of things. unless you're a perfectly healthy male. 12:33:33 fml 12:33:35 although it'd be fun to implement some way to catch the error 12:33:40 Vorpal: -72 12:33:43 ah 12:33:54 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 ais523, I assume neither ick nor clc crashes? 12:34:11 sure they do, it'd be incompatible otherwise 12:34:20 you can't not implement the spec 12:34:32 fizzie, pretty easy to join a suitable religion like a year before or such 12:34:47 and then leave it a bit later 12:35:02 Vorpal: I'm not sure if there are any recognized religions that'd forbid the civil service part. 12:35:08 hm 12:35:13 jediism? 12:35:16 I mean, it's a weird thing to forbid. 12:35:27 ais523, hm, is that starwars related? 12:35:39 non-military civil service isn't something I'd object to anyway, though, although I would object to the military version 12:35:45 Vorpal: yes, originally 12:35:52 it's a reference to the jedi census phenomenon 12:35:52 jehova's witnesses are exempt from all afaiu? 12:35:57 oh 12:35:59 right 12:36:04 where there was a worldwide movement to claim to be a jedi on censuses 12:36:12 heh 12:36:12 with the result that many countries ended up recognising it as a religion 12:36:18 ais523, really? :D 12:36:37 (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 Vorpal: that was the whole /point/ 12:36:54 ais523, I'm just a bit scared that it worked 12:37:15 oklopol: I think they are, yes. Also people living in Åland. 12:37:40 http://en.wikipedia.org/wiki/Jedi_census_phenomenon 12:38:03 ah, apparently no /official/ recognition; jediism was assigned a convenience number on the census processing thing because it was so popular 12:38:10 but that was apparently only to make statistics easier or something 12:38:50 ais523, do UK still do censuses? Sweden doesn't any more 12:38:52 In Scotland 14,052 people stated that Jedi was their current religion (14,014 "Jedi", 24 "Jedi Order" and 14 "Sith") 12:38:56 Vorpal: yes, but rarely 12:39:00 it's something like once every ten years 12:39:04 maybe once every five 12:39:05 hm 12:39:10 that is quite often 12:39:32 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 70-80 people per year, that is. 12:39:52 i've only encountered censuses in complexity theory 12:40:00 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 heh 12:40:27 fizzie: I wonder why they do that 12:40:39 seems a weird thing to make that heavy a stand about 12:40:46 err 12:40:58 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 not wanting to waste a year of your life is stupid now? 12:41:09 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 oklopol: aren't you still wasting it, just in jail? 12:41:25 The jail term is shorter. 12:41:30 ais523: less of it, and there's more freedom 12:41:32 ah, I see 12:41:38 Two days of civil service translate to one day of jail. 12:42:08 And with a very few exceptions they are in these "open prisons". 12:42:12 So you can study and whatever. 12:42:33 ais523, I would answer sith on such a question btw. 12:42:48 and more importantly, you don't have to do meaningless work 12:42:49 Vorpal: really? 12:42:53 like taking care of old people 12:42:57 ais523, sure, why not? 12:43:09 or learning to kill healthy people 12:43:25 fizzie: clearly the appropriate punishment should be community service, not a prison term 12:43:26 ais523, it is not like religion should be listed on a census form anyway 12:43:36 well the latter is not useless if you want to become a serial killer 12:43:50 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 why would they teach that? 12:44:13 what do you mean "around"? 12:44:18 oklopol: Before, and after. 12:44:19 ais523: in the army? 12:44:23 do you know what armies are for? 12:44:23 oh, I see 12:44:31 forgot about the army option 12:44:38 my mind excluded it as an option that nobody sane would take 12:44:47 oh. no not in the civil service 12:44:58 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 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 what about alternating days of civil service and prison? 12:45:46 i've always wanted to try prison out anyway but i don't actually want to commit a crime. 12:45:49 You can't go back from the prison to civil service. 12:45:52 "If Jedi were counted it would have been the second largest religion in New Zealand. T" 12:45:55 s/T// 12:46:23 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 It might be slightly different during the wintertime. 12:46:44 Oh, I think there was also some CPR training maybe? 12:46:58 I got a free tea+pastry coupon for maintaining Darkhive. 12:47:07 Managed to describe it as a cultural act. 12:47:27 fizzie, darkhive being? 12:48:43 2006-04-28 22:18:55: a funge would suit an irc bot well, i suspect 12:49:30 Vorpal: I don't have anything about fungebot anymore (and I don't remember working with it) 12:49:31 jix: You have 1 new message. '/msg lambdabot @messages' to read it. 12:49:32 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 jix, oh 12:49:46 jix, ais523 claimed you were the author 12:50:06 jix: well, it was only up there for a day, I assume you've just forgotten about it 12:50:15 fizzie, heh 12:50:18 or, hmm, maybe it was someone else 12:50:29 `pastlog fungebot 12:50:36 2005-07-19.txt:00:14:18: Hello }^nevaR^{ 12:50:45 `pastelog fungebot 12:50:53 -!- elliott has joined. 12:50:55 http://www.cs.uit.no/~daniels/PingTunnel/ 12:50:56 http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.5540 12:50:59 wasn't that the command? 12:51:06 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 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 00:06:08: i wrote a crappy ping less sub-minmal befunge irc bot that prints hello msgs with the nick reversed... 12:51:21 unless it's a different jix, it was you 12:51:29 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 ais523: oh then I probably did... 12:51:46 fizzie, heh 12:52:06 but I never did anything that would remotely qualify as a complete irc bot 12:52:06 fizzie: Now you gotta tell us why on earth you decided to write that. 12:52:16 elliott: Also http://thomer.com/icmptx/ 12:52:16 elliott: kerio is a fan of tunnelling all sorts of things over DNS 12:52:21 jix: don't worry, fungebot wouldn't 12:53:03 (ICMPTX and NSTX are I think related.) 12:53:17 fizzie: That guy has written a lot of freeloader internet-tunneling tools. :p 12:53:31 elliott: His mission in life is to mooch for free stuffs, I suppose. 12:53:33 Oh, he didn't write that one. 12:53:58 Ah, it's stolen. Well, in any case. 12:54:04 fizzie: You can't dodge my question!!! 12:54:30 the depressing thing is, there's almost certainly a way to tunnel HTTP over HTTP already 12:54:44 elliott: It's just that I don't quite recall the motivations. I'm supposing some IRC people were somehow involved. 12:55:03 you know what we need? another esolang competition 12:55:08 with a reasonable number of people actually participating 12:55:40 ais523, that last point might be hard 12:55:55 ais523, btw when are the results of IOCCC going to be announced? 12:55:55 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 6 or so would be reasonable enough 12:56:13 fizzie, heh 12:56:15 fizzie: I will accept a blatant but interesting lie, e.g. "Finnish demosceners used to use it to chat ironically". 12:57:11 but not exactly that one, as it wouldn't be interesting now it's been mentioned 12:57:44 ais523: no, it would 12:57:45 fizzie, if it was on irc you could search your logs? 12:57:52 ais523: how implausible is it that I would guess the precise truth? 12:57:58 even if it isn't actually true 12:59:05 elliott: it'd be obviously a lie, though 12:59:12 as well as just being blatant 12:59:16 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 elliott: I think "Finnish used to use it to chat ironically" is quite close to the truth, actually. 13:01:20 fizzie, grep -R? 13:01:31 fizzie: See, I can pretend to believe you now! 13:02:15 elliott: Heh; from !assembly, paraphrasing: "[2005-08-05 19:20:37] The demi.fi folks are quite the sceners: darkhive=# select sum(msgs) from dh_thre where tname ilike '%assembly%'; => 473" 13:02:26 (I asked for first mention separately per-channel.) 13:02:32 :D 13:02:51 Anyway, 473 messages containing the substring "assembly". 13:04:28 I think these logs are too new. 13:05:14 Hey, someone donated me money because of it. 13:05:19 I... 13:06:35 elliott: Oh, oh oh! I might have just continued from "demikhat". 13:06:38 elliott: *… 13:06:49 elliott: See, uh... this is also a bit complicated to explain. 13:06:50 ais523: no 13:06:56 fizzie: Go on. 13:08:12 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 fizzie: You're a strange person. 13:09:17 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 I'm not quite sure of the chronology of all these different forums and chats and such. 13:09:44 How did you even come to look at anything related to this magazine? 13:10:04 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 Actually come to think of it, that dump might have been the inspiration for Darkhive itself. 13:10:24 So you can blame whoever asked me to do it. 13:11:11 Wow, I had so forgotten about this. 13:11:56 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 And after that I got the free-tea voucher. 13:12:46 fizzie: I don't understand Finland. 13:12:57 It's not as strange as e.g. Japan. 13:13:01 Or so I have been led to believe. 13:14:15 Sadly, I never finished my other "chat archive" project. 13:14:27 (That would've been called "sharkhive".) 13:14:27 Charchive. 13:14:29 :D 13:14:44 It wasn't related to the Demi chats, incidentally. 13:14:58 Oh, what was it going to archive, then? 13:15:40 ais523: you might enjoy this: http://www.bbctvlicence.com/Please%20do%20not%20write%20below%20the%20line.htm 13:15:43 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 it reminds me of those train routeing letters 13:15:58 I was thinking, I had this analog TV receiver card, I could've OCR'd and archived those. 13:16:00 fizzie: Ohh, yes, I know what you mean. 13:16:50 fizzie: Well, sort of. 13:17:35 elliott: obvious conclusion is that it's to present people writing below the line before the letters are sent 13:17:42 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 fizzie: You should archive... 13:18:48 fizzie: Uh, do/did (when you had analogue television) you people have a teletext-style thing? 13:19:39 Yes. 13:19:45 I think the system still exists. 13:20:07 http://www.yle.fi/tekstitv/html/P100_01.html 13:20:08 fizzie: Those tend to have vaguely "user-generated" pages. 13:20:12 You can read it in the interwebs. 13:20:21 fizzie: Actually you should just archive the whole thing, that would be simplest. 13:20:28 Oh, I've seen this. 13:20:34 It's even hyperlinked! 13:20:35 I think it was discussed. 13:20:57 Okay, but pretend that doesn't exist and do it with a receiver card instead. :p 13:21:25 Only the top half of double-height numbers are hyperlinked, unless I'm mispointing. 13:21:38 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 fizzie: WFM 13:22:35 fizzie: It even hyperlinks URLs, e.g. http://www.yle.fi/tekstitv/html/P101_01.html. 13:22:58 speaking of storing chats, I wonder if anyone is recording /b/ and such, iirc 4chan expires old messages? 13:23:11 I hope no one is archiving /b/... 13:23:21 Would take a lot of space, probably 13:23:33 I've seen archives of individual threads 13:23:33 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 fizzie: Oh, right. 13:24:33 fizzie: I suspect the linking may be automated somehow. 13:24:41 Vorpal: http://4chanarchive.org/ 13:24:48 Is at least a thing. 13:24:52 (NSFW ads, seemingly.) 13:25:02 elliott: it almost certainly also has NSFW content 13:25:16 ais523: That too, presumably. 13:25:28 I guess you could find a SFW subset of 4chan, but it'd be mostly missing the point 13:26:16 Oh, "update May, 7th: we take no more new archival requests. please visit chanarchive.org instead.". 13:26:18 http://chanarchive.org/welcome It's all Web 2.0. 13:26:22 There's even a Twitter. 13:27:14 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 s while that case is pending. 13:27:24 ais523: There's quite a debate going on about this. 13:27:40 fizzie: yes; I was mostly interested because they'd sued a country rather than an ISP 13:27:41 ais523: Including a bomb threat to the office of the "Anti-Piracy Centre" and so on. 13:28:24 fizzie: Is that what Finns call a debate? 13:28:56 elliott: The bomb threat was by "Anonymous Finland". :p 13:29:11 there are almost certainly multiple Anonymouses 13:29:25 with a name like that, and their alleged structure, more than one could exist quite easily without anyone noticing 13:29:30 including the organizations themselves 13:29:40 ais523: Well *this* one owns a Twitter account "anon_finland", it's certainly very legit. 13:30:00 fizzie: I'm sure it was a very credible threat. 13:30:53 "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 iratebay.gl, thepiratebay.net, www.thepiratebay.net, www.thepiratebay.se, thepiratebay.se, thepiratebay.org.nyud.net" 13:30:58 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 That's the list of DNS names they want removed. 13:31:01 thepiratebay.org.nyud.net <-- LOL 13:31:17 The best part is, I doubt you can even /search/ with that one. 13:31:30 what's nyud.net? 13:31:32 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 ais523: coralcdn 13:31:37 I've heard of it but can't remember why 13:31:44 ais523: http://en.wikipedia.org/wiki/Coral_Content_Distribution_Network 13:31:48 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 ah, right 13:33:18 Heh, "piraattilahti.fi" (the literal translation of "piratebay") goes to EFFI's (the "Finnish EFF") webpage. 13:33:39 lol 13:34:53 Heh, it was actually originally on that list. 13:35:13 There's an update from yesterday that they have removed the "piraattilahti.fi" block. 13:35:28 Presumably whoever owns the domain will again point it at Pirate Bay, and they'll add it back, and GOTO 10. 13:35:34 fizzie: http://www.effi.org/ -- try google-translating it from finnish to english and read the first sentence. 13:35:39 (Right click -> translate in Chrome.) 13:36:14 "What." 13:36:55 fizzie: So how's the weather in Helsinki, Ireland today? 13:37:18 :D 13:37:22 I mean, the original text just says "Electronic Frontier Finland ry ...", and 'ry' is basically "registered association". 13:37:41 If you just type "Electronic Frontier Finland" and ask for a Finnish -> English translation, it goes "The Electronic Frontier Ireland". 13:37:49 fizzie: Statistical translation, presumably. 13:37:53 Apparently fi:Finland equals en:Ireland, then. 13:38:04 fizzie: Things like country names tend to get mixed up. 13:38:05 Admittedly "Finland" isn't Finnish. 13:38:23 fizzie, it s Soumi isn't it? 13:38:24 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 or something like that 13:38:28 I don't really know how it works. 13:38:29 Vorpal: Suomi. 13:38:31 ah 13:38:31 But that's what I've heard. 13:38:46 fizzie probably knows more, since speech recognition is, like, vaguely related, and about twice as unreliable. :p 13:38:55 elliott, also inches vs. centimeters 13:39:01 that gets messed up badly too 13:39:03 There was some other Google Translate "lul" related to gay Swedes, but I don't recall how it went. 13:39:04 "Irlanti" is pretty close to "Finland", I guess. 13:39:07 Vorpal: Right. 13:39:43 elliott, also I have seen it insert extra negations that completely changed the meaning of the sentence. :D 13:40:06 `words --finnish --swedish 25 13:40:08 fizzie "cunningly dodged" my speech recognition remark. 13:40:13 ​å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 kallisti, none of them looks Swedish at all 13:40:30 Vorpal: vid? 13:40:32 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 Deewiant, oh right, missed that word 13:40:45 apart from that though 13:41:25 Aren't many Finnish-looking words either. "hittu" could be. 13:41:32 fizzie: Europarl is good for translating "Mr. President". 13:41:57 `words --finnish 15 13:42:00 matushovina jalailevakin tontumissasi uneeksesi syventävikseen aampiansa tyhjenemassamme erivaan alustamaksena ajamuissasi aihtyvilta liukkaama hälyttömimmaksee näppäivyttävista kapisimpia 13:42:07 fizzie, I think psymmästa looks finnish 13:42:10 to me at least 13:42:14 Vorpal: Fails vowel harmony 13:42:18 hm okay 13:42:26 Deewiant, what does vowel harmony entail? 13:42:29 The all-purpose refusal. 13:42:40 Vorpal: https://en.wikipedia.org/wiki/Vowel_harmony#Finnish 13:43:03 You could've just said "no [uoa] or [yöä] in the same word". 13:43:10 It's shorter than the link. :p 13:43:15 Do you have to pass, like, a gruelling five-hour test of vowel harmony to gain Finnish citizenship? 13:43:19 But that requires typing, not copy-pasting. 13:43:38 Anyway, I was /going/ to give a longer explanation including stuff about foreign imports and compound words but SCREW IT THEN. 13:43:54 "Päuikkä" "Yes!" "Paaäaia" "No!" "Kapisimpia" "Yes!" "Syventävikseean" "Yes! -- NOOOOOOOOOOOOOOOO" 13:44:11 Deewiant, yeah a bit tricky for compound words and imported words I imagine 13:44:19 "Päuikkä" is not a "Yes!". 13:44:54 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 elliott: "ä" and "u" 13:45:15 Yeah, my short explanation should've probably said "and" instead of "or". :p 13:45:27 :( 13:45:40 fizzie: I was going solely based on "no a and ä" that yous aid once. :p 13:45:54 Anyway, EVEN THE EXAMINER MAKES MISTAKES SOMETIMES. 13:46:08 fizzie, what about å? 13:46:27 /kickban Vorpal trolling 13:46:40 elliott, what? 13:46:40 In practice the rule is usually equivalent to "if a native speaker can't pronounce it easily, it fails vowel harmony" 13:46:55 Vorpal: å is just o. 13:46:59 ah 13:47:07 Deewiant, so you say "oland" for "åland"? 13:47:08 Oh, "å" actually occurs in Finnish? 13:47:08 And not present in any words. 13:47:12 Right. 13:47:28 what's the point of a letter that isn't in any words? 13:47:28 elliott, they have it in Åland afaik, unless they use a different name for that 13:47:35 to confuse the alphabet? 13:47:35 Vorpal: "Ahvenanmaa". 13:47:35 Vorpal: "ooland" and "åland" would be pronounced the same. 13:47:45 ais523, å is used in Swedish so I guess that is why? 13:48:02 ais523: It's something that stayed from Swedish, and is only used in Swedish names. 13:49:13 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 fizzie, what about our o? Do you have that 13:49:38 'u'. 13:49:42 and our u? 13:50:30 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 Don't you have some context-sensitivity going on there? 13:50:51 hm maybe? 13:50:58 Finnish mostly has a context-free mapping from lexemes to phonemes. 13:51:12 well there is a lot of stuff that depends on context in Swedish 13:51:23 like double consonant after a vowel modifies it and so on 13:51:39 (and that is the only place where you can put two of the same consonant pretty much) 13:52:03 Swedish o is also context-sensitive. 13:52:26 Deewiant, I believe /ever/ vowel can be modified by at least single/double consonant after it 13:52:29 possibly more stuff 13:52:34 Quite possibly. 13:52:38 Yes, I suppose 'bot' and 'bott' have quite a different 'o' in them? 13:52:41 every* 13:52:45 fizzie, indeed 13:52:46 Swedish is a quite vowel-tricky language. 13:53:40 also we have various other things going on. Like the sj-sound 13:53:44 Swedish-speaking Finns for the most part probably just approximate it. 13:53:54 also stj and various other variants 13:56:23 boten annan? 13:56:36 Sgeo, uh "the cure another"? 13:56:37 Oh, it's Boten Anna 13:56:49 still "The cure Anna" (where Anna is a name) 13:57:00 (but that is not what it refers to) 13:57:13 I saw bott, and thought of the song Boten Anna 13:57:26 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 And in whatever language "Boten Anna" is, it's supposed to mean Anna the Bot, I think 13:57:55 So I think it's a different language from whatever you're talking about 13:58:00 "NO NO IT'S ABOUT A BOAT LOL" 13:58:06 Sgeo: Thank you for your insightful commentary. 13:58:13 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 http://www.youtube.com/watch?v=zf2wbRWb9xI 13:58:22 with a single t it would be different 13:58:27 What language is this? 13:58:34 fizzie, that would be båten 13:58:34 :P 13:58:46 Deewiant: My, that's a little EDGY for you. 13:58:56 Sgeo, can't check, no sound where I am. 13:58:57 Vorpal: "bott" doesn't exist? bo, bor, bodde, bott. 13:59:09 fizzie, oh right, true 13:59:15 What language is this? 13:59:16 finnish 13:59:26 Sgeo, it is probably Swedish anyway 13:59:28 hth yw 13:59:33 [] 13:59:34 (18470.58 secs, 14756796564032 bytes) 13:59:36 (if it is what I'm thinking of) 13:59:36 Conjecture proved. 13:59:44 Deewiant, what conjecture? 13:59:50 Vorpal: Conjecture. 13:59:58 Deewiant actually just typed [], he just has a really slow computer. 14:00:05 Yep. 14:00:12 :P 14:00:21 And also his GHC has a really bad memory leak. 14:00:30 quite 14:00:38 elliott, uh 14:00:40 `frink 14756796564032 bytes -> gb 14:00:41 13.5 terabytes for the empty list is quite impressive. 14:00:43 http://en.wikipedia.org/wiki/Boten_Anna#Swedish_lyrics 14:00:45 wasn't that the command? 14:00:46 hm 14:00:49 Vorpal: Yes. 14:00:51 It's slow. 14:00:52 Unknown symbol "gb" \ Warning: undefined symbol "gb". \ Unconvertable expression: \ 118054372512256 bit (information) -> gb (undefined symbol) 14:00:56 ffs 14:00:56 Also, "gb" is unlikely to work. 14:01:01 `frink 14756796564032 bytes -> gigabytes 14:01:01 `frink 14756796564032 bytes -> gibibyte 14:01:05 Vorpal: gibi 14:01:12 elliott, I want base 1000 :P 14:01:13 230574946313/15625000 (exactly 14756.796564032) 14:01:13 bogo 14:01:17 (okay not really) 14:01:28 Anyawy, like I said, 13.5 tebibytes. 14:01:37 elliott, you said it after I typed that line 14:01:39 (Actually you said tera) 14:01:42 *Anyway 14:01:43 Deewiant: Indeed! 14:01:44 But I LIED. 14:01:50 Shameful. 14:02:04 230574946313/16777216 (approx. 13743.33776909113) 14:02:22 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 Gotta love that useful rational representation. 14:02:36 fizzie, heh 14:02:47 fizzie: I'm not sure what would compel someone to attempt to explain that to a radio show host. 14:02:47 elliott, XD 14:03:03 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 elliott: The radio show host had kept on babbling about the boat earlier, I suppose it got on someone's nerves. 14:03:27 fizzie: Isn't there a boat in the video? Very confusing. 14:03:39 Deewiant: What. 14:03:53 speaking of Swedish pronunciation, there is also quite a lot of dialectal variation still. 14:03:58 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 Deewiant: Also, (abs d :: Int32) === (abs d) there. 14:04:09 :t gcd 14:04:10 forall a. (Integral a) => a -> a -> a 14:04:17 And (2^32 :: Int64) === (2^32). 14:04:20 Vorpal: Also since it's talking about the "kanal" and, you know, a canal of water and all. 14:04:24 elliott: I added some extras to make sure everything was correct. 14:04:34 Deewiant: TYPES DON'T WORK LIKE THAT 14:04:46 elliott: Yes they do, it'd give me an error if they weren't what I thought they were. 14:05:02 Deewiant: Anyway, you could, like, totally golf that. 14:05:12 Yes, and optimize it. But that wasn't the point. 14:05:19 The point was to make sure that it returns the empty list. 14:05:21 fizzie, indeed 14:05:26 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 http://stackoverflow.com/a/8836331/1097181 ;; ooh, there's a *psychic* on SO. 14:05:44 Perhaps some sort of a possessed boat? 14:05:46 Deewiant: Are we going to get context? 14:05:55 fizzie, just looked up the lyrics and they make no sense wrt a boat 14:05:56 fizzie, what's the translation of that? 14:05:56 fizzie: Translation? 14:06:11 Sgeo: "I'm not a bot, I'm a really, really beautiful girl." 14:06:17 X-D 14:06:21 Well, you know boats these days. 14:06:38 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 I'm you. 14:06:57 "för i mina ögon är hon alltid en [båt]". 14:07:05 Vorpal: Boats have kicked people out before! 14:07:05 "In my eyes she's always a bot/boat." 14:07:09 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 fizzie: Very progressive. 14:07:26 means.. tidus acquired the word closed-circle argument in his inventory 14:07:54 Oh, "itidus" derives from "tidus"? I suppose that should have been obvious. 14:07:59 elliott, it said ban, not kick 14:08:09 Vorpal: Yes, well, boats that kick don't let people back in. 14:08:10 elliott: hahahah......... 14:08:21 yup 14:08:25 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 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 i dont necesarily still hold that view, but a few hours ago i was arguing it 14:08:47 If you die on a boat, you die in real life! 14:08:51 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 Which seems pretty self-explanatory. 14:09:07 Deewiant: Doesn't QuickCheck let you run tests over functions? 14:09:10 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 You could try and find a predicate. 14:09:22 elliott: For what? 14:09:51 Deewiant: Well, um, good point. 14:09:57 Deewiant, was this on one core or multiple cores? 14:09:58 Something relating the two. Somehow. :p 14:10:04 Vorpal: Does it matter? 14:10:06 filter isn't parallel. 14:10:11 Vorpal: That's not using parFilter or anything so those are single-core. 14:10:12 (It's not like it could be parallel over linked lists.) 14:10:21 (Well, usefully parallel.) 14:10:27 elliott, well he should have used parFilter then 14:10:37 I don't think parFilter exists. 14:10:41 Deewiant, oh okay 14:10:49 right 14:10:54 And it wouldn't've been enough on its own, anyway. 14:11:01 fair enough 14:11:02 And I didn't exactly care about the runtime, either. 14:11:09 Deewiant: You can easily construct it with Control.Parallel.Strategies. 14:11:20 elliott: filter `using` parList or whatever? 14:11:33 I forget how that module works. 14:11:36 (\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 I mean, sparks are cheap, but not /that/ cheap. 14:11:49 Erm. 14:11:51 Right. 14:11:54 (\p xs -> filter p xs `using` parList strat) 14:12:01 For some strat, probably rseq. 14:12:32 Alternatively I could've just trusted my belief that what's true for 8-bit is also true for 32-bit. 14:13:03 Deewiant: UNTRUE COUNTEREXAMPLE "THEY CAN HOLD ONLY THINGS OF 8 BITS" QED MOFO 14:13:12 QED QED QED 14:13:29 QED QED QED 14:13:33 MOT 14:13:39 NETMOT. 14:13:42 CQFD 14:13:44 WZBW 14:13:49 чтд 14:13:55 Deewiant, but is it true for 64-bit? 14:14:00 ASDF 14:14:01 Vorpal: It better be. 14:14:03 -!- boily has joined. 14:14:08 hehe 14:14:11 Deewiant: You mean you're not going to... check? 14:14:16 No, I'm not. 14:14:26 Deewiant: You could use one of those fancy SMT things to check it. 14:14:31 http://hackage.haskell.org/package/sbv, e.g. 14:14:44 I don't know whether they're clever/good enough to. 14:14:50 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 elliott, SMT... I heard this before, what did it stand for now again 14:15:10 something modulo? 14:15:11 At least expressing it with one of them wouldn't be any harder than writing the Haskell code. :p 14:15:15 Vorpal: Satisfiability, theories. 14:15:20 elliott, ah right 14:15:21 elliott: That's probably an order of magnitude slower than boolector and whatnot. 14:15:25 http://en.wikipedia.org/wiki/Satisfiability_Modulo_Theories 14:15:31 elliott, I quite like Something Modulo Thingies :P 14:15:38 Deewiant: It doesn't dot he solving itself. 14:15:40 Deewiant: *do the 14:15:48 Deewiant: It uses Yices or something. 14:15:55 Yices is kind of shitty IIRC. 14:16:11 https://github.com/LeventErkok/sbv/tree/master/Data/SBV/Provers 14:16:14 Anyway, I could just as easily express it in C and probably get faster runtime :-P 14:16:16 Also Z3. 14:16:27 elliott, what about z3? 14:16:29 Z3 is performant. 14:16:31 (I used it) 14:16:37 Vorpal: It supports it. 14:16:40 ah right 14:16:42 Deewiant: I somewhat doubt even C could enumerate 2^64 integers in a reasonable timeframe. 14:16:51 elliott: Of course it can't. 14:17:01 Deewiant: You don't say. 14:17:10 I meant, express it in C and get the SMT problem from that. 14:17:28 Deewiant: I doubt that would buy you anything over sbv, since it extracts to C anyway. 14:17:44 Ah, then maybe not. 14:18:13 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 But anyway, I'm not sure that SMT solvers could figure it out. 14:18:28 ONLY ONE WAY TO FIND OUT 14:18:39 assmebly language could do it 14:18:47 (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 ^assembly 14:19:01 itidus21, no, there is no way you can even run a simple loop that just counts up to 2^64 :P 14:19:02 itidus21: What, enumerate all 64-bit integers? 14:19:06 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 i guess not 14:19:22 Deewiant: That property is a lot simpler than des(x) == x :P 14:19:25 point is though that if asm can't do it then it can't be done 14:19:27 you know what? I'm not convinced Funge-98 is an esolang 14:19:31 :t des 14:19:32 Not in scope: `des' 14:19:36 itidus21: Yes it can, you just have to use your brain. 14:19:36 although I guess here's as good a place to discuss it as any 14:19:37 wtf is des? 14:19:43 Vorpal: DES 14:19:44 oh wait, DES? 14:19:46 right 14:19:51 itidus21: Brute force is not the only way to solve every problem. 14:19:57 itidus21: Also, asm is not even the lowest level you can get at. 14:20:20 if the problem is ennumerating all 64 bit integers 14:20:22 Vorpal: I did C at that time so that I could go C -> LLVM -> optimized LLVM -> hand-translated SMT 14:20:24 ais523, what is it then? It is not exactly a main stream language. 14:20:35 Oh, Yices and Z3 are the only ones supported. 14:20:38 then asm would be your best bet :P 14:20:38 Z3 is better, I guess? 14:20:51 Does cheater expect his trolling to be successful? 14:20:55 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 itidus21: No, it wouldn't. 14:21:05 Sgeo: What's he doing this time? 14:21:09 BTW, he's in here. 14:21:10 any funge derivative is an esolang 14:21:15 hey guys what is the opposite of return? ... 14:21:20 i want something like <- 14:21:35 cheater: ever heard of comonads? 14:21:38 Sgeo: You assume he's trolling, but I think he might just be stupid. 14:21:45 they have unreturn and unjoin as their primitives, no matter what elliott wants to call them 14:21:52 At least if #haskell over many months is any indicator. 14:21:58 elliott: IIRC Z3 was about twice as fast as yices on average in SMT-COMP 2011 14:22:00 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 ais523, what does elliott want to call them? 14:22:14 fizzie: Alright, cool. 14:22:33 Deewiant, which one was fastest? 14:22:38 Vorpal: Z3, IIRC. :-P 14:22:40 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 He solved his problem with binds and lambdas, apparently 14:22:45 Deewiant, I meant out of all 14:22:47 elliott: i wouldn't even know how to go to lower levels than asm :P 14:22:51 Vorpal: Yes, that's what I meant as well. 14:22:55 ah okay 14:23:07 i have heard of microcode though 14:23:15 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 itidus21: I was thinking FPGAs. 14:23:47 would you put them on a board and plug it in? :D 14:24:46 i say this to hint at the fact that i doubt very many individuals ever make their own AGP/PCI cards 14:24:56 and maybe it's an underdeveloped area 14:25:03 problem with FPGAs is that unless you can take advantage of their different architecture it is going to be slower 14:25:20 I believe the top clock frequencies for FPGAs is around 200 MHz 14:25:27 (might be somewhat out of date on that) 14:25:35 they don't need a high clock speed 14:25:46 [ 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 hmm.. im daydreaming 14:25:51 and you don't really need to take advantage of the architecture beyond running thousands of cores in parallel 14:25:53 ais523, indeed, if the problem is suited to being done on an FPGA of course. 14:25:55 Deewiant: It'll probably take 2 seconds to check but ten years to install sbv 14:26:00 ais523, and that is what I meant 14:26:02 if your project parallelises easily, no issue using FPGAs at all 14:26:23 hmm 14:26:29 ais523, if it doesn't parallelise you have issues though 14:26:59 yeah, i want to develop a GLU = game logic unit :P (not really.. sounds cool though) 14:27:04 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 ais523, hm are there any embarrassingly non-parallelisable problems? 14:27:23 ais523: counting to 2^64 parallelises really easily 14:27:35 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 elliott, you can't use 2^64 "cores" though 14:28:01 and yet it was within a factor of 2 of the algol, and within a factor of around 7 of ocaml 14:28:09 what is achieved by counting though.. the algorithm makes no sense 14:28:22 even with just the one thread, the advantage gained from hardcoding your program into the hardware is noticeable 14:28:23 Vorpal: Well, it would work. 14:28:29 its like in brainfuck you would optimize ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 14:28:41 elliott, what would? 14:28:48 Vorpal: Using 2^64 cores. 14:29:00 elliott, no it wouldn't due to you not having that many 14:29:09 Vorpal: That doesn't mean it parallelises any worse. 14:29:11 so you could optimize the counting problem to just setting a variable to 2^64 14:29:15 elliott, of course 14:29:19 time vs space tradeoff :D 14:29:25 elliott, but what I mean is that it isn't a practical solution 14:29:28 2^64 is too big 14:29:41 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 itidus21: how is that a tradeoff? 14:30:06 itidus21, the problem was actually to run a function on each value 14:30:12 Apparently it was rather faster than running the equivalent stuff on DSP cores. 14:30:14 oklopol: oh.. my posts dont make sense sequentially 14:30:23 oh. 14:30:26 Or non-sequentially. 14:30:28 fizzie, nice 14:30:43 Deewiant: What, z3's not open-sores? :/ 14:30:52 elliott, it is MS research 14:30:57 2^64 cores solution demands more space... using 1 core demands more time 14:30:58 Vorpal: So is GHC. 14:31:04 elliott, you need to use a really old version or run it under wine 14:31:24 itidus21, the bf case is not a tradeoff at all 14:31:30 nor is just setting a variable 14:31:43 Vorpal: i know.. hence my comment about my posts don't make sense sequentially 14:31:44 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 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 fizzie, heh 14:32:33 Vorpal: people are starting to do that already, I think 14:32:36 it's not mainstream yet 14:32:39 Deewiant: Oh come on, Yices is closed-source too? 14:32:41 but may become so eventually 14:32:50 elliott: what are these programs for? 14:32:53 ais523: SMT 14:33:01 which expands to? 14:33:02 ais523, I hope so 14:33:10 ais523: satisfiability modulo theories 14:33:22 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 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 then the problem's just finding software that makes use of it 14:33:38 ais523, sadly I don't have that 14:33:40 and indeed 14:33:46 I can only expect the price to come down over time 14:33:58 it just needs a killer app, really (like gaming for GPUs) 14:34:15 Deewiant: How recent is Z3 2.19? :p 14:34:19 ais523, the problem is no game is going to depend on such a thing, because it would hurt the sales figures 14:34:42 hmm, I added VHDL to Emacs' flymake-mode yesterday 14:34:45 Vorpal: Games have had optional-but-makes-it-prettier things for ages now. 14:34:46 also, turned flymake-mode on by default 14:34:53 ais523, flymake? 14:34:55 (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 elliott, well yes 14:35:08 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 elliott, you need to find such a use for FPGAs too 14:35:33 Vorpal: actually, I think the FPGA-in-PC market's currently being driven by bitcoin miners 14:35:42 ooh 14:35:47 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 sometimes I wonder if bitcoin is actually a cunning plan to advance the state of technology 14:36:08 Vorpal: I don't get why CAD would require that sort of processor power 14:36:10 ais523, didn't the price of bitcoin collapse or something iirc? 14:36:15 ais523: everything is "actually a [...] technology" 14:36:26 ais523, hm okay 14:36:32 ais523, advanced simulation? 14:36:36 Vorpal: yes, although it picked up somewhat after that 14:36:40 fsvo everything 14:37:00 "You should download Z3 version 3.2 or later." 14:37:12 Ah, http://research.microsoft.com/projects/z3/z3-x64-3.2.tar.gz 14:37:16 Vorpal: Not ancient, that's the latest version. 14:37:21 ah nice 14:37:25 im such a phony using expressions like fsvo.. someone could accidently mistake me for one of you 14:37:35 (of course, there's also z-machine for windows. Sadly, no windows for the z-machine yet.) 14:37:36 *I* started the FSVOing. 14:37:36 elliott, last I looked (half a year ago?) that wasn't around 14:37:39 I demand royalties. 14:37:52 Or, maybe Deewiant used it a bit before me. 14:37:56 But I started the influx. 14:38:05 `pastelog fsvo 14:38:15 ais523, z-machines hm, what are those now again? 14:38:23 zork machines? 14:38:30 some game interp, IIRC 14:38:33 ah 14:38:37 intercom 14:38:38 2006-08-29.txt:09:04:18: FSVO "few" \ 2009-07-11.txt:19:21:32: FSVO recently \ 2009-07-20.txt:19:59:04: well, FSVO entirely possible \ 2009-07-24.txt:18:56:18: AnMaster: fsvo love equal to shit \ 2009-07-24.txt:18:56:25: "fsvo"? \ 2009-07-24.txt:18:56:36: fsvo. \ 2009-07-24.txt:18:56:37: `translate fsvo \ 2009-07-24.txt:18:56:38: fsvo 14:39:04 hackego's heart just wasn't in it 14:39:12 elliott: I don't think I've ever used the abbreviation "FSVO", at least. 14:39:23 Deewiant, for some values of used? 14:39:29 Har har. 14:39:45 I don't have the logs on this computer so meh 14:40:21 ooh, I've reached the arrival of ehird` in my great log reread 14:40:28 Prelude Data.SBV> prove $ \(x::SWord8) -> x .== 0 14:40:28 *** An error occurred. 14:40:28 *** Unable to locate executable for Yices 14:40:28 *** Executable specified: "yices" 14:40:32 it's been over three years now 14:40:32 Aw come on. 14:40:36 ais523: FSVO great. 14:40:41 ais523: I still plan to read every single log in order some day. 14:40:45 2009-07-24 20:57:13( Deewiant) http://www.google.com/search?q=fsvo 14:41:00 That's the only use other than that "I don't think I've ever used" use. 14:41:08 wow, it's so weird to see elliott not knowing something about the channel 14:41:20 Deewiant: that isn't a use, that's a mention 14:41:28 ais523: what, Deewiant not using FSVO, or? 14:41:29 Fair enough. 14:41:35 (the referent of "that" is ambiguous there, but the statement's right both ways) 14:41:53 elliott: Google-searching something is mentioning it, not using it 14:42:00 ooh 14:42:06 Prelude Data.SBV> proveWith z3 $ \(x::SWord8) -> x .== x 14:42:06 Q.E.D. 14:42:14 Deewiant: OK what was the proposition again. 14:42:21 Which one? 14:42:25 Deewiant: The one. 14:42:36 > 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 mueval-core: Time limit exceeded 14:42:44 That lasted long. 14:42:47 elliott: oh, we may have been using TC all wrong 14:42:58 there was a goodmathbadmath post about the difference between turing-complete and turing-equivalent 14:43:09 ais523, oh? what is the difference? 14:43:13 (a TC computation is one that requires at least a TE interp to run) 14:43:19 ah 14:43:36 http://scienceblogs.com/goodmath/2007/01/turing_equivalent_vs_turing_co.php 14:43:45 ais523, are there any known TC computations? 14:43:53 err, yes? 14:43:57 a brainfuck interpreter? 14:44:16 elliott, apart from interpreting TE interps I mean 14:44:17 yep, interpreting a TE language is the most common one 14:44:31 another one is to run all possible programs in a particular TE lang in parallel 14:44:34 and output when each of them halts 14:45:04 (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 okay let me rephrase that: are there any known TC computations that doesn't involve TE languages. 14:45:56 `searchlog itidus computation limit 14:45:58 Deewiant: What's the corresponding form for 8-bit? Just s/Int32/Int8/ s/Word32/Word8/? 14:46:00 hmm, what2D languages have nothing to do with Befunge? 14:46:08 *what 2D 14:46:12 2012-01-12.txt:14:45:56: `searchlog itidus computation limit 14:46:16 ais523: biota 14:46:28 elliott: And 2^8 14:46:31 bah.. anyway.. i think one of you directed me to the gravity esolang 14:46:36 elliott: And the Int64 is of course just "some bigger int" 14:46:41 Deewiant: Right. Could the Int64 be shortened to ... right. 14:46:44 when i was questioning the limits of computation 14:46:47 elliott: ah, interesting 14:46:51 itidus21, I believe that one is uncomputable? 14:46:53 made by the inventor of c2, I didn't expect that 14:47:38 there was another time discussing sumamoito where i held the belief for a short moment that sumamoito was uncomputable 14:47:44 but elliott cleared up that mistake for me 14:48:13 hmm, is Biota the only esolang ever to have been sold at a profit? 14:48:29 huh, sold at a profit? 14:48:33 Deewiant: This is FUN. 14:49:04 ais523, under what circumstances did that happen? 14:49:33 do bees hibernate? 14:49:45 Vorpal: not sure; apparently someone found Biota useful enough to buy it 14:49:49 heh 14:49:55 the idea was to make a language that was reasonably resistant to mutation 14:50:06 it was devised by ward cunningham apparently (looking at the wiki) 14:50:20 and he is a big name so i guess he can sell esolangs 14:50:28 ais523, sounds similar to a design requirement for Creatures 14:50:41 Uh, big name != ability to find a buyer for esolangs 14:50:41 "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 possibly inside the esolangs community too 14:51:13 Smalltalk source in a text file? 14:51:27 text file's a good way to store source 14:51:32 i am curious though 14:51:39 I bet even @lang has a text representation it can roundtrip via 14:51:40 what exactly do you sell with an esolang 14:51:55 do you sell the BNF? 14:52:00 an interp for it? copyrights on the spec? support? 14:52:02 ais523: Biota predates esolangs, really 14:52:07 or an implementation.. both? 14:52:11 ais523, I'm guessing elliott is going to go with no? (wrt text) 14:52:11 and wasn't intended as one 14:52:30 it was devised by ward cunningham apparently (looking at the wiki) 14:52:39 itidus21: The irony of this statement is palpable. 14:52:51 it's really unlike funge in pretty much every way, it's more like sansism 14:53:03 I bet even @lang has a text representation it can roundtrip via 14:53:04 elliott: no capital W, it's OK 14:53:06 Not really. 14:53:13 besides, the Wiki says it was deviced by ward cunningham too 14:53:27 i have read up on ward a teeny bit before 14:53:36 something about patterns 14:53:50 Deewiant: The hard part is the casting here. :p 14:53:51 that his wiki focuses on patterns perhaps.. 14:53:58 Deewiant: Oh, SignCast is what I want. 14:54:06 maybe something about extreme programming 14:54:17 heh, discussion of the timeout challenge on anagolf 14:54:28 ais523, link? 14:54:35 and the way that the golfiest way to get a timeout in ruby is `vi` 14:54:40 Vorpal: 2008-01-18 14:54:43 oh 14:54:47 the idea of copyrighting a language spec just isn't cool 14:55:18 C does it! 14:55:20 itidus21, I would assume C# or such is copyrighted? 14:55:24 Deewiant: Reassure me that (unsignCast . extend . signCast) will DTRT, thx 14:55:26 and yes C and so on too 14:55:31 it could be done in a predatory way 14:55:32 Erm 14:55:36 (signCast . extend . unsignCast) 14:55:50 hmm, clearly, the esolang just refuses to function unless you've paid its author money 14:56:05 if you patch out the check that does that, you're no longer conforming to the spec 14:56:12 heh 14:56:22 all those little details 14:56:53 itidus21, when did you first come here btw? 14:57:03 prop.hs:22:13: 14:57:03 Context reduction stack overflow; size = 21 14:57:03 Use -fcontext-stack=N to increase stack size to N 14:57:03 $dSignCast :: SignCast SWord8 SInt16 14:57:03 $dSignCast :: SignCast SWord16 SInt8 14:57:03 $dSignCast :: SignCast SWord8 SInt16 14:57:05 not that long ago 14:57:05 $dSignCast :: SignCast SWord16 SInt8 14:57:07 $dSignCast :: SignCast SWord8 SInt16 14:57:07 ah 14:57:09 $dSignCast :: SignCast SWord16 SInt8 14:57:11 $dSignCast :: SignCast SWord8 SInt16 14:57:12 under a year ago 14:57:13 elliott: wow, you really used to hate funge-98 14:57:13 :-| 14:57:19 :t gcd 14:57:20 forall a. (Integral a) => a -> a -> a 14:57:21 ais523, why= 14:57:27 meanwhile, I had a sudden realisation that I'm a call-by-name fanboy 14:57:38 Paul Levy has promised to shock me out of it next week, I'll be interested in that 14:57:51 ais523, you actually like call by name? why? 14:57:53 Vorpal: for being so much more complex than -93 14:58:05 ais523, also who is Paul Levy? 14:58:06 like, suppose brainfuck was copyrighted 14:58:10 Vorpal: because it's so much more natural and intuitive than CBV, and has many fewer special cases 14:58:15 Vorpal: the call by push value guy 14:58:21 hm 14:58:22 he was mentioned to me by elliott, I think 14:58:26 would it be that you could just replace one char with another? 14:58:29 ais523, what about call by reference? 14:58:30 who was surprised to discover that we worked in the same department 14:58:38 Vorpal: hahahahahahahahahahahahahahahahaha 14:58:57 ais523, thanks. The reaction was everything I hoped. 14:59:12 hoped for* 14:59:20 call by push name, pls 14:59:57 21:28:39: gcc insists char [x][y] 14:59:58 21:28:45: is really really different from char ** 15:00:12 elliott: wow, I'd never expected such a misconception coming from you 15:00:33 sadly, my response to you was also a misconception 15:00:53 http://en.wikipedia.org/wiki/File:Bangalore_India_Tech_books_for_sale_IMG_5261.jpg 15:01:06 Deewiant: Oh, dear 15:01:15 Deewiant: I'm going to have to write my own gcd 15:01:28 ais523: Please, don't assume 2008-ehird is me; I dislike him quite intensely 15:01:44 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 Vorpal: Note that a language does not (should not) have to enforce a call strategy. 15:02:29 It's an implementation detail. 15:02:38 elliott, I believe C enforces call by value? 15:02:45 Haskell, for example, only requires non-strict semantics; so lazy evaluation, call-by-name, etc. are all legitimate implementation strategies. 15:02:45 so is there such a thing as a public domain programming language? 15:02:58 Vorpal: As-if rule says it doesn't, although there's not much you could do with that flexibility. 15:03:01 itidus21: everything on http://esolangs.org/w 15:03:14 elliott, hm 15:03:34 @src gcd 15:03:34 gcd 0 0 = error "Prelude.gcd: gcd 0 0 is undefined" 15:03:34 gcd x y = gcd' (abs x) (abs y) 15:03:34 where gcd' a 0 = a 15:03:34 gcd' a b = gcd' b (a `rem` b) 15:03:36 Yay 15:03:38 so biota is public domain by now right? :D 15:04:03 elliott, which evaluation stratergy does ghc use? 15:04:10 strategy* 15:04:11 Vorpal: Lazy. 15:04:14 ah 15:04:35 Vorpal: So, call-by-need. 15:04:40 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 spod 15:05:12 Phantom_Hoover: You have 1 new message. '/msg lambdabot @messages' to read it. 15:05:13 hi Phantom_Hoover 15:05:17 19:03:06: 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 see, I can poke fun at past-all-of-us 15:05:26 -!- ais523_ has changed nick to ais523. 15:05:30 apart from people who weren't there 15:06:12 wow I had forgotten that befunge implementation. It kind of worked for -93 I remember. 15:06:13 Deewiant: I run into the roadblock of having no idea how to extend this thing with functions :P 15:06:16 ugly piece of crap though 15:06:26 Not as ugly as cfunge! 15:06:28 since bash really doesn't like null-bytes 15:06:32 -!- cheater_ has joined. 15:06:58 I had to store null bytes as something else 15:07:08 forgot how I solved that 15:07:23 Vorpal: Yo, how do I define gcd in Z3 15:07:32 ASCII escape? 15:07:38 Hmm, I guess you have to specify them as axioms 15:07:47 elliott, no clue. When I said I used z3 I mean I used it as a backend to something else 15:07:54 and it worked pretty well for that 15:10:48 -!- ais523_ has joined. 15:10:59 [15:07] Vorpal: you stored them as the string "NUL" 15:11:01 [15:07] apparently, you got most of -98 sort-of-working too 15:11:09 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 ais523, heh 15:11:29 I forgot all about this nick 15:11:37 sl? 15:11:47 it was a typo for something 15:11:48 http://hackage.haskell.org/packages/archive/sbv/0.9.24/doc/html/Data-SBV-Examples-CodeGeneration-GCD.html 15:11:49 aha 15:11:51 i suppose i have fun creating trouble by saying things of an imbalancing nature 15:12:03 "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 but what next.. what next? 15:12:07 argh, it only works for 8-bits 15:12:07 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 ais523|sl, and that didn't trip up mycology 15:12:22 i'll tell you what next 15:12:23 sgcd :: SWord8 -> SWord8 -> SWord8 15:12:23 sgcd a b = go a b 12 15:12:23 where go :: SWord8 -> SWord8 -> SWord8 -> SWord8 15:12:23 go x y c = ite (c .== 0 ||| y .== 0) -- stop if y is 0, or if we reach the recursion depth 15:12:23 x 15:12:24 (go y y' (c-1)) 15:12:26 where (_, y') = x `bvQuotRem` y 15:12:28 oh! 15:12:30 it supports sharing 15:12:58 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 A program whose instructions exist in continuous space. 15:13:08 2008 15:13:13 you made cfunge a couple of days later 15:13:17 heh 15:13:38 I believe I was still learning C at the time 15:14:08 A further deviation of the continuous chess idea 15:14:39 Oh no. 15:14:52 Phantom_Hoover, hm? 15:14:54 cellular automata are so friendly with their tile-alignment 15:14:54 ais523|sl: Hey, you'll hit fungot's first appearance soon, if you haven't already; that's in 2008 too. 15:14:54 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 fungot, wow that sounds scary 15:15:22 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 iti isn't so funny when he gets at your ideas. 15:15:43 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 How... typical. 15:16:00 wow 15:16:02 who said that 15:16:04 but an infinite space where there are only points and edges, all existing at relative distances from each other 15:16:07 fizzie: :D 15:16:15 fizzie, did it run on cfunge from the start or was it rcfunge first? 15:16:18 I don't remember 15:16:19 rcfunge 15:16:24 -!- Ngevd has joined. 15:16:30 fungot: PISS OUT MY ASS 15:16:31 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 Rc/Funge-98 was what I started with, yes. 15:16:48 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 fungot: YUO BUG. 15:17:01 elliott: madam president, it is in taking repressive measures, restore the constitutional state and release all 30 remaining political prisoners. 15:17:07 fungot: STILL NOT ELLIOTT. 15:17:07 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 fizzie, what causes that bug? 15:17:25 What bug? 15:17:27 It's part of the same corruption thing. 15:17:32 I see no bug. 15:17:49 Phantom_Hoover: yeah i just find the discrete space of befunge to be too "easy" 15:17:59 elliott, you said one line and it highlighted you 3 times rather than the person who actually triggered it 15:18:11 fizzie, hm maybe it is overlong lines or such? 15:18:25 fizzie, try increasing the size of some buffers to more than what should be required? 15:18:31 discrete 2d graphs in general, with a finite number of neighbours for each cell 15:18:38 how dull 15:18:42 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 Aaah!!! 15:18:49 Hello! 15:18:54 Vorpal: Here's how it saw the last lines: http://sprunge.us/cdNL 15:19:08 Vorpal: Oh. 15:19:23 fizzie, hrrm. 15:19:41 fizzie: Can the text generator overflow if a /word/ is too long? 15:19:41 fizzie, that explains why Pietbot isn't working! 15:19:47 fizzie: Like, it's under, appends a word, and that makes it go oevr. 15:19:48 over. 15:20:28 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 ^source 15:20:30 http://git.zem.fi/fungot/blob/HEAD:/fungot.b98 15:20:32 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 I don't really see what sort of C code bug could cause that result though 15:21:33 the code is fairly simple iirc 15:23:37 100% branch coverage excluding branches. 15:24:05 elliott, I should point out that there are actually branches in cfunge testing if malloc returned NULL :P 15:24:15 elliott, I'm talking about that sort of branches. 15:24:31 elliott, and a lot of input validation 15:24:37 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 I have code to test all of that 15:24:45 except the malloc ones 15:24:58 In general though I'd expect that even if one of these buffers overflow, they'd stay on their respective lines. 15:25:27 fizzie, hm any literal newlines that might mess up anywhere? 15:25:34 oh wait you use FILE right? 15:25:37 so probably not 15:26:26 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 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 fizzie, I was thinking about io with i 15:26:44 until there is some signifigant proof 15:26:48 you could run into newline issues there 15:27:00 Oh, right. Well, no, I don't use 'i' except for ^reload. 15:27:14 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 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 afaik SOCK doesn't split into lines for you 15:28:17 fizzie, so I assume you deal with partial lines somehow? 15:28:26 Vorpal: I read up to fff** bytes at a time. 15:28:30 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 fizzie, what if you have a partial line in the OS buffer? 15:28:43 itidus21: The guy is prominent enough to *be* the reference, methinks. 15:29:01 so how did you guys get it wrong? :P 15:29:11 might be a state of panic 15:29:15 Yes, and even if you 'p' a newline it won't change the topology of the space (sadly). 15:29:17 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 fizzie: Very sadly indeed. 15:29:33 probably due to other reasons as well 15:29:36 as far as language goes, language changes.. gay doesn't mean happy 15:29:42 maybe TC now means TE 15:30:00 and maybe this guy is a grump about terminology 15:30:27 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 Vorpal: Or anyway that's what it's supposed to do. 15:30:38 hm 15:31:13 For each newline it copies the complete IRC-line to line 3, and then does whatever is necessary. 15:31:15 ok i guess he may be right 15:31:29 I think it ignores empty lines before that bit of code, but that shouldn't really be relevant. 15:31:51 (For example the empty line between CR and LF if the server's sending CRLF-terminated lines like it IIRC should.) 15:31:52 I can't see any obvious problems in the algorithms 15:32:02 and I don't feel like debugging befunge code written by someone else 15:32:10 and I just looked at SOCK.c 15:32:14 and it looks in order 15:32:35 very simple code for R 15:32:42 fizzie: Can you write an n-cursor k-d tree zipper for me, please? Thanks 15:33:34 fizzie, what would happen if the server sent LF terminated or CR terminated? 15:33:49 Nothing much, except there wouldn't be any empty lines to ignore. 15:33:54 It accepts both as terminators. 15:33:58 fizzie, also if you replay the input, does the bug still happen? 15:34:14 No, IIRC; that's sort-of why I suspect the babblerator. 15:34:24 how do you do the randomness? 15:34:27 Though it of course might have to do with the reads getting split up at different places. 15:34:32 With "?", what else?-) 15:34:33 (?) 15:34:35 hm 15:34:47 fizzie, I believe there is some fingerprint that provides random(n), not sure 15:34:51 Anyway, I needs to go grocery shopping now, back laters. 15:34:54 cya 15:35:35 elliott: basically seems to me he is trying to say that a language/machine is TE, but a program is TC 15:35:39 oh yes, FIXP (an rcfunge one) provides D for fixed point randomness 15:35:47 err, integer randomness even 15:35:59 which I see I do in the rather naive way. 15:36:17 (random() % n) <-- don't do this at home kids 15:36:39 (at least I left a comment about it) 15:36:40 "It's about the distinction between a Turing equivalent computing system, and a Turing complete computation. " 15:38:41 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 im a teeny bit arrogant :P 15:46:29 Is it possible to make lambdabot give someone a message at a particular time 15:46:56 who created lambabot, was it roger g? 15:46:57 Ngevd, if that time is "when they next speak", sure 15:47:18 itidus21: Many people. 15:47:27 oh ok 15:47:32 Vorpal, I was thinking more along the lines of first of february 15:47:45 hmm.. 15:48:20 itidus21: It's been around for at least 8 years, I think. 15:48:24 Probably longer. 15:49:01 Ngevd: do you mean to simulate a regular @tell on the specified moment? 15:49:16 itidus21, that would be nice, but not necassarily 15:49:33 the person might not be there at the specified time 15:49:44 It's going to be me 15:51:40 Ngevd: Just @tell yourself to @tell yourself about it then. 15:51:48 And keep re@telling yourself about it until the day before. 15:52:15 @tell ngevd Is it possible to make lambdabot give someone a message at a particular time 15:52:15 Consider it noted. 15:52:35 @messages 15:52:36 itidus21 said 20s ago: Is it possible to make lambdabot give someone a message at a particular time 15:53:30 thats my try 15:55:09 Vorpal, I was thinking more along the lines of first of february <-- log on then and give them that message? 15:55:18 Ngevd, or schedule cron on your computer to send it? 15:55:38 Hmm 15:57:04 the difference with me is i have practical uses for these topics 15:57:31 im not trying to fix whats not broken 15:57:41 itidus21 is actually a Computer Science teacher 15:57:54 like, evolution vs intelligent design is not actually helpful :D 15:58:40 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 Chess AI is next-to-useless except for playing chess 15:59:22 What would be useful is an AI for some psychological game 15:59:22 oh crud 15:59:25 Like Uno 15:59:57 but i mean (in my idealistic fairyland) that chess AI research improves the AI technology and such 16:00:11 can i prove it? no.. i just take peoples word on it 16:00:30 Ngevd: I think gmail has a todo date reminder thing. 16:00:32 You could use that. 16:00:34 i guess its like how games create a market for graphics cards which accelerates their development 16:01:11 Ngevd, poker? 16:01:31 Ngevd, also check your phone, I can put reminders in mine 16:01:51 like "08:00 exam" 16:01:54 Bah, I never have my phone on 16:02:09 Gmail seems the best option 16:02:10 I only turn mine off when sleeping 16:02:27 and unless I'm home it is always in my pocket 16:02:35 when I'm home it is usually somewhere on my desk 16:03:07 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 chemistry may have developed due to trying to turn lead into gold 16:04:56 etc 16:05:01 which is probably possible but not very cost efficient 16:05:42 hm lead is 89 and gold 79. I guess you need to split lead to get gold then 16:06:06 Gold and Neon? 16:06:18 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 Ngevd, is that the difference? 16:06:36 Yes 16:06:49 Neon has 10 protons 16:06:52 Ngevd, well we want to get the lighter element out of the heavier, not the other way around 16:06:54 so hrrm 16:07:07 I'm no physisist 16:07:19 nor am I 16:08:00 for me, the goal is always games 16:08:23 uh? 16:08:30 yeah 16:08:39 and what does it depict 16:08:43 itidus21, and goal for what? 16:08:46 alchemy 16:08:52 ^it depicts alchemy 16:08:55 itidus21, I meant more specifically 16:09:03 i dunno man i stumbled on it in wiki 16:09:06 right 16:09:13 then I don't get the cooler thingy you just said 16:09:14 and i mean the goal of any study or serious work 16:09:22 cool as in impressive 16:09:31 alchemy inspired that painting 16:09:38 itidus21, so in the end you want games out of everything? 16:09:47 computer games? 16:09:48 and.. i think the painting is more valuable than gold 16:10:39 nah, i don't want to limit it to computer games 16:11:04 but primarily yes 16:11:20 just as most music is done through a computer these days :P 16:11:25 -!- KingOfKarlsruhe has joined. 16:11:32 ok well i know the playing isn't 16:11:35 but the listening is 16:11:53 uh.. no? It is generally done through sound waves 16:11:56 :P 16:14:27 i have done the thinkin 16:14:30 ^thinking 16:14:44 there is no good reason why gaming can't be an end in itself 16:14:46 -!- Klisz has joined. 16:21:02 thing I just wrote: 16:21:03 class R t where 16:21:03 simple 16:21:04 :: ((t ~ Void) => Proxy () -> r) 16:21:04 -> (forall a. (t ~ Const a, Reg a) => Proxy a -> r) 16:21:04 -> ((t ~ Id) => Proxy () -> r) 16:21:04 -> (forall a b. (t ~ (a :+: b), R a, R b) => Proxy (a (), b ()) -> r) 16:21:06 -> (forall a b. (t ~ (a :*: b), R a, R b) => Proxy (a (), b ()) -> r) 16:21:08 -> (forall a b. (t ~ (a :. b), R a, R b) => Proxy (a (), b ()) -> r) 16:21:10 -> r 16:21:38 I have but the vaguest idea what this doesw 16:30:32 elliott, what is Proxy? 16:30:54 :t Proxy 16:30:55 Not in scope: data constructor `Proxy' 16:30:56 Wow, the sky is beatiful to the west 16:31:01 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 Vorpal, I vaguely think it's a thing to avoid using undefined::Blah all the time, but not sure 16:48:41 hm 16:48:44 Vorpal: http://hackage.haskell.org/packages/archive/tagged/0.2.3.1/doc/html/Data-Proxy.html 16:49:09 elliott, what does tagged do? 16:49:19 Provides Data.Proxy and Data.Tagged. 16:49:35 elliott: helpful 16:49:50 `run echo 'package Foo; our $x;' > test.pl; perl -e 'package Foo; our $x = 2; do "test.pl"; print $x' 16:49:54 "Provides newtype wrappers for phantom types to avoid unsafely passing dummy arguments" 16:49:56 2 16:50:03 oh ho 16:50:03 Sgeo, right 16:50:23 so a non-assigned our declaration does not rewrite anything. 16:50:27 this could be USEFUL 16:50:42 " 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 I get it now 16:51:25 (Proxy s -> b) is nicer than (Tagged s b). 16:52:37 So Proxy Foo is an abstract thing that ... refers to type Foo without having a value? 16:53:31 data Proxy a = Proxy 16:53:32 SO ABSTRACT 16:54:08 Ah, was wondering how to make Proxys 16:54:15 So, Proxy::Int instead of undefined::Int 16:54:32 Sgeo: ... 16:54:39 yeah Proxy is a great Int. 16:54:40 Er 16:54:50 Proxy::(Proxy Int) 16:56:30 I can think of preferring to use a Tagged over a Proxy 16:56:45 Means just an untag, instead of a dummy Proxy argument 16:58:00 Sgeo: Taggeds are a lot harder to write implementation code with. 16:58:07 With proxies you can easily retag to recurse etc. 17:00:23 Maybe I'll understand Reflection better 17:01:06 Why proxy s -> a instead of Proxy s -> a? 17:04:41 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 Hmm, I'm not entirely sure it makes sense. 17:06:00 Wait, the whole conglamoration needs to accept an argument 17:06:45 I guess every function accepts an extra argument, but ... wait, that makes the whole thing pointless 17:10:08 class Encoding t id (**) pu (++) su where 17:10:08 p_encoding 17:10:09 :: ((t ~ id) => r) 17:10:09 -> ((t ~ pu) => r) 17:10:09 -> ((t ~ su) => r) 17:10:09 -> (forall a b. (t ~ (a**b), 17:10:11 Encoding a id (**) pu (++) su, 17:10:13 Encoding b id (**) pu (++) su) 17:10:15 => Proxy (a (), b ()) -> r) 17:10:17 -> (forall a b. (t ~ (a++b), 17:10:19 Encoding a id (**) pu (++) su, 17:10:21 Encoding b id (**) pu (++) su) 17:10:23 => Proxy (a (), b ()) -> r) 17:10:25 -> r 17:10:27 class Algebraic t id (**) pu (++) su where 17:10:29 type ADT t :: * -> * 17:10:31 encode :: t -> ADT t t 17:10:33 decode :: ADT t t -> t 17:10:35 p_algebraic :: ((Encoding (ADT t) id (**) pu (++) su) => r) -> r 17:11:52 Kind mis-match 17:11:52 The third argument of `Algebraic' should have kind `(* -> *) 17:11:52 -> (* -> *) 17:11:52 -> * 17:11:52 -> *', 17:11:53 but `**' has kind `* -> * -> *' 17:11:54 grr. 17:21:36 -!- zzo38 has joined. 17:31:45 oh nice the last section of this book is some group theory proofs 17:31:51 we won't get to cover that in class though 17:33:37 the first half of the book is... literally the same as in discrete math. 17:36:29 maybe I should take real analysis. er wait I think that requires calc 3 which I didn't take... 17:36:40 MAYBE I SHOULD MAJOR IN MATH????? 17:36:49 or minor 17:36:51 I could do that. 17:37:10 or.... dual major? 17:37:13 that's a thing. 17:37:51 i think you need to find a polymath to be an apprentice for 17:37:56 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 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 verily if you want to anticipate new paradigms you need to have some freedom 17:41:21 but i guess everyone needs some training to get started 17:42:19 i mean ahh why must i give advice 17:42:59 anyway, it is as true for academics as it is for sports that you get out what you put in 17:45:09 what is a polymath itidus21 17:45:21 a polymath is an intellectual badass 17:45:37 right 17:45:38 the kind who have villages named after them 17:46:57 it could be argued that they are a jack of many trades 17:47:22 but i think there is some synergy they get from so many trades 17:47:46 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 which fits perfectly with what i said 17:49:52 examples might be leonardo da vinci, gottfried leibniz 17:50:02 im sure newton also 17:50:52 http://en.wikipedia.org/wiki/List_of_polymaths 17:52:59 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 I want a http://en.wikipedia.org/wiki/List_of_polygons. You know, just famous polygons from around the world. 17:53:45 Okay, there is a "List of polygons, polyhedra and polytopes". 17:53:54 But it's just types of polygons, not individual famous ones. 17:54:31 Of course it does contain e.g. the great inverted snub icosidodecahedron, so it's got that going for it. 17:54:59 http://en.wikipedia.org/wiki/Great_inverted_snub_icosidodecahedron 17:55:16 It's like a small cute hedgehog, except not quite. 17:55:24 merge them into a "List of polygons, polyhedra, polymaths and polytopes" 17:55:34 and polyglots 17:55:59 fizzie: That is my new favourite polyhedron. 17:56:15 Polypolys 17:56:27 Things that have more than one poly- descriptor 17:59:56 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 not an example usage but literally a definition 18:01:03 this is the idea born of someone who owns so many dictionaries that he realizes they are useless 18:01:48 i suppose poetry would merely be a kind of sugar coating though for the definition 18:04:14 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 ooh heres a nice quote 18:04:32 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 itidus21: O, I didn't see that. But, yes OK. But, there are constructed languages as well and they are difference 18:07:06 i got into a slight argument over lojban on new years eve 18:08:49 oh fuck its already been done 18:09:05 "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 http://zzo38computer.cjb.net/dnd/other_stuff/levels.tex 18:18:46 zzo38: is that a program or a tex document or both? 18:22:12 itidus21: A TeX document is also a program, so it will be both 18:22:58 is it laying out d&d rules? 18:23:25 i mean uhh.. the tex is just used as a markup language right? 18:23:29 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 ya 18:23:47 hmmmm 18:24:51 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 i don't know d&d 18:25:30 also i don't make for a good roleplayer.. i don't like the politics 18:26:32 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 Politics? 18:26:44 probably not in d&d 18:27:31 but roleplay especially online 18:27:42 itidus21, uh? 18:27:53 itidus21, I'm not familiar with what you mean 18:27:55 like "you have to be descriptive" 18:27:57 oh 18:28:18 Well, we do try to be descriptive. 18:28:42 i have issues thats all 18:28:56 itidus21, I mean with roleplaying online. In which type of game? 18:29:01 some people use roleplay as an escape from reality as i'm told.. but i can't make that leap 18:29:21 reality has too much gravity for me 18:29:54 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 `pastelog plaindromes 18:30:13 `pastelog palindromes 18:30:32 this should be good 18:30:38 http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.13749 18:30:58 well... not so good 18:31:34 http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.30415 18:31:40 itidus21, do you not read fantasy? 18:32:04 i haven't... i think that makes it extra difficult to play fantasy 18:32:04 if you can enjoy fantasy novels then you can probably enjoy RPGs 18:32:22 itidus21, try playing a non-online RPG? 18:32:26 skyrim or whatever 18:32:34 And text adventure game is also a computer game similar to a role playing game. 18:32:36 witcher 2 is rather good, but might be too dark for your tastes 18:33:29 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 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 but i have seen a lot of the types of roleplayers i describe chatting 18:34:05 itidus21, "corrupted"? 18:34:12 its kind of funny the whole model of the world which have been developed around rpgs 18:34:44 also eh, RPGs is just an interesting way to pass free the time for me. 18:34:49 each town has a tavern.. in this tavern adventurers sort of.. 18:34:59 itidus21, not really, that is a stereotype 18:35:02 im going to be wrong for a few liens 18:35:15 itidus21, also you can have RPGs in other settings than fantasy 18:35:27 fantasy is certainly the most common but sci-fi is rather common as well 18:35:29 Not always in D&D game and stuff, they don't always have a tavern, or whatever 18:35:34 They are all different 18:35:46 ok 18:36:02 itidus21, you could set an RPG in a contemporary environment easily 18:36:29 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 i don't like competitive role playing anyway 18:36:58 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 i like cooperative because i have some neuroses which make it difficult to compete 18:37:18 zzo38, me? 18:37:36 Vorpal: Including, but not limited to, you; yes. 18:37:42 hm 18:37:44 zzo38, I tend to play computer RPGs mostly 18:37:47 I'm in that palindromes pastelog a lot... 18:37:56 zzo38, single player most of the time 18:38:02 Just for "E, esoteric, ire to see" 18:38:03 zzo38: so rpgs in this sense are not referentially transparent 18:38:11 Computer RPGs are not real role playing games 18:38:18 zzo38, how so? 18:38:22 itidus21: What do you mean by that? 18:38:35 i mean "Sometimes even the referee didn't know you were going to do that, and that make game interesting too?" 18:38:42 zzo38, how are they less real than an RPG on pen and paper? 18:38:55 Vorpal: I mean it isn't a role playing game 18:38:58 zzo38, NWN even uses D&D ruleset for example 18:39:08 That isn't the point 18:39:14 zzo38, what /is/ the point then? 18:39:21 -!- zzo38 has quit (Remote host closed the connection). 18:39:21 i understand the idea i think, im just playing dumb to flush out the topic 18:39:33 and uh 18:39:37 but haveing said that i havent done a proper game of d&d 18:39:41 im not playing dumb much 18:40:28 itidus21, anyway, I quite like computer RPGs. They move at a faster pace than pen & paper RPGs. 18:40:30 just that i dont quite need the concept explained 18:40:44 i like non rpg rpgs the best 18:40:48 ... 18:41:07 basically, anything made in japan 18:41:08 Vorpal: Surely even you can see the dissimlarity of a role-playing game in which very little role-playing is involved. 18:41:27 hmm 18:41:39 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 elliott, and pen&paper RPG can easily devolve into a min-max style game play 18:42:12 elliott, so no, the difference isn't that large at all 18:42:18 japan have this way of japanifying everything that hits their shores and they certainly managed it for the rpg 18:42:23 elliott, and pen&paper RPG can easily devolve into a min-max style game play 18:42:25 Only in Sweden. 18:42:32 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 elliott, not really. Ever played pen&paper D&D? 18:43:03 Vorpal: yeah my brother has that... i saw him play it.. pretty kick ass world simulation 18:43:09 I have once. And once I played a pen&paper RPG with GURPS 18:43:20 itidus21, the texture quality in that game is pretty shit though. 18:43:28 rolls eyes 18:43:34 itidus21, what? 18:43:50 the graphics thing :P 18:43:52 itidus21, it is a nice game. But it is obviously a console port. 18:43:57 ahhh 18:44:28 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 itidus21, and the result is that it is obviously a console port 18:44:49 im not fussy... my video card sucks 18:45:05 then it might not be playable. Who knows. 18:45:08 i have intentions to upgrade my video card, however, i still doubt my pc can easily handle it 18:45:11 try it and see 18:45:14 -!- augur has joined. 18:45:19 itidus21, how much ram and which CPU? 18:45:29 one moment 18:45:40 itidus21, I ran it from a slow HDD, only issue was that the loading time was like >half a minute 18:45:49 itidus21, can you just type something into IRC for me? 18:45:56 itidus21, when possible I play games from my SSD 18:45:58 ok 18:46:15 "/ignore Vorpal*!*@*" 18:46:22 Phantom_Hoover, why? 18:46:25 Phantom_Hoover, why on earth 18:46:34 is it because he keeps saying my name over and over? 18:46:35 I gotta concur right now. 18:46:46 vorpal hmm i have an idea... 18:46:49 oh the highlight thing, sorry, used to high volue channels 18:46:50 itidus21, I'll explain once you've done it. 18:46:58 ok 18:47:03 Yes, it's most definitely the highlight thing. 18:47:19 will try to remember it isn't needed 18:47:32 Usage: IGNORE 18:47:32 mask - host mask to ignore, eg: *!*@*.aol.com 18:47:32 types - types of data to ignore, one or all of: 18:47:32 PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL 18:47:32 options - NOSAVE, QUIET 18:47:40 Oh, right 18:47:41 I see you use xchat 18:47:42 "/ignore Vorpal*!*@* ALL" 18:47:47 and don't do it 18:48:03 I think Phantom_Hoover is being a jerk here 18:48:10 ive done it cos i have to see where this is going :P 18:48:16 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 you could easily just say you did it and not do it 18:48:34 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 Hehe 18:48:42 Phantom_Hoover, oh shut up 18:48:53 Sqrt(-Garfield) 926 18:48:55 ok unignored 18:49:01 -_- 18:49:08 i will slow down.. 18:49:13 I love #esoteric. 18:49:16 and I think Phantom_Hoover is while not unbearable, quite close. :P 18:49:22 and he is also quite a jerk 18:49:30 (sometimes at least) 18:50:01 I think what I want is Trex 18:50:10 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 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 Phantom_Hoover, am I still on your ignore list? 18:50:20 (given an upgraded GPU) 18:50:27 even though i'm not a good coder.. i'm an atrocious mathematician 18:50:37 Ngevd, no, although you're on probation until you renounce Smith. 18:50:48 Ngevd, who is this smith? 18:51:18 Matt Smith, actor of the eleventh (not counting Hammer films and audiobooks, etc) Doctor from the TV Serieses Doctor Who 18:51:27 oh haha 18:51:42 and I guess PH didn't like him 18:51:43 Ngevd: "serieses" 18:51:43 okay 18:51:45 Intel(R) Core(TM)2 CPU 6300 @ 1.86GHz 18:51:45 ... 2gb ram 18:51:47 That gets you another ignore. 18:52:05 well okay, ram is quite cheap though 18:52:08 elliott, I was emphasising the plural-ness for effect 18:52:16 Because I am a /poet/ 18:52:54 the CPU is probably at the lower end as well. 18:53:26 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 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 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 i can get some of them.. but the problem is i don't get all of them 18:54:57 (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 itidus21, try base 2, that reduces the alphabet ;P 18:55:40 thats the best way i can explain the level i'm at 18:55:55 so i try to "dodge" algebra 18:56:25 Transpose? 18:56:29 yup 18:56:38 I was wondering about that too. 18:56:40 trans as in change.. not sure about the pose 18:56:43 -!- monqy has joined. 18:56:47 rewrite 18:56:59 solve? 18:57:05 i dunno 18:57:14 find a variable :) 18:57:22 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 itidus21, that's pretty damn difficult in the general case. 18:57:37 i think i mean rewrite to x=[...] 18:58:16 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 What. 18:58:50 wat 18:58:51 what do you mean isomorphic 18:58:57 Phantom_Hoover: but even for expressions with only 1 variable.. 18:58:59 bijective function. 18:59:04 no wait that can't be right 18:59:05 "duh" 18:59:10 maybe 2 or 3.. i dunno 18:59:14 and what do you mean all possible alphabets 18:59:18 all of them 18:59:20 >_> 18:59:28 very helpful 18:59:37 Do you mean finite strings on finite alphabets? 18:59:40 yes 18:59:45 "duh" 18:59:59 "okay" 19:00:00 ^ul (what)S 19:00:00 what 19:00:47 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 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 I'm pretty sure infinite-length strings are uncountable 19:01:53 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 so, i am here with only an elementary knowledge of math(s) and so it's more than a little strange 19:02:29 "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 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 "Nothing is more fun than getting trashed and ripping around the lake on my boat. This song reminds me of that!" 19:02:44 but I guess it makes sense considering that binary can be used to represent all other strings. 19:02:46 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 B. Meowsic Keyboard 19:02:55 good good 19:02:56 -!- pikhq has joined. 19:02:58 I just don't know the specific mapping 19:03:01 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 itidus21: This was a place devoid of LIGHT and REASON before we all grew up and became REAL* MATHEMATICIANS* 19:03:51 *fake 19:03:53 *CS poseurs 19:03:57 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 Phantom_Hoover, if you ever talk to me again I hope you answer that question :) 19:04:34 Vorpal, consider that he may be ignoring you 19:04:36 (if you don't then I will just assume you did in fact finally ignore me) 19:04:40 Vorpal: because he's better than you, obviously. 19:05:00 Ngevd, my next line took care of that possibility yes 19:05:15 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 kallisti, that doesn't seem right to me 19:05:25 Hmm... 19:05:33 Ngevd, okay that is a third possibility 19:05:39 Maybe Edinburgh has blown up in a ball of fire 19:05:39 Vorpal: well, in #esoteric, that seems to be the rule. 19:05:55 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 or...... 19:05:59 kallisti, anyway I don't think he is better than me. Better at some topics, sure. Worse at other ones probably. 19:06:06 Vorpal: well I didn't really mean that... 19:06:06 are the so called leading guys in the field the ones with the biggest supercomputers 19:06:15 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 kallisti, but I don't think a person can be intrinsically better than another one 19:07:04 kallisti, fair enough, but I think the implications of it being taken seriously are worth considering 19:07:11 eh.. im trolling at this point 19:07:14 Vorpal: yes that was kind of my point. 19:07:16 itidus21, :) 19:07:55 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 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 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 Esolangs are more of an art than a mathsy thing 19:08:43 Phantom_Hoover, if you ever talk to me again I hope you answer that question :) 19:08:43 i don't think that the esoteric knowledge held by military mad scientists really is very practical 19:09:06 elliott, well obviously if he timed out I will agree he didn't receive it 19:09:08 killing people is practical. 19:09:10 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 elliott: :) 19:09:29 kallisti, indeed :) 19:09:33 kallisti: I thought you were ignoring me. 19:09:42 he totally should 19:09:45 (not really) 19:09:51 Yes, he should. 19:09:56 oh? 19:10:04 basically, i think if most people don't have access to it then it can be ignored 19:10:17 what is access 19:10:27 monqy: monqy denied access to the meaning of access. 19:10:29 itidus21, very much depend on what you are trying to accomplish. 19:10:36 monqy: im sure bill gates has a secret tech room 19:10:44 where he has billion$ toys 19:10:48 i too have a secret tech room 19:10:53 anyway I need to sleep. Exam tomorrow. Computer graphics. Quite a fun topic. 19:11:19 -!- roper has joined. 19:11:36 `welcome roper 19:11:41 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 guelcon 19:11:57 hi 19:12:13 hm 19:12:15 low 19:12:29 what are the chances of me learning group theory in a topology class? 19:12:58 Mathematical or geographic topology? 19:12:59 0/0 19:13:06 maths 19:13:12 roper: ah good 19:13:27 :) 19:13:29 that's basically "I don't know" 19:13:36 I reckon roper's actually slightly further ahead in time to us 19:13:48 oopoo 19:13:50 roper> low 19:13:59 roper lives in bizarro world 19:14:06 :) 19:14:18 car 19:14:27 yes 19:14:50 no car 19:14:54 no yes 19:14:55 :( 19:15:04 cdr 19:15:11 flac 19:15:16 calf 19:15:20 midi 19:15:20 moo 19:15:28 unknown 19:15:32 undef 19:15:37 redef 19:15:45 Er... fed? 19:15:52 feed 19:16:12 beef 19:16:17 blessed hashref of blessed globrefs 19:16:29 too much 19:16:35 Not enough!!! 19:16:37 never enough 19:16:39 !!! 19:16:41 ! 19:16:42 !!!!!! 19:16:45 nevermind 19:16:50 > repeat '!' 19:16:51 "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!... 19:17:03 always mind 19:17:06 % 19:17:07 monqy motto 19:17:14 5 19:17:22 true. 19:17:27 that's numberwang! 19:17:34 !numberwang 5 19:17:37 That's numberwang! 19:17:46 well 19:17:47 roper: i just want to clarify this is the room of esoteric computer programming languages, not occult esoteric 19:17:54 wrong its super occult 19:17:59 supermax occult++ full 19:18:08 ioihgfdddf 19:18:11 you may know this im just making doubly clear so your time is not wasted 19:18:21 too much 19:18:27 `addquote ioihgfdddf 19:18:30 800) ioihgfdddf 19:18:31 good 19:18:32 rephtrase 19:18:35 best 800 quote 19:18:41 `addquote rephtrase 19:18:46 801) rephtrase 19:18:47 best 801 quote 19:18:52 -!- Vorpal has quit (Ping timeout: 276 seconds). 19:18:57 listen 19:19:00 ok 19:19:01 ok 19:19:07 we should 19:19:10 ok 19:19:12 ^ul (~:S~:^)(!):S~:^ 19:19:12 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ...too much output! 19:19:14 implement 19:19:17 ok 19:19:17 yes 19:19:23 we should implement 19:19:23 yes 19:19:26 yes ok 19:19:30 good good 19:19:32 yes 19:19:38 a language _ 19:19:45 perl JIT yes 19:19:47 brilliant 19:19:53 outstanding 19:20:02 standoutish 19:20:06 ok 19:20:09 autotopoptimised 19:20:21 Auto top optimised? 19:20:22 I'm agree. 19:20:27 ues 19:20:28 I'm angree 19:20:30 y 19:20:39 -n 19:20:41 well 19:20:48 ues i think 19:20:59 "yes" is probably what you want 19:21:05 y 19:21:09 :) 19:21:15 Ngevd: nh 19:21:24 ues si ues 19:21:29 kgvjl 19:21:34 sumamoito is the most inrfficient 19:21:44 lol 19:21:53 build -O 19:21:54 oh no 19:21:58 mount kilimanjaro 19:21:58 we must 19:22:01 refficientise it 19:22:05 i mean 19:22:08 Atrapado? 19:22:08 sure 19:22:09 rfficientise it 19:22:13 yes 19:22:28 yres 19:22:42 http://esoteric.voxelperfect.net/w/index.php?title=Vowels&curid=4086&diff=26989&oldid=24085 19:22:45 on screen keyvoard 19:22:50 elliott: So how'd the SMT'ing go 19:22:50 Ngevd: ayudame! 19:22:51 new vowels for new breakfast homesteads 19:23:10 sorry 19:23:17 Deewiant: It got into some kind of loop; I think my gcd definition was wrong or something 19:23:21 Maybe I'll look at it some more tomorrow 19:23:25 battery: 15 19:23:48 SMT? 19:23:49 vowels looks cool 19:23:53 i have some optimizations alteady 19:24:09 Ngevd: so many terraces 19:24:19 like add on hardware 19:24:27 In an esoteric programming language, optimization is not recommended 19:24:29 (satisfiability modulo theories) 19:24:37 Ngevd: I am completely disagree 19:24:56 I am completely disangree 19:24:58 yrs but we ned tine final implementation 19:25:09 ^tune 19:25:10 :D 19:25:14 Well, adding on of features to make shorter source code beyond what is necessary for Turing-completeness 19:25:14 sorry 19:25:16 :) 19:25:19 Unless you're befunge 19:25:23 Ngevd: nope wrong 19:25:38 perl best esolang fro example 19:25:38 I have controversial opinions 19:25:43 source code unchanged 19:25:43 Ngevd: you're discussing tarpits there 19:25:47 not all esolangs are tarpits 19:25:47 True 19:25:53 im houses 19:26:08 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 best fro example 19:26:14 SumaMoito is, however, a tarpit 19:26:22 "SumaMoito is a family of languages that aims to include minimal Turing-complete languages with a particular style." 19:26:27 ais523: Haskell isn't very tarpitty. maybe in Core. 19:26:27 3 tarpits, rather 19:26:37 ais523: and also conveys some new ideas. 19:26:41 eg hardware-add ÷÷ sumamoito add 19:26:50 ais523: well... hmmm 19:26:51 maybe not. 19:26:58 '/'/'/'''''''''/ 19:27:03 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 probably. 19:27:17 I don't know where they originate, except for ML. 19:27:22 and lambda calculus 19:27:38 collapde-afd 19:27:39 FORTRAN 19:27:46 Haskell is kind of a synthesis of already existing ideas, I guess. 19:28:03 IIRC the reason Haskell was invented was that so many people were trying to make lazy functional langs all at once 19:28:06 and they decided to join forces 19:28:06 Ngevd: yes, Haskell is based on FORTRAN 19:28:06 not really 19:28:09 yeah what ais523 said 19:28:18 (not sure if "pure" was in there from the start, or added later) 19:28:25 basically pure non-strict languages were just coming into existence 19:28:32 and everyone had their own dialect 19:28:37 there was miranda and i think lazy ml etc. 19:28:37 sumamoito add is on hardware add is slightly more than ologn 19:28:42 thus the haskell committee 19:28:57 elliott: I'm actually thinking that we need a pure total functional language 19:28:58 mm 19:29:04 ais523: the typeclass system is a haskell innovation though I think 19:29:10 maybe with the ability to use partiality under controlled circumstances 19:29:16 and probably Haskell's most prominent added feature 19:29:20 ais523: meh, that already exists 19:29:28 sure, total languages can't express anything, but the things they can they're better for 19:29:40 yeah yeah 19:30:05 transform languahe features to match hardware fearures 19:30:07 and if a language is both total and pure, evaluation strategy is irrelevant 19:30:17 you can use call-by-telephone and it still works just fine 19:30:23 interestingly, some definitions of weak typing count ad-hoc polymorphism as weak typing. 19:30:28 :) 19:30:31 ais523: i'm not sure whether you think you're stating non-obvious things or not :P 19:30:56 elliott: I think it's obvious, and yet people don't care about it anyway 19:31:11 sure they do 19:31:16 roper: yes compilers that compile to machine languages are good at that. 19:31:27 yes 19:31:43 but collapse all language features? 19:31:50 ais523: what about call-by-nothing evaluation? 19:31:56 where you do nothing isntead of evaluate. 19:31:57 ais523: Did you settle on whether Funge-98 is an esolang? 19:32:01 we nedd an uncollapsed language 19:32:14 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 so I'm not going to bother trying to argue the point 19:32:21 roper: depends on what you mean by collapse 19:32:37 ais523: Fair enough I guess. 19:32:41 reduce to hardware operations 19:32:42 -!- pikhq_ has joined. 19:32:45 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 i wonder what he has in mind 19:33:02 sure$ 19:33:11 ais523: I think Funge-98 is an esolang, FWIW (and I don't think it's particularly esoteric myself). 19:33:24 What's the definition of an esolang you generally use? 19:33:37 Deewiant: Who, me or ais523? 19:33:47 Deewiant: a language for which writing a fully-featured standard library would be a waste of time 19:33:54 elliott: Both, I think, which is why I didn't address it. 19:34:00 ais523: Terrible definition IMO 19:34:03 line wrap not allowed. q 19:34:13 hwat 19:34:14 q 19:34:16 a language for which defining what esolang means would be a waste of time. 19:34:19 elliott: or, not so much waste of time, but people not thinking it's necessary 19:34:38 40 chars 19:34:46 kimit 19:35:00 ais523: So basically "a language which is hardly used at all, or only used as a joke" or something thereabout? 19:35:00 A language designed to entertain rather than to be used for any practical task is my definition 19:35:18 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 what if its a language designed for only 1 user? 19:35:28 o am drinking water 19:35:34 I think entirely made-for-practical-use languages can be esolangs too, e.g. bancstar 19:35:42 battery 14 19:35:44 elliott: but I declare every language I invent an esolang, regardless of what it's for 19:35:47 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 hmm, would you consider OIL an esolang? 19:35:51 but of course it's a kind of failure for a practical language to get that status 19:35:54 to me, it's just a DSL 19:36:05 whats a DSL? 19:36:12 and ursala! 19:36:26 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 itidus21: domain-specific language 19:36:36 hmm, those could be called "accidental esolangs" perhaps? 19:36:53 elliott: http://c.intercal.org.uk/manual/dlbvn76f.htm#Optimizer-Idiom-Language 19:37:02 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 it's a language invented for the purpose of implementing INTERCAL optimisers 19:37:11 it's pretty good at that, and really bad at anything else 19:37:13 Even if Befunge-98 is nicer to program in than Ursula. 19:37:22 esolangs are languages that make defining what esolang means difficult. 19:37:42 elliott: that's the kind of definition I'd use as well. 19:37:45 wesay this is equivalent to 19:37:52 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 and we optimisr to 19:38:36 * kallisti has seen some people claim that C is an esolang. 19:38:38 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 like 19:38:41 also Haskell. 19:38:54 dgffgg %% add 19:38:57 elliott: Heh, yes. 19:38:58 People like to say "lolololol is an esolang". 19:38:59 then 19:39:02 Especially Perl, Java, etc. 19:39:05 But that's just noise. 19:39:07 I first encountered Haskell on this channel 19:39:15 we transform things to dgffgg 19:39:19 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 As long as that includes all kinds of use. 19:39:32 !languages 19:39:41 :$ 19:39:43 Err, 19:39:44 !help languages 19:39:45 ​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 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 elliott: so would you say LOLCODE is intended to be an esolang? 19:39:55 ^^^ Herp durp I call non-esolagns eso too 19:39:56 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 I can't believe its authors had heard of esolangs, otherwise they wouldn't have invented something so banal 19:40:14 Deewiant: BANCStar's basically an asm 19:40:18 just an insane one 19:40:18 ais523: I don't think the inventors of LOLCODE are competent enough to intend one way or another. 19:40:24 ais523: Yes. 19:40:30 elliott: that's pretty much my argument 19:40:34 ais523: But I definitely recall the author didn't know of esolangs. 19:40:40 for Gregor an esolang is any language that's not C, assembly, C, cxx (???), forth, or sh 19:40:48 also C 19:40:53 gah: http://esoteric.voxelperfect.net/wiki/Vowels 19:40:55 LOLCODE probably is an esolang based on its sliver of silly syntax, but it's a really bad one. 19:40:55 I would say that LOLCODE is intended as an esolang. 19:41:17 Even if the author(s) didn't know the term or other such languages, it's clearly got a similar intent. 19:41:26 ^ul ((!)S:^):^ it's the age of minimalism, simplify! 19:41:26 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ...too much output! 19:41:30 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 the category of languages that includes Vowels was done better by Sorted! 19:41:41 which will probably never be beaten in that category 19:42:03 elliott: It's just an assembly language, IMO. 19:42:17 Deewiant: Yeah, it's more of a community sense in which it counts as one than a language sense :P 19:42:19 you'd probably discover that x86 microcode is just as insane 19:42:26 Deewiant: It lacks the mnemonics to be an assembly language, though, I think. 19:42:29 or, hmm, it probably differs between manufacturers 19:42:31 but you know what I mean 19:42:34 esolangs are languages that are members of the set of esolangs. 19:42:38 elliott: Then you can call it an ASCII-encoded object format. 19:42:45 glue language 19:42:52 lol gluethon 19:42:54 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 "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 (English/Latin) 19:43:50 a sumamoito loop is optimised by some add 19:43:52 Gregor: What's EgoBot's '!forth', gforth? 19:43:54 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 nnested 19:44:32 unnested 19:44:38 ununested 19:44:41 uunnested 19:44:47 uuencoded 19:44:51 Deewiant: http://esolangs.org/wiki/Forth 19:44:57 fizzie: Yeah, gforth. 19:45:16 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 Deewiant: That includes oddball things like Joy and whatnot. 19:45:33 elliott: I'd have a "category: non-esoteric", then. 19:45:36 !forth gforth type 19:45:37 ​\ 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 Hmm. 19:45:47 Also http://esolangs.org/wiki/Chalcraft-Greene_train_track_automaton. 19:45:54 Deewiant: Negated categories? Nah. 19:46:01 Deewiant: [[Category:Not 1999]] 19:46:04 i dont understand how befunge98 could possibly not be esoteric 19:46:18 elliott: Well, "category: esoteric" would be fine as well, just more work to keep up-to-date. :-P 19:46:33 And also seemingly redundant with the topic of the site. 19:46:33 Deewiant: http://esolangs.org/wiki/Category:Languages 19:46:45 It would be nice to be able ot perform boolan operations on categories in wikis. 19:46:47 elliott: That doesn't say "esoteric languages". 19:46:52 elliott: Forth is a language. 19:46:59 Deewiant: Yes, but it's only for esolangs, just like Forth was misplaced in [[Category:Before 1993]]. 19:47:12 Adding "esoteric" to everything would be too many words. :p 19:47:22 battry 13 19:47:35 !forth hi 19:47:36 ​\ 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 elliott: Put it in the description of that category, then. :-P 19:48:07 here is my question for you.. would you pay someone a salary to code in befunge98? 19:48:14 fsvo you 19:48:17 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 Deewiant: Yeah, if you did it anonymously your vital contribution of "Esoteric" would be lost to the sands of time. 19:49:00 It might even not end up on your tombstone. 19:49:04 HERE LIES DEEWIANT 19:49:06 "ESOTERIC" 19:49:14 i only need bread and water 19:49:24 elliott: Something like that, yes. 19:49:26 Actually "ESOTERIC" would be a badass epitaph. 19:49:29 !forth : gfv s" gforth" environment? if type then ; gfv 19:49:30 0.7.0 19:49:33 Okay, right. 19:49:35 Not epitaph. 19:49:37 Is it epitaph? 19:49:48 Deewiant: Anyway, maybe tomorrow. 19:49:53 There should be more esolang collabs 19:50:03 abcdef 19:50:09 (Didn't notice it was an environment-query thing and not a word.) 19:50:14 abcdef...g 19:50:47 elliott: What's happening today? 19:51:17 the end of the world approaches 19:51:25 Deewiant: I'm tired. 19:51:26 rip future world 19:51:29 And lazy. 19:51:57 1 second per second 19:52:04 oh no 19:52:18 no exit 19:52:24 :( 19:52:35 quantum language 19:52:38 RIP future world ,~ESOTERIC~` 19:52:42 roper: hi 19:52:51 hi elliott 19:52:54 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 Why do we travel through time at 1 second per second?, page 1 http://www.abovetopsecret.com/forum/thread551324/pg1 19:53:11 !forth s" gforth" environment? [if] type [then] \ simplify! 19:53:12 0.7.0 19:53:23 Deewiant: You're picking me due to my inexperience, right? 19:53:34 Deewiant: Something like QuickCheck seems ill-suited to C. 19:53:38 Not many C functions are pure. 19:53:42 Fuzz testing seems like the closest thing. 19:53:46 (Now it doesn't need to be in a separate dummy word just because if is a compile-only word.) 19:54:04 fizzie: Now implement Befunge. 19:54:22 elliott: I have a gforth interpreter (for -93) already, but it won't fit on one line. 19:54:23 Wow, TAP dates back to 1987. 19:54:31 fizzie: Yes, that's why you have to do it again. 19:54:32 Also -98. 19:54:37 (Also EgoBot takes URLs.) 19:54:46 Fuzz testing is pretty much the same thing. 19:54:48 It probably has bitrotted away anyway. 19:54:48 Deewiant: Oh! There's Falderal. :) 19:55:04 (http://catseye.tc/projects/falderal/) 19:55:07 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 I'm just wondering about good software for doing it, not just "cat /dev/random | test program". 19:55:53 Man, be.fs is like the worstest. The 2003 fizzie should be shot. 19:56:14 fizzie: He was cool!!! he used lowercase 19:56:28 I can see that, all the comments in this are in lowercase. 19:56:55 Deewiant: I bet you're not even *considering* Falderal. :p 19:57:15 elliott: "doctests for DSLs" isn't really what I'm after. :-P 19:57:37 Deewiant: Well, you could make it more-or-less work like TAP except slightly awkwarder. :p 19:58:20 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 Deewiant: Has anyone ever told you you're BOERING? 19:59:14 elliott: Hey, you could be my fuzzer. Write me a battery of Funge-Space tests. 19:59:49 Deewiant: Okay. 20:00:00 Deewiant: I'm not entirely sure how you would fuzz-test a fungespace. 20:00:22 Neither am I. 20:01:17 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 Deewiant: You should prove it correct. 20:02:17 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 precise 20:03:33 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 Deewiant: I mean, the rendering part will already test the reading operations. 20:03:45 Also that's easier. 20:04:28 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 hmm, so someone should make the funge spec executable 20:05:31 Deewiant: What could that miss? I mean, with enough samples... 20:05:36 olsner: They did. 20:05:39 olsner: It's called Mycology. 20:05:40 meh 20:06:14 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 can I define to- hardware optimization? 20:06:59 Deewiant: That, a few thousand times. Except probably restrict the range so you're likely to hit the pre-initialised data. 20:07:06 lidten 20:07:10 I suppose that doesn't test for things like possible overflow, but you could do "edge" tests separately. 20:07:22 battery 12 20:07:39 elliott: I guess one could generate a random offset to load the original data to. 20:07:57 Which could then be biased to be near the edges at least some of the time. 20:08:16 Deewiant: Man, who even cares, just release the damn thing already. 20:08:20 assign a name for each hardware operation 20:08:31 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 assing some or more codes for each name 20:08:54 fizzie: *Facebook 20:09:04 It's only "facebook" in the logotype. 20:09:08 elliott: I confused it with fREenODE, sorry. 20:09:11 transform from/to them and other 20:09:12 . 20:09:24 Freen Ode. 20:09:31 ode to freen 20:09:32 ooooo 20:09:37 Ode to nerf-E. 20:09:52 roper: How drunk are you? 20:09:59 hehe 0 20:10:14 me too 20:10:15 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 On a scale from -10 to 0. 20:10:20 battery 10 20:10:31 Deewiant: Sure it would; x+8 would be read in the ->string conversion. 20:10:40 ) 20:10:51 one day i hope to be negative drunk 20:10:56 elliott: But that precise sequence of writes? 20:11:00 monqy: Knurd is the term. 20:11:03 that is acid 20:11:06 Deewiant: Well, it's fuzz testing. 20:11:13 Deewiant: There's no intelligent design. 20:11:35 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 pur one, elliot 20:12:00 battery 9a 20:12:33 a %% almost-from-top 20:13:02 "optomized" 20:13:03 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 :) 20:13:42 it would be interesting to implement a fungespace on something that's far more parallel than a traditional CPU 20:13:46 like a GPU perhaps? 20:14:26 That wouldn't really be interesting. 20:14:33 You don't really access them concurrently. 20:15:09 hmm, right. 20:15:12 but you could. 20:15:22 Except with ATHR, I guess. 20:15:42 ("in ATHR": the new "in Feather"?) 20:16:39 -!- ais523 has quit (Remote host closed the connection). 20:17:04 Deewiant: It has the sibling "in NSCK" for anything networking-related. 20:17:21 battery 8a 20:17:46 fizzie: I'll have to remember that one. 20:18:18 roper: maybe you should charge 20:18:24 ; optomize your battery% 20:18:30 What is a WA game style doing here? 20:18:31 no, I wont until off 20:18:36 :) 20:18:38 but then it will off 20:18:44 sure 20:18:49 and me sleep 20:19:04 what about all the poor datas 20:19:05 Sgeo: Ropers date back to Worms 2, you uncultured plebeian. 20:19:23 I hope they will stay 20:19:33 * Sgeo installs Hedgewars due to not having his WA.iso handy 20:19:55 it is an android 20:20:09 anananandroid 20:20:10 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 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 :/ 20:20:59 fizzie: You should make a BABL to accelerate babble-generation. 20:21:06 Bonus: Tower of Babel allusion. 20:21:13 mikmod 20:21:38 The module player library? 20:22:51 -!- oerjan has joined. 20:22:56 Yes 20:23:12 elliott: How about benchmarks, what's "criterion for C"? 20:23:15 I seem to recall that some MikMod's XM effects were a bit dubiously implemented. 20:23:15 I assume hedgewars uses modules for music 20:23:29 Deewiant: You know the great thing about Haskell? 20:23:35 Deewiant: All those wonderful tools you don't get with C. 20:23:58 (And vice versa.) 20:24:07 It's a bit shaky 20:24:11 (The music) 20:24:23 Sgeo: How retro. Also fmod would have more street cred. (And a worse license.) 20:24:46 I think fmod is by scenesters. 20:24:51 Deewiant: Anyway, just write your own thing or whatever. 20:25:06 I don't think C people "outsource" such "trivial" things. 20:25:13 Firk ding blast. 20:25:23 They seem far more businessy than what they did. 20:25:40 -!- augur has joined. 20:25:43 It's true that C programmers tend to be far too NIH-y. 20:26:08 Anyway, they've got that minifmod thing that does XM playback in 5k, they must have *some* intro background. 20:26:10 Deewiant: Well, the language kind of forces you to. 20:26:21 Deewiant: There's not really much in the way of abstraction. :p 20:26:55 It doesn't force you to, it just makes it a bit tricky to not. 20:28:01 Deewiant: Well, you have to resort to cpp for anything beyond the most basic abstraction. 20:28:11 Deewiant: Which gives you all the abstractional power of raw text substitution. 20:28:18 But oh well, I guess NIH + ministat is the way to go. 20:29:31 What's ministat? 20:29:36 https://github.com/codemac/ministat 20:29:57 Deewiant: So cheating. 20:30:03 entanglement 20:30:05 Got a better idea? 20:30:11 Deewiant: Write yer own!!!! 20:30:20 Be sure to replicate it feature-for-feature. 20:30:54 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 always had to code it 20:34:03 -!- MSleep has joined. 20:34:12 fizzie: Bourgeoisie Funge-98 software since 2007. 20:35:29 -!- MDude has quit (Ping timeout: 240 seconds). 20:36:24 Deewiant: You know what they say, can't spell Funge-98 without Bayes' theorem. 20:36:29 Unless you're DEEWIANT. 20:37:06 Er, shouldn't that be that you /can/ spell it without it unless you're Deewiant? 20:37:30 No; being a frequentist, you obviously somehow spell it without. 20:39:40 What fizzie said. 20:39:52 Which is a PERVERSE ABOMINATION. 20:39:58 PERVBOMINATION. 20:41:16 Well, I don't think I can come up with a prior for the speed of my Funge-Space. 20:41:24 when do you expect we talk in binary? 20:41:30 R'lyeh standard time. I wonder what that would be like <-- enough time for death to die 20:41:38 will+ 20:41:53 Deewiant: Then you will use an uninformative prior. 20:42:01 2013? 20:43:48 -!- augur has quit (Ping timeout: 240 seconds). 20:44:56 -!- augur has joined. 20:45:02 pull and wait 20:45:33 push and wait 20:45:41 pull push 20:45:45 01 20:47:27 0110 20:48:16 01%%10 20:48:40 0+0%%00 20:48:47 hi 20:48:57 1+1%%11 20:48:58 Deewiant: "So fast". 20:49:58 so pppqqq%%010101 20:50:40 elliott: Shush, I want to observe this in peace. 20:51:13 %% means interchangeable 20:51:34 Deewiant: What, roper or your funge-space? 20:51:44 + means concatenation 20:51:45 Hello! 20:51:46 elliott: roper. 20:52:01 :) 20:52:14 well that is almost all 20:52:30 ask anything 20:53:01 battery 7a 20:53:44 that may serve for optimisation 20:53:49 replace 20:54:14 from ffaster to slower or viceversa 20:54:51 may need to go slower before faster 20:55:07 in the chain 20:55:37 it may inviolve mathnythinfg 20:55:47 :) 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 double+doube%%quad 20:58:38 l 20:58:53 quadruplicate 21:00:45 inc a + inc a + dec a %% inc a 21:00:59 system() should be called shell() because that's what it does. 21:01:01 -!- Patashu has joined. 21:02:09 Deewiant: What, in C? 21:02:23 Yep. 21:02:36 Deewiant: No it doesn't. 21:02:44 Deewiant: You're a terrible DS9K thinker. 21:03:02 Deewiant: It should be called commandprocessor(). 21:03:20 "shell" is the max-6-letter equivalent of "commandprocessor". 21:03:48 But these are the days of max-31-letter names. 21:03:51 Deewiant: system() just does something completely unspecified, so "system" seems like a good name for it. 21:03:55 It calls out to the system, somehow. 21:04:03 elliott: It passes the string to a command processor. 21:04:18 Is that defined? 21:04:20 "system" makes me think of system calls. 21:04:25 That is how it's defined. 21:04:36 Fair enough. 21:04:48 "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 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 executed in a manner which the implementation shall document; this might then cause the 21:04:58 program calling system to behave in a non-conforming manner or to terminate. 21:05:04 I like the warning. 21:05:13 battery 6a 21:05:32 Also I wonder how many times system(NULL) has been used. 21:05:47 Unaccidentally, anyway. 21:06:25 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 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 battery 5a 21:08:52 fizzie: Nah; I trust that if they check it, they do so properly. :-P 21:09:06 battery 4a 21:12:59 battery 3a 21:13:34 battery 2a 21:15:20 battery 1a 21:17:32 on the DeathStar 9000, system() of course blows up a star system. 21:17:36 batterya 21:18:47 rip 21:18:55 almost 21:19:02 1% 21:21:28 -!- roper has quit (Read error: Connection reset by peer). 21:21:43 I can't tell whether he's avant-garde or just stupid. 21:21:45 Thus ends roper. 21:22:01 The ropening: a saga for the ages. 21:22:29 Maybe he was a robot slowly deteriorating as he runs out of power, a million miles from Earth. 21:22:32 Only IRC to keep him company. 21:23:11 `frink 1000000 miles -> c s 21:23:24 804672000/149896229 (approx. 5.368193752225748) 21:23:40 i guess we've had worse lag than that 21:26:13 his ip hinted spain 21:26:41 His server hinted USA 21:26:54 oh 21:27:12 Maybe he was in the Spanish Embassy in New York? 21:27:14 i see >.> 21:27:20 im not good at irc 21:27:52 itidus21: His IP is the more relevant info, you can obviously connect to any server you want. :-P 21:27:53 Deewiant: um servers are frequently assigned randomly? 21:28:15 -!- Phantom_Hoover has joined. 21:28:24 bijective function. 21:28:25 oerjan: I guess they are, if you just connect to irc.freenode.net or whatever. 21:28:42 BtW, this is never what 'isomorphic' means. 21:28:46 atrapado also suggests spanish 21:28:50 But why would you not connect to irc.eu.freenode.net or some such continentally appropriate name. 21:29:19 An isomorphism is a bijection which also preserves structure in some way, at least in all the examples I've seen. 21:29:24 19:01:34: I'm pretty sure infinite-length strings are uncountable 21:29:28 Sorry, chat.eu.freenode.net. 21:29:34 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 Phantom_Hoover: except in the category of Set, you uncouth illiterate 21:29:46 Phantom_Hoover: define "preserves structure" 21:29:53 oerjan: *illiterate fuck is standard terminology tyvm. 21:29:58 Deewiant: Yes, it converts 32 random bits into an IPv4 address and goes there. 21:30:02 oerjan, who the hell uses isomorphisms in Set. 21:30:13 fizzie: That's what it seems like. 21:30:17 elliott: i was a bit confused after what i saw in the log, was it uncouth plebeian? 21:30:18 kallisti, it varies. 21:30:35 * oerjan only looked at some of the logs today 21:30:37 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 For groups, it means that f(x*y) = f(x)*f(y). 21:30:52 I seem to have lindbohm.freenode.net and chat.eu.freenode.net listed. 21:31:01 oerjan: You've been accused of espionage in the logs. HTH. 21:31:02 Illiterate DARN. 21:31:05 -!- NihilistDandy has joined. 21:31:14 oerjan: I guess if the recipient is illiterate it doesn't matter what words you use. 21:32:01 For graphs, it means that edges and nodes stay attached. 21:32:09 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 Phantom_Hoover: ah okay. 21:32:28 C'moon. C'mon SO. Two upvotes in two and a half hours. 21:32:29 oerjan: But you might end up in the Americas! They might shoot you! 21:32:30 You can do it for me. 21:32:36 Let me breach 6,800 today. 21:32:58 (They shoot people there.) 21:33:02 half 21:33:07 Oops. 21:33:07 19:01:34: I'm pretty sure infinite-length strings are uncountable 21:33:11 Yes, they are. 21:33:14 Yes, they shoot them IN HALF. 21:33:34 I saw a MythBusters show about that. (Or I guess it maybe was a tree.) 21:33:41 `addquote I saw a MythBusters show about that. (Or I guess it maybe was a tree.) 21:33:44 If you shoot them in half, they stay infinite. 21:33:45 802) I saw a MythBusters show about that. (Or I guess it maybe was a tree.) 21:34:12 oerjan: Have you seen our perfect quotes: 21:34:14 `quote 800 21:34:14 `quote 801 21:34:17 800) ioihgfdddf 21:34:38 The mysterious quote 801. 21:34:45 `quote 801 21:34:49 801) rephtrase 21:35:19 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 801) rephtrase 21:35:34 https://github.com/ktat 21:35:43 ohmy;'god 21:36:04 Sgeo, you didn't tell us KT-AT could Perl. 21:36:16 Wait a goddamn goddamn second 21:36:20 Phantom_Hoover: That's only one program. 21:36:23 She has to learn all the other programs. 21:36:25 Or was that another one. 21:36:26 Are pi and e co-transcendental? 21:36:31 That was Idiot Girl. 21:36:35 Ngevd, co-transcendental? 21:36:39 Phantom_Hoover: The politest name. 21:36:48 oerjan: Your careless un-Torred logged-in Wiki edits have revealed you. 21:36:57 The categorical dual of transcendental? 21:36:59 oerjan, define this. 21:37:04 fizzie: As opposed to Torred logged-in wiki edits. 21:37:09 Those would have been so fucking safe. 21:37:38 Phantom_Hoover, a is not expressible in algebraic terms of b 21:38:07 elliott: ONION ROUTING. 21:38:11 You mean a /= kb, k \in A? 21:38:19 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 Where A are algebraics. 21:38:34 fizzie: He just stepped on a security rake and got a face full of fucking safety, etc. 21:38:48 (The onions are the rake.) 21:39:33 (diff) (hist) . . N User:Asd4628182‎; 21:36 . . (+3) . . Asd462818 (Talk | contribs) (New page: asd) 21:39:34 (diff) (hist) . . N User:Asd462818‎; 21:31 . . (+3) . . Asd462818 (Talk | contribs) (New page: asd) 21:39:37 SPAMBOTS. YOU'RE NOT EVEN TRYING ANY MORE. 21:40:03 oerjan understands me 21:40:13 Damn you oerjan. 21:40:20 oerjan, will you be my friend? 21:40:28 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 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 [...] 21:40:48 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 er, 21:40:57 *pi and e 21:41:03 no division implied 21:41:15 Erla64ys418a "a good spambot" 21:41:55 Phantom_Hoover: so more like prime : coprime :: transcendental : cotranscendental 21:42:01 monqy: fuck tonight locally 21:42:19 it was a link too 21:42:51 "What’s the Trick to Fucking Local Horny Locals Tonight?" 21:42:56 modern ways of camping 21:43:14 They're not just local, they're fucking local. 21:43:23 I mean, these locals are local as *shit*. 21:43:52 Edinburgh, city where shit is fucking local 21:44:06 Phantom_Hoover: They're so fucking local that they're referred to as "local" TWICE in the same question! 21:44:39 I can't deal with all this locality. 21:44:42 I'm going camping. 21:44:51 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 i also like the userpages of the asd bots 21:45:59 theyre very good 21:46:04 just get a sleeping bag and a room at the alta ice hotel 21:46:30 oerjan: Also known as a "Norwegian holiday". 21:46:50 (no i haven't tried that. do i _look_ insane? oh right. well, i still haven't.) 21:49:28 Or the Kiruna "ICEHOTEL" if you want the "Swedish holiday". 21:49:32 Ngevd: you can be my slightly less often beaten minion, if you like. 21:49:40 :D 21:49:48 http://www.itravelguide.co.uk/wp-content/uploads/2011/07/ice-hotel-jukkasjarvi-church.jpg <- the hotel. 21:49:53 (Okay, so it's just their church.) 21:50:33 fizzie: omg :DD 21:50:35 There's also a snow hotel in Finland. 21:50:42 fizzie: wait, are you saying finland... ok. 21:50:43 It's less translucent. :/ 21:50:55 http://www.snowcastle.net/en/ 21:51:21 They do weddings and that sort of thing, much what you'd expect. 21:51:30 I think mooz might've stayed there? 21:52:08 They do have some ice in it, but judging from the photos not quite as much as at the ICEHOTEL. 21:53:37 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 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 Which is pretty pointless. 21:55:30 Apparently summer tourists have been so disappointed for not being able to go to the ice hotel. 21:56:51 fizzie: http://en.wikipedia.org/wiki/Ice_hotel says it's just ice that is stored, not the previous hotel 21:56:59 Phantom_Hoover: so sets do not have isomorphisms? 21:57:06 or are set isomorphisms just bijective functions? 21:57:14 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 kallisti, they're just bijections, so nobody calls them isomorphisms. 21:57:58 "Sleep well in -5 °C" 21:58:00 Yeees. 21:58:17 fizzie: ah. 21:58:21 "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 Phantom_Hoover: would it be technically incorrect to say so? aside from being laughed at? 21:59:15 kallisti, finite strings aren't the same as sets. 21:59:16 fizzie: So are the beds made out of ice in ICEHOTEL? 21:59:21 There's an implied structure there. 21:59:22 elliott, yews. 21:59:25 *yes 21:59:31 Phantom_Hoover: yes but a set of finite strings is a -- oh I see :P 21:59:57 Phantom_Hoover: Wait, really? 22:00:10 elliott, they have insulation on top. 22:00:16 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 Is it bad that I don't see the paradox in the Banach-Tarski Paradox? 22:01:03 Deewiant: The reindeer skin is frozen, right? 22:01:04 elliott: Yes, it's made of ice. 22:01:13 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 Ngevd: What, do your folk usually take a sphere apart and reassemble it into two spheres of the same size? 22:01:32 "paradox" is pretty much a meaningless word these days. 22:01:37 elliott, nah, we don't have enough spheres 22:01:55 Its meaning seems to be approximately along the lines of "whoa, man". 22:02:04 shachaf: Yes, those modern Banach-Tarskiers totally ruined everything. 22:02:06 I mean, it's just Hilbert's Hotel all over again 22:02:07 I remember the day when... 22:02:15 Ngevd: Not... really. 22:02:18 elliott: Well, it's been that way for a while. 22:02:29 Hilbret's hotel? Huh? 22:02:47 Is it bad that I don't see the paradox in the Banach-Tarski Paradox? 22:02:59 Not really, it just means you understand what it actually means. 22:03:19 Phantom_Hoover: I somewhat doubt that? 22:03:24 I have the feeling Ngevd doesn't understand what it actually means, going by what it just said. 22:03:26 elliott, why? 22:03:32 Aaah stop making me delete what I'm writing then making me realise that I didn't need to delete it 22:03:51 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 Phantom_Hoover: Or compare it to Hilbert's hotel. 22:04:13 My actual working definition of "paradox" is "an apparent contradiction". 22:04:21 Which covers a lot, you must admit. 22:04:29 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 elliott, only when thinking about physics 22:05:04 And even then not strictly paradoxical 22:05:12 elliott: Well, Hilbert's Hotel can be rearranged to, like, fit Hilbert's SUPERhotel. 22:05:35 Ngevd, it's more complex than just Hilbert's hotel; for one thing, it relies on the axiom of choice. 22:05:36 Ngevd: I don't see why you think things become less paradoxical-sounding when you detach them from "physics". 22:05:40 It's still geometry. 22:05:56 elliott, only finite subdivisions of the pea and the sun 22:06:00 * shachaf is not a fan of geometry. 22:06:20 As opposed to the hypothetically infinite subdivisions of the magic maths ball 22:06:21 shachaf, it's only tangentially geometry, really. 22:06:22 shachaf: don't be such a square! 22:06:32 the non-measurable weirdness going on with the pieces. 22:06:33 The meat of the proof is actually some neat group and set theory. 22:06:34 They've got some specifically warm sleeping bags, or some-such. 22:06:35 Argh. 22:06:40 I deleted the wrong part of that line. 22:06:51 From what I've heard it's still a bit chilly, at least in the Finnish snowcastle. 22:07:01 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 Also having a wedding there is probably a recipe for a bit... frozen performance on your wedding night, maybe? 22:07:18 As opposed to the hypothetically infinite subdivisions of the magic maths ball 22:07:24 I think this explains everything, really : http://www.youtube.com/watch?v=uFvokQUHh08 22:07:24 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 This does kind of imply that he gets that much. 22:07:32 Yes this occurred. 22:07:44 s/ :/:/ # grr 22:07:55 I'm used to it, carry on talking about me behind my back in front of my back 22:08:11 That Ngevd guy sucks. 22:08:22 shachaf: what 22:08:26 fizzie: ... 22:08:37 Also I need sleep, tomorrow is an important day for me. A day I do not want to be sleepy on 22:08:39 Goodnight 22:08:41 -!- Ngevd has quit (Quit: Goodbye). 22:08:48 He's getting married. 22:08:58 Oh, I thought it was just a very mellow ragepat. 22:09:06 He is going to try to execute the Banach-Tarski paradox in real life. 22:09:14 You need to be very deft with a scalpel. 22:09:15 Phantom_Hoover: With himself. 22:09:21 And then marry his clone. 22:09:25 Very deft. 22:09:26 Phantom_Hoover: he'll fail, but then try again on Dec 21. 22:09:29 good video 22:10:17 good song 22:10:37 banach-tarski 22:12:26 This university should probably do something about its orange problem. 22:12:30 En samling af de bedste film der har medvirket i Matematik Revyen. 22:13:00 `words --danish 20 22:13:06 Unknown option: danish 22:13:09 Aw. 22:13:17 ONE UPVOTE SO 22:13:18 ONE UPVOTE 22:13:24 Also poor Denmark, I don't think they've got an ice hotel at all. 22:13:52 elliott: How would you like a shiny point of IRC karma? 22:13:52 `words --norwegian 20 22:13:56 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 fizzie: Close enough! 22:14:25 `words --finnish 20 22:14:27 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 codu.org spam 22:53:42 how do you even get away with that Gregor 22:54:57 Lies. 22:54:59 Filthy lies. 22:56:11 "hi, i need a whatever-line extension so i can connect my bots that aren't part of any botnet" 22:56:43 BotNETs are typically, y'know, botNETs. 22:56:53 Microsoft Visual Bot.NET 22:57:21 anyhow i'm listening to music that AnMaster/Vorpal would hate 22:57:25 (C64 music :D) 22:57:42 actually, do you like chiptune stuff at all? 23:06:36 awwwww yeah chiptune 23:07:02 my music sucks ass... i basically just used a midi composer and placed some random notes 23:08:05 i'm at least pretending to work on a sega master system music driver 23:08:22 cool 23:08:27 wanna know what i was doing? 23:08:48 telling my mom about this jackie chan biography i have been reading while making a cup of coffee >.< 23:09:25 multitasking 23:26:22 it's ok as long as you don't leave coffee stains 23:26:53 Deewiant: pixelsize=12 didn't (on the top row, anyway), now I already turned that thing off. 23:26:56 i love retro gaming anyway 23:27:11 its the best thing 23:27:21 it reminds us that modern gaming aint so great 23:27:53 and.. reminds us about the joys of haptic feedback before touchscreens became so popular 23:29:01 and the joys of indexed image palettes 23:29:42 There's that one pretty webpage doing palette-rotation animations with canvas. 23:29:48 and the joys of box shaped image restoration filters 23:31:11 and video game magazines .. im sure they'll never be the same 23:32:23 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 whoa 23:33:19 not what i expected 23:33:33 battery 73a 23:33:48 i think i should say and the joys of pixel art.. too 23:34:13 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 The pictures are drawn by a guy who's done backgrounds for Loom and Secret of Monkey Island. 23:38:46 ah... he is that kind of scum 23:39:48 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 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 `pastelogs 00:05:49 `pastelog 00:06:08 `log >.*palindromes 00:06:17 http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.9465 00:06:42 No output. 00:06:57 `log \>.*palindromes.*iterate 00:07:19 http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.15923 00:07:26 2012-01-13.txt:00:06:57: `log \>.*palindromes.*iterate 00:08:56 http://en.wikipedia.org/wiki/Palindromic_number 00:09:01 every number is a palindromic number... 00:09:17 there exists at least one base in which that number is a palindrome. 00:09:48 actually, infinitely many 00:10:41 for any number n, all bases m > n? 00:10:57 e 00:11:00 yes 00:11:31 i mistyped the empty string and then fumbled a bit but now i'm ok 00:11:57 also m=n-1, it seems 00:12:05 -!- NihilistDandy has quit (Quit: Linkinus - http://linkinus.com). 00:12:10 http://en.wikipedia.org/wiki/Strictly_non-palindromic_number 00:13:38 a 00:13:43 oopses mistyped empty string 00:13:49 I meant to say: 00:21:07 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 um no, that's 12 00:21:50 oh rite 00:21:57 that's not a palindrome ha ha ha ha ha ha ha ha ha 00:21:58 ha 00:22:04 ^ha 00:22:04 ha. ha. ha ha. ha ha ha. ha ha ha ha ha. ha ha ha ha ha ha ha ha. ha ha ha ha ha ha ha ha ha ha ha ha ha. ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha. ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha 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 in my opinion bash has the best support for infinite data structures. 00:22:42 i...c 00:23:13 hi 00:23:20 maybe the human mind is an infinite data structure. 00:23:25 hi 00:23:48 the human body is like a cellular automata of infinite structures. 00:24:06 an 00:24:09 infinite matrix of solidity 00:24:15 hi 00:25:15 if our minds are like operating systems, does that mean our operating system has a really shitty memory addressing scheme? 00:25:33 how many cores does it have? 00:25:41 :> 00:25:48 mysterys of life 00:32:45 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 [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 @src iterate 02:20:00 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 @src (.) 02:33:44 (f . g) x = f (g x) 02:33:44 NB: In lambdabot, (.) = fmap 02:35:13 @src (++) 02:35:14 [] ++ ys = ys 02:35:14 (x:xs) ++ ys = x : (xs ++ ys) 02:35:14 -- OR 02:35:14 xs ++ ys = foldr (:) ys xs 02:35:21 @src flip 02:35:21 flip f x y = f y x 02:35:31 some NB's lacking 02:36:39 :t flip 02:36:40 forall (f :: * -> *) a b. (Functor f) => f (a -> b) -> a -> f b 02:45:07 More like Nofunctor! 02:57:01 -!- cswords has joined. 03:18:48 kallisti, there was an update 03:18:55 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 @src (>=>) 03:49:07 Source not found. You speak an infinite deal of nothing 03:49:34 @src >=> 03:49:34 Source not found. BOB says: You seem to have forgotten your passwd, enter another! 03:49:58 it's probably (f >=> g) x = f x >>= g , anyway 03:59:04 BAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHA 03:59:21 that fills up the entire width of my terminal 03:59:45 that leaves one char at the end of mine 04:00:00 ah so you too do not maximize 04:00:05 we are non-maximize buddies then 04:01:10 would it be accurate to say that... 04:01:24 =<< and <=< are analogous to $ and . ? 04:01:55 a bit. 04:02:15 although =<< needs to fight with <*> / ap for that. 04:02:23 indeed 04:02:31 <*> is a different kind of application. :P 04:02:54 . is generalized in Control.Category, and Kleisli is one based on <=< 04:02:54 it's like application lifted into another type. 04:03:20 $ should be generalized somehow. 04:03:25 ......er 04:03:30 I guess that's ap 04:04:07 fmap is another 04:04:24 which lambdabot uses for . 04:04:53 you're completely clusterfucking my analogy.. :P 04:04:57 and lambdabot's weird flip is yet one 04:04:59 :t flip 04:05:01 forall (f :: * -> *) a b. (Functor f) => f (a -> b) -> a -> f b 04:05:11 BIND FUNCTOR 04:05:25 except the f is on the outside 04:05:32 f (a ->b) instead of a -> f b 04:05:41 it's all about different ways to put in the f's 04:05:47 yes I've noticed. 04:06:20 flip is some kind of mixture of bind and ap isn't it? 04:06:52 flip f x = fmap ($ x) f 04:07:02 >_> oh 04:07:32 ah yes 04:07:39 I see how that generalizes the function case 04:07:53 and there's also comonad whateverit'scalled 04:08:03 yes of course... 04:08:10 (what?) 04:08:15 extend, iirc 04:08:18 :t extend 04:08:19 Not in scope: `extend' 04:08:27 ): 04:08:31 @src Comonad 04:08:31 Source not found. 04:08:43 i guess lambdabot may not have them at all 04:08:47 :k Comonad 04:08:48 Not in scope: type constructor or class `Comonad' 04:08:53 :k CoMonad 04:08:54 Not in scope: type constructor or class `CoMonad' 04:08:57 yes functions are not pokemon. 04:09:05 :k Monad 04:09:06 Class `Monad' used as a type 04:09:06 In the type `Monad' 04:09:11 sheesh 04:10:00 @hoogle extend 04:10:00 System.Posix.Terminal ExtendedFunctions :: TerminalMode 04:10:00 Text.Regex.Posix.Wrap compExtended :: CompOption 04:10:00 Text.Regex.Posix.String compExtended :: CompOption 04:10:06 didn't think so 04:10:53 ah yes the classic regex comonad 04:11:28 careful, it might exist 04:11:40 well Parsec is pretty close I guess. 04:11:49 ...is a Monad. 04:11:53 oh rite 04:12:04 see... 04:12:10 I shouldn't talk so much when I'm tired. 04:12:25 aslobutely 04:12:50 :t (=>>) 04:12:51 Not in scope: `=>>' 04:12:53 lambdabot................... 04:12:56 how could you 04:13:04 oh that maybe was it 04:13:12 (=>>) is flip extend 04:13:13 @hoogle (=>>) 04:13:13 No results found 04:13:21 at least I think it's flip extend?? 04:13:38 extend flip 04:13:53 extend tail 04:13:54 :t (>>= flip) 04:13:55 forall (f :: * -> *) a b. (Functor f) => (a -> f (a -> b)) -> a -> f b 04:14:04 extend is defined by the Extend typeclass in Data.Functor.Extend which is exported by Control.Comonad, I think????????? 04:14:18 and all Comonads are Extends 04:15:20 I thought lambdabot had this stuff though 04:17:07 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 O KAY 04:21:33 here's a good one 04:21:46 f a -> f b -> (f a -> f b) 04:22:19 const const? 04:22:28 yes yes 04:22:42 no? 04:22:43 maybe 04:22:49 :t const const 04:22:50 forall a b b1. b1 -> a -> b -> a 04:23:03 :t const const :: (Functor f) => f a -> f b -> (f a -> f b) 04:23:04 forall (f :: * -> *) a b. (Functor f) => f a -> f b -> f a -> f b 04:23:31 oh okay. 04:23:54 here's another good one: 04:24:10 (f a -> f b) -> (f a -> f b) 04:25:04 -!- qfr has left. 04:25:09 I will pay you $200 to figure this one out 04:25:33 unsolved porbelm fro matemathics 04:27:42 > id id id id id id id id 2 04:27:42 2 04:27:54 > fix id 2 04:27:58 mueval-core: Time limit exceeded 04:28:16 damn you consequences of halting problem. 04:29:57 hi 04:30:08 .hi 04:40:36 -!- MSleep has changed nick to MDude. 05:06:22 kallisti: "consequences of the halting problem" being "everything"? 05:06:29 (Everything provable, anyway.) 05:09:43 ... 05:09:46 I'm speechless. 05:09:58 I downloaded a Windows game, and tried to run it on WINE. It did not work. 05:10:08 :o 05:10:10 Since it included source, I tried typing in "make" 05:10:24 After adding a few imports, against all reason, it actually compiled... 05:10:41 Ya-- Segmentation Fault 05:10:45 ;.; 05:11:06 :o 05:11:13 but did you try running _that_ in wine? 05:11:16 * oerjan helpful 05:11:50 oerjan, I compiled it to a Linux native binary, dummy. 05:12:14 If you ran it under WINE you might get a General Protection Fault. 05:12:40 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 "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 ... 05:37:30 -!- pikhq_ has joined. 05:37:38 -!- pikhq has quit (Ping timeout: 240 seconds). 05:50:26 I thought it was like painting. 05:56:49 all the best writers of history have been painters and vice versa 05:56:51 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 kmc: Doesn't look like your tolerance for doses of #-blah is increasing with practice. 06:57:34 no it's just wli 06:59:43 Determined to die, so why bother trying to find alternatives. That's him. 07:00:27 i mean he has got a really raw deal in life 07:00:35 his bitterness is totally justified 07:00:44 but that doesn't make it any more pleasant to be around 07:01:22 True, *but* nevertheless. He might actually be able to wrangle refugee status. Or leave the US somehow... 07:07:42 "Thinking in typeclasses is IMO the best thing to do: it's really the most Haskellish." 07:08:52 anyway I'm surprised people are apparently willing to pay $250/day to program in Haskell rather than another language 07:08:56 re http://www.reddit.com/r/haskell/comments/odv3t/welltyped_are_hiring_haskell_consultant/ 07:09:17 Are people actually willing to do that? 07:09:38 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 It was copumpkin's assertion that if someone takes the job, then they're willing to do that. 07:10:01 shachaf, it's possible the number is too low and that well-typed won't get any applications 07:10:17 i mean, price discovery is hard, double so in labor markets 07:10:27 i'm taking one party's bid as a crude approximation of market price 07:11:09 i think one danger is that you get someone with intermediate Haskell skill who is super naive 07:12:22 someone who thinks Haskell magically eliminates all of the annoyances of programming in the real world 07:12:41 Alas, Haskell doesn't eliminate the real world. 07:12:44 That's what @'s for! 07:13:11 if the language really were as good as those people think, it would be worth the pay cut 07:13:15 but it's not, and no language ever will be 07:13:40 it's just a pretty good programming language 07:13:57 and there are many other companies that will pay you twice as much to use a different pretty good programming language 07:14:13 What are some other pretty good programming languages? 07:15:06 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 kmc: I think the consensus in that thread in general was that they're underpaying. 07:15:30 pikhq_, last I knew Google, Facebook, etc. would start around $80k, plus health insurance and other benefits 07:15:33 ... In the Midwest. 07:15:51 if you're working remotely from the USA, take like $500/mo off that Well-Typed money for health insurance 07:16:26 Sgeo, languages i like include Haskell, Python, OCaml, Clojure, Scheme, C (for certain things) 07:16:29 none of them is perfect 07:16:56 for many tasks none of the first five will dominate, assuming you have skill in all 07:17:11 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 fair enough 07:17:36 and that is one reason Well-Typed's offer might be more reasonable than it looks 07:17:38 you can live somewhere cheap 07:17:49 but cheap places suck 07:17:55 Yeah. 07:18:13 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 (i mean that's a false dichotomy but you get the point) 07:18:46 Well, you're presuming a fairly high level of skill. 07:18:53 Which makes the dichotomy pretty applicable. 07:19:27 well also you might be stuck in the middle of nowhere for other reasons 07:20:19 personally i think working from home is Not For Me 07:20:34 I've done that. I've learned the hard way that it's Not For Me. 07:20:47 why? 07:21:16 I've discovered I'm not very productive in a home environment at all. 07:21:19 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 Like some mental switch in my head goes "home" = "fuck around" 07:21:51 with a physical office job I might enter that state too but only for 8-10 hours at a time :) 07:21:59 Nohjf 07:22:01 Niughji 07:22:02 Night 07:22:06 O_O 07:22:08 'night Sgeo 07:22:08 night sgeo 07:22:48 the other problem was lack of contact with my coworkers and employers 07:22:59 just seeing them around being productive makes me more productive 07:23:12 it's not about explicit communication 07:23:19 That, too, is a factor. 07:23:23 (though in my experience with WFH we were also bad about explicit communication) 07:23:55 some companies have employees who WFH most of the time and come in like one day a week 07:23:58 maybe i'd like that 07:26:49 I may have an ingrown fingernail. 07:26:59 sucks :( 07:27:14 Hopefully it'll pass on its own. Sometimes that happens. 07:27:21 really? 07:28:48 Well, sometimes I think "this might be an ingrown fingernail" and then the thing passes on its own. 07:28:52 heh 07:29:03 is this a subtle hint that the previous topic is less pleasant than an ingrown fingernail 07:29:29 I think the previous topic was *more* pleasant than an ingrown fingernail, come to think of it. 07:29:44 But if I'm going to suffer, why not share it with the rest of you? 07:29:51 why not share it with wli 07:31:18 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 is the answer "#haskell"? 07:31:50 The answer is probably "don't". 07:32:59 i mean probably the best reason to take a pay cut for a job using Haskell specifically 07:33:08 is that it's a proxy for the kind of people you'll be working with 07:33:40 but i think the dollar value there is pretty low 07:34:44 i'm not sure how much it tells you versus being extra attentive during the process of interview etc. 07:35:04 (i think it's much more valuable in the other direction, for companies assessing candidates) 07:35:06 kmc: Also, much more relevant if you're working in the office. 07:35:07 Well, in this case it's not just "the kind of people" but a specific group of people in particular. 07:35:33 right 07:37:23 pikhq_, why more relevant if you're working in the office? 07:38:16 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 not really like the personality aspect 07:39:10 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 Ah. 07:40:50 i doubt you can infer that much about personality from someone's choice of programming language 07:41:08 except for Lisp of course 07:41:25 :P 07:41:38 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 destined to die young and crazy of syphilis, like the great painters and writers 07:42:46 Also doomed to die rich. 07:42:51 :P 07:42:58 no hackers are painters/writers 07:43:07 dying rich is super nega-cred for those folks 07:43:21 you're supposed to die poor and then have your art become ultra-valuable hundreds of years later 07:43:23 Then what about Paul Graham? 07:43:30 Oh, wait, right. Do as I say, not as I do. 07:43:41 :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 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 -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 My nick, fucker. 10:09:32 -!- Vorpal has joined. 10:09:41 Oh my, is that my IP address? 10:09:43 (No.) 10:10:01 elliott: "My, nickfucker." 10:15:08 my oh my 10:15:13 nickfuckers can only mean trouble 10:16:11 07:09:38: 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 shachaf: I'm so glad I didn't listen to you when you told me to join -blah. 10:17:09 hi elliott 10:17:13 elliott: FASCIST 10:17:24 * shachaf expected to be asleep a couple of hours ago. 10:17:25 hi monqy 10:17:26 *kmc 10:17:38 And by "expected" I mean "planned but didn't really expect". 10:17:50 hi elliott 10:18:49 * Lymia flails 10:18:50 shachaf: You should pay someone to knock you unconscious at a prearranged time. 10:18:52 CRAP CRAP CRAP 10:18:57 Run under valgrind? No segfault 10:19:01 Run without valgrind? Segfault 10:19:02 elliott: I'll be happy to pay you to do that. 10:19:03 Heisingbug... :( 10:19:17 shachaf: Okay. My going rate is $2,000/knockout. 10:19:19 Lymia: Does valgrind report errors? 10:19:26 shachaf, I'm going to examine that 10:19:29 elliott: I have these wooden nickels... 10:19:56 shachaf: [Hilarious Monkey Island quote I'm too tired to think of.] 10:20:11 "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 Thanks, Mayans. 10:20:16 Thayans. 10:21:22 i have these nickel woodens 10:21:25 absolutely useless 10:22:54 wickel noodens 10:22:56 elliott: Why am I not on that list? 10:23:12 "shachaf, IRC idling genius" 10:24:10 elliott, yeah i lolled at that post 10:24:13 shachaf: Wait, what list? 10:24:29 elliott: From the post you just quoted. 10:24:46 Oh. I didn't actually read beyond that. 10:25:05 Wait, it's literally just a list of people who use functional languages? 10:25:07 Well, thanks for nothing, elliott. Thfnelliott. 10:25:25 elliott: No, it also has Haskell B. Curry. 10:26:06 shachaf: He programmed in ML. 10:26:19 It's like how Jesus was Jewish. 10:26:32 07:21:59: Nohjf 10:26:32 07:22:01: Niughji 10:26:32 07:22:02: Night 10:26:35 godrijgromorngoirdg 10:26:38 mogirdg nogidr 10:26:39 good morning 10:26:49 hi ieelieiote 10:26:53 hoe eihgleiont 10:26:55 hi helioent 10:26:56 07:26:49: I may have an ingrown fingernail. 10:26:57 hi heliot 10:26:59 hi elliott 10:26:59 elliott: He programmed in ML like how Jesus was Jewish? 10:27:04 shachaf: I thought that wasn't possible. 10:27:08 At least ais said that wasn't possible. 10:27:16 hey guys i like haskell and fp, i have nothing to say about it, just wanted you all to know 10:27:18 Also, yes. 10:27:49 kmc: Here's my spj shrine *strokes framed photo lovingly* 10:28:00 Wait, why haven't I set up an SPJ shrine yet? 10:28:06 That's like #1 on my list of things to do. 10:28:51 07:43:21: you're supposed to die poor and then have your art become ultra-valuable hundreds of years later 10:29:02 kmc: which is why you should found a startup that everybody hates and is lost to the mists of time 10:29:09 make sure that the servers keep running when you die 10:29:14 -!- Lymia has changed nick to Madoka-Kaname. 10:29:22 and in a few hundreds of years everyone will rediscover it and it'll become the talk of the web2.0sphere 10:29:32 artist style(tm) 10:29:54 web2.0 in hundreds of years? 10:30:02 haven't they moved on to web a billion point oh by then 10:30:10 monqy: no its classique 10:30:16 "Father of Haskell foundations" hahaha i didn't even 10:30:18 see that part 10:30:19 oh a special sphere 10:30:25 for web2.0 archaeologists 10:31:20 everyone has their own sphere in the future 10:31:57 elliott: Oh, you got that post from /r/haskell. 10:32:00 I like how it has 4 points. 10:32:22 I should do some experiments on how bad I can make posts before they get downvoted on /r/haskell. 10:32:33 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 elliott: That's why you make the second account. 10:33:01 http://stackoverflow.com/questions/8834582/is-haskell-a-lisp-dialect ;; this question got 3 upvotes 10:33:09 Anyway, people upvote jerks on SO. 10:33:22 http://stackoverflow.com/questions/8829194/why-are-types-with-no-data-constructors-valid ;; this one got 10 10:34:16 Did you know that typedefs can shadow variable names in C? 10:34:36 int foo; void v() { typedef int foo; ... } 10:34:47 shachaf: Isn't that what causes that context-sensitive bit? 10:35:00 "Waterstones, the bookshop, has dropped the apostrophe in its trading name and logo, sparking outrage among some of its customers. 10:35:00 "It's just plain wrong", said John Richards, chairman of the Apostrophe Protection Society" 10:35:23 "Its just plain wrong", wrote John Richard's, chairman of the Apostrophe Protection Society" 10:35:30 *'Society 10:35:39 "Its just plain wrong", wrote John Richard's, chairman of the Apostrophe Protection *'Society" 10:35:50 I was going to go with S'ociety, but that's all right too. 10:36:08 ch'man 10:36:14 o' th' 10:36:29 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 'postraph' 'rotectin' 10:36:48 apo'strophe 10:36:58 "thanks for the trophe" --apo 10:37:41 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 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 elliott: "Of course, for the single-constructor, single-item cases, newtype is preferred over data." 10:39:50 what 10:39:53 shachaf: Don't. I already held back the tears. 10:39:55 nutcracker? 10:40:05 kmc: if i suddenly say something really weird it's a quote 10:40:11 unless it's me 10:40:12 i got that, but? 10:40:14 oh 10:40:21 http://www.reddit.com/r/programming/comments/oek2t/any_interest_in_a_c_binding_to_wxwidgets_from/c3gp4si 10:40:31 interpretation is left to the reader 10:42:00 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 shachaf: I bet the author of that comment thinks that "newtype" exists as a separate keyword for historical reasons. :( 10:44:21 From today, 430983852 will be known as "the C++ overhead constant". 11:05:35 -!- monqy has quit (Quit: hello). 11:10:11 hi 11:11:59 everyone has their own sphere in the future 11:12:02 this, a thousand times 11:13:22 kmc: deep 11:13:29 Wait, it's literally just a list of people who use functional languages? elliott: No, it also has Haskell B. Curry. shachaf: He programmed in ML. 11:13:36 irrelevant because Haskell was the first functional language 11:13:48 ML is "almost-functional" 11:13:59 source: _Gentle Introduction to Haskell 98_, chapter 1 11:16:59 CAN YOU FIND ALL OCCURENCES OF THE LTTER S IN THIS SENTENCE? IF YOU FIND ALL SIX, YOU HAVE LUPUS 11:20:32 kmc: Well, I wouldn't really call ML functional either. I guess I'm a zealot. 11:20:38 kmc, irc is hard real time 11:20:56 IRC is real, hard time 11:20:59 (for computer hacking) 11:21:16 elliott, a language can't be considered functional unless it uses {- -} for multi-line comments 11:21:23 as should be trivially obvious to the most casual observer 11:21:45 (in college we had a house office named Most Casual Observer) 11:21:54 (their job was to observe things casually and thus know all) 11:22:09 kmc: i wonder how the {--} syntax came abou 11:22:09 t 11:22:40 Well, it combines the worst bits of imperative programming languages, that we don't have a use for any more 11:22:43 {} and -- 11:22:50 :D 11:23:28 they represent a pair of dwarvish fire-daggers 11:23:36 as should be trivially obvious to the most casual observer 11:23:43 The most causal observer. 11:24:05 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 fungot: All Witchaloks are hermaphroditic androgynites. 11:26:44 fizzie: oh, no, man... i forgot. i've got some mashed potatoes over here, it means you're a math teacher. 11:27:06 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 "the ideal comment syntax is smalltalks" 11:28:05 seriously, the Gentle Introduction does say that ML and Scheme are "almost-functional" 11:45:06 Alas, GHC 7.0 still cannot handle equality superclasses: 11:45:06 Rep t ~ rep 11:45:09 Not again! 11:45:56 alas and alack 11:46:32 -!- Phantom_Hoover has joined. 11:46:58 this is way too difficult 11:50:22 it works in newer GHC 11:50:44 blomg 11:51:00 elliott, please send me messages so I don't look like an idiot again. 11:51:38 @tell Phantom_Hoover Hi. 11:51:38 Consider it noted. 11:51:48 Better. 11:51:49 Phantom_Hoover: You have 1 new message. '/msg lambdabot @messages' to read it. 11:51:53 @messages 11:51:53 elliott said 15s ago: Hi. 11:55:42 @tell lambdabot u suck 11:55:43 Nice try ;) 11:56:22 @tell me something new 11:56:22 Consider it noted. 11:56:23 T PANTS THESE AREN'T THE BALLS YOU'RE LOOKING FOR 11:56:30 I wonder how many messages "me" has. 12:00:28 me's not an allowed nick, is it? 12:01:07 Information on me (account spb): blah blah blah. 12:01:10 It's someone else's. 12:08:13 Whoever it is, they have MemoServ set up to prevent them getting sent anything. 12:08:26 * me :Nick/channel is temporarily unavailable 12:08:36 And they haven't been seen for 40 weeks in any case. 12:08:39 -!- elliott has changed nick to elliott_. 12:08:41 @messages? 12:08:42 Sorry, no messages today. 12:08:46 -!- elliott_ has changed nick to ehird. 12:08:48 @messages? 12:08:48 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 @messages? 12:09:05 Sorry, no messages today. 12:09:07 -!- Phantom__Hoover has changed nick to elliott. 12:09:24 How does lambdabot deal with ident stuff? 12:10:36 It doesn't. 12:11:47 They haven't used the "me" nick in 40 weeks, you mean; the account is online right now. 12:12:45 The owner of "you" similarly hasn't used you in 62 weeks. 12:12:57 I'm thinking nicknames for punnery or such. 12:15:46 -!- ais523 has joined. 12:16:05 @hoogle try 12:16:05 Control.OldException try :: IO a -> IO (Either Exception a) 12:16:06 System.IO.Error try :: IO a -> IO (Either IOError a) 12:16:06 Control.Exception.Base try :: Exception e => IO a -> IO (Either e a) 12:17:13 Trying times. 12:18:20 :t reads 12:18:21 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 me too 12:23:23 -!- cheater has quit (Ping timeout: 255 seconds). 12:23:24 Is try a typeclass thing then, or not? 12:23:36 what's "a typeclass thing" 12:23:41 mean 12:23:48 Is it a typeclass method, or based on them. 12:24:01 Erm, wait, no, not based on them. 12:24:18 Are those functions all independently defined, or are they parts of instances? 12:24:30 which functions? the three that hoogle mentioned? 12:24:34 Yes. 12:24:35 I was able to make an Exception instance without defining any methods, somehow 12:24:55 It occurs to me that that doesn't mean much 12:24:56 Phantom_Hoover: http://hackage.haskell.org/packages/archive/base/latest/doc/html/Control-Exception.html 12:25:01 Phantom_Hoover, those are independent functions. basically, three different generations of the exception system 12:25:04 Exception is just 12:25:09 toException :: e -> SomeException 12:25:09 fromException :: SomeException -> Maybe e 12:25:13 so no, try isn't a typeclass method. 12:25:15 Sgeo, that's expected, and documented 12:25:21 Yeah, I just checked that in ghci. 12:25:35 kmc, yes, but for some reason I thought that was relevant to Phantom_Hoover's question 12:25:39 When it really wasn't 12:25:40 oh 12:26:30 Eh, the things need to be Typeable? 12:26:42 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 Sgeo, yes, the extensible exception system uses Typeable 12:29:04 basically exceptions are dynamically typed 12:29:10 and catching does a run-time type check 12:29:33 The use of the phrase "pozycjonowanie google cottages" can be considered a little bit misleading. 12:29:47 :D 12:29:53 is that polish or gibberish 12:30:06 ais523: I'm glad you have correctly left alone the asd pages 12:30:08 as they're claerly not spam 12:30:09 I think it's a foreign language from context, polish wouldn't surprise me 12:30:13 Eh, the things need to be Typeable? 12:30:17 seems to mean "positioning" in Polish 12:30:18 Sgeo: that's how the entire exception system works 12:30:19 elliott: I haven't reached them yet 12:30:41 but meh, I'll leave them 12:30:42 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 which is: gross 12:31:29 anything is gross if you unlayer the abstractions far enough 12:31:47 kmc: yeah but you can still define your own Typeable instances today :P 12:31:58 yeah that's unfortunate 12:32:36 data a :=: b where { Refl :: a :=: a}; class TypeEq a where { typeEq :: (TypeEq b) => Maybe (a :=: b) } 12:32:41 and a magic deriving (TypeEq) 12:32:54 that's what we need, it would be perfectly safe ... and also really confusing 12:33:14 you want things besides decidable equality 12:33:30 kmc: do you? I thought that's all Exception needed 12:33:31 cast 12:33:39 it's convenient if you can order and hash TypeReps 12:33:47 kmc: Typeable is useful, yeah 12:33:47 maybe Exception doesn't need that 12:33:49 but in general 12:33:49 but Exception doesn't need it 12:34:06 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 Dynamic is also implemented with Typeable, is that an abuse? 12:35:26 kmc: well, yes :) 12:35:31 i mean it's not terrible or anything 12:35:40 but Typeable gives you a lot more than you need for that 12:35:44 Why is the more useful function's name longer? 12:35:48 and it definitely feels like conflating two things 12:35:54 Sgeo: ? 12:36:03 fromDynamic vs fromDyn 12:36:10 historical reasons? 12:36:10 yeah that's terrible 12:36:15 fromDyn could easily be expressed in terms of fromDynamic 12:37:06 elliott, I see your point 12:37:15 fromDyn dyn default = fromMaybe default (fromDynamic dyn) 12:37:37 from is now semantically saturated for me 12:37:38 yes yes 12:37:40 from from from 12:38:43 fromDynamic (Dynamic t v) = case unsafeCoerce v of r | t == typeOf r -> Just r | otherwise -> Nothing 12:38:57 that's a fun tangle 12:42:06 kmc: haha is that seriously the implementation? 12:42:09 yes 12:42:18 Funtangled particles. 12:42:20 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 yeah it's pretty sketchy 12:43:01 kmc: i wonder if Dynamic is actually more efficient than an existential these days 12:43:10 i guess (a -> TypeRep) is a bit heavier than TypeRep 12:43:29 you mean, an existential with a Typeable constraint? 12:43:43 *nod* 12:43:43 yeah 12:43:51 someone should write abenchmark 12:43:54 at least i was told it's a deliberate optimisation of that 12:44:03 interesting 12:44:12 benchmarks? meh, that's work, and I might be proven wrong 12:44:23 it's easier to sit here and make people think i'm smart for having seen the better way 12:44:30 bravo 12:44:57 better use some hash tables too, I hear they're O(1) 12:45:21 O(1) EVERYTHING 12:45:33 find :: (a -> Bool) -> HashTable k a -> Maybe a -- O(1) 12:45:53 * Sgeo pokes the argument order of that 12:46:28 Didn't I once yell at Factor for its sensitivity to argument order? And for the endless required imports? 12:46:32 Yet Haskell does both 12:46:35 haha 12:46:54 but Haskell is the best language 12:47:07 "sensitivity to argument order"? 12:47:08 so sensitivity to argument order and endless required imports must somehow be virtues 12:47:34 anyway that argument order is obviously correct 12:47:39 elliott, a decision about order of arguments can make a function easier or harder to use 12:47:41 i'm gonna say that sensitivity to argument order makes you pay attention to something important that the Java Monkeys ignore 12:47:44 doesn't really matter what 12:48:07 and required imports are great for all those static analysis and refactoring tools Haskell has 12:48:25 (by "has" I mean "someone would have to write from scratch", but that's a matter of trivial engineering) 12:50:21 Sgeo: Yeah, API design matters. That's a big language flaw. 12:51:05 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 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 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 kmc: You're really grumpy. 12:52:36 elliott, I love how the Haskell standard libraries got API design wrong so often 12:52:39 it's a good thing that because 12:52:44 :t Map.lookup 12:52:45 Couldn't find qualified module. 12:52:48 :t Data.Map.lookup 12:52:50 forall k a. (Ord k) => k -> M.Map k a -> Maybe a 12:52:55 Sgeo: They did? 12:53:05 :t head 12:53:05 That's the correct way around. 12:53:06 forall a. [a] -> a 12:53:14 elliott, I may be grumpy but I'm right, and that's all that counts on The Internet 12:53:27 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 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 Sgeo: head is evil; what's that got to do with Map.lookup? 12:54:06 Wait, why's head evil. 12:54:08 Oh, wait. 12:54:11 > head [] 12:54:12 *Exception: Prelude.head: empty list 12:54:14 head is evil is a separate example of bad API design 12:54:20 :t lookup 12:54:20 forall a b. (Eq a) => a -> [(a, b)] -> Maybe b 12:54:22 so much bad API design in Prelude 12:54:33 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 elliott, can you explain what makes it a "blatant hack" and "awful"? 12:55:01 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 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 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 kmc: You're misinterpreting me. 12:55:40 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 I'm not saying that the trick exists to do such interfacing. 12:56:02 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 but why 12:56:21 why is it a hack and awful 12:56:24 I'm not going to bother if you're just going to twist everything I say into "HASKELL R AWSUM". 12:56:43 ok 12:57:01 well i'm going to continue to use this "blatant hack" in APIs i design 12:57:17 until I see a problem with it or someone points one out to me 12:57:21 if you're fine with that, so am i 12:57:34 I also don't see why you're blowing a parenthical remark in a completely different context out of proportion... 12:58:40 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 why is it a hack and awful 12:59:14 and which context? 12:59:33 you just keep saying it's bad without explaining why 13:00:15 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 ok 13:01:38 i agree that functions with a large number of required parameters are bad 13:01:46 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 What about using Nothings as a default? 13:02:21 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 Although admittedly it's ugly to call, but still 13:02:36 Sgeo: That doesn't solve anything, since the underlying function will have to fromJust them. 13:02:58 Oh, when all the things should be required? 13:03:03 Don't provide a default then 13:03:18 Oh, right, SomeRecord {} fills things in with undefined? 13:03:20 :/ 13:03:27 yeah, at least GHC will warn though 13:03:38 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 yeah 13:03:56 Or sometimes it's even that one function is doing the work of five because of limited composability, etc. 13:04:15 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 glLoadMatrix16(float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float) 13:04:49 i think the record trick is fine (not perfect) when you want to selectively override defaults 13:04:50 Is that a real example? :D 13:04:54 i don't think so 13:04:56 :( 13:05:24 for a while i worked on a C++ codebase where one of the most important classes had a constructor like this: 13:05:41 Thing::Thing(Foo, const Bar*, bool, bool, bool, bool, bool, bool, bool, bool, bool, bool, bool, bool, bool) 13:05:52 all of those bools had default values; some were true and some were false 13:06:18 also you had to be careful because the order would change between development and production branches, as new features were merged 13:06:22 Was the class called Thing too? 13:06:25 no 13:06:26 :( 13:06:27 I can't think of a situation where named parameters beats a properly designed abstraction. 13:06:36 kallisti: naming parameters 13:07:04 well, it's better at that I suppose. 13:07:04 kallisti, overriding default settings 13:07:14 meanwhile data structures are better at naming record fields. 13:07:15 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 [[ 13:07:27 (I wonder: is this for beginn...@haskell.org ?) 13:07:27 toA_IO = openFile (dir "toA") WriteMode :: IO Handle 13:07:27 fromA_IO = openFile (dir "fromA") ReadMode 13:07:27 -- used as global values 13:07:27 toA = unsafePerformIO toA_IO -- 13:07:29 fromA = unsafePerformIO fromA_IO -- 13:07:31 ]] 13:07:33 thank god for beginners 13:07:40 s/\?\)/?)\n[...]\n/ 13:07:56 kallisti, maybe what you meant by "properly designed abstraction" is in fact a record like this 13:08:02 kmc: yes 13:08:02 but i don't think it's much of an abstraction 13:08:16 kmc: defConfig is your default parameter set 13:08:18 it's just a hodgepodge of all the ways you can change the behavior of 'tsp' 13:08:19 kmc: TBH I'd probably represent that like... 13:08:36 Well, similarly, I guess. But with a Monoid interface. 13:08:42 That doesn't really buy you all that much in this situation, though. 13:08:47 in a language with default keyword args I probably wouldn't define a separate type 13:08:53 Hmm, do I actually want a Monoid interface there. 13:08:53 for simplicity's sake 13:09:07 the Monoid instance is sometimes useful; I think it's dubious here 13:09:08 kmc: Anyway, I think that's actually preferable to named parameters. 13:09:11 Because you can pass around Configs. 13:09:20 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 fizzie: SO ELEGANT. 13:09:32 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 elliott, sure, you can, but you usually don't need to 13:09:47 kallisti: "default constructor"? you have to specify the defaults anyway :P 13:09:56 true. 13:10:01 an airplane is better than a car because it can also fly 13:10:03 it's just abit more typing is all. 13:10:12 fizzie, why 4-vectors? 13:10:13 kmc: If you used more-notation, I think you could specify the defaults inline with the fields. 13:10:14 however the airplane is harder to build and more expensive ;P 13:10:15 same amount of information though, I suppose. (except you also need types in a statically typed language of course) 13:10:24 M O R E N O T A T I O N 13:10:27 Has OpenGL cornered the 4D gaming market while I wasn't looking? 13:10:35 haha 13:10:38 elliott: GLint gluUnProject4(GLdouble, GLdouble, GLdouble, GLdouble, const GLdouble *, const GLdouble *, const GLint, GLdouble, GLdouble, GLdouble*, GLdouble*, GLdouble*, GLdouble*); /* real function */ 13:10:40 kmc: http://www.haskell.org/haskellwiki/User:Zzo38/Proposal_for_more-notation#Fields_in_record_syntax 13:10:40 /kick kmc 13:10:42 Phantom_Hoover: Homogenous coordinates. 13:10:47 fizzie: :D 13:10:53 Phantom_Hoover, perspective transformation is linear with homogeneous coordinates 13:11:10 meaning that (x, y, z, w) represents the 3D point (x/w, y/w, z/w) 13:11:23 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 elliott: Sorry, I droppeded one star. 13:12:05 you start with some vectors where w=1 and then get something else 13:12:12 and renormalize them before you draw them 13:12:44 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 believe this corresponds to 3D projective space, where the extra "point at infinity" is (anything, anything, anything, 0) 13:14:50 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 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 hmm 13:15:10 But (1, 0, 0, 0) and (-1, 0, 0, 0) are the same thing. 13:15:15 these are problems with introducing a language feature into an existing codebase rather than problems with the feature itself. 13:15:26 interesting 13:15:43 wait why the fuck am i amending my answer to help this guy, their accept rate is 33% 13:15:57 elliott: DO IT 13:15:59 kmc: I bet you didn't even LOOK at that more-notation link. 13:16:11 elliott, I've seen the more notation... 13:16:34 kmc: Yeah, but did you know it can simplify default parameter records?! 13:16:44 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 it's too early to understand this 13:16:59 i was there in #haskell when zzo38 first arrived 13:17:16 You can thank me for that. 13:17:20 haha 13:17:34 now i have a better understanding of all the ways Haskell is unlike INFORM 7 and Magic: the Gathering 13:17:44 Too many ways, is the answer! 13:18:59 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 aha, that makes some sense 13:19:57 elliott: WHAT IF YOU COULD PUT THE DEFAULT VALUES IN THE RECORD SYNTAX 13:20:09 data REcord = { x :: Foo = YEAAAAh } 13:20:50 actually 13:20:51 hmm... GArrowSum is confusing, I don't think it lets you actually have a conditional 13:20:54 oh wait yes it does duh 13:20:54 you could have it this 13:21:03 data REcord = { x = YEAAAAh :: Foo } 13:21:05 Would be nice if you could say that the things in the record have no defaults 13:21:10 and the :: could be omitted because of type inference. 13:21:13 So Record {} is a compile-time error 13:21:24 Sgeo: that would be the default, sir. 13:21:34 the default is to have no defaults. :P 13:21:44 kallisti: you did not click the more notation link 13:21:51 I did not 13:21:54 does it involve the "more" keyword? 13:22:16 the main reason I didn't click is that gnome-terminal's link regex breaks on colons 13:22:34 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 yikes 13:23:20 * kmc sleep 13:24:19 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 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 I'm not sure but I /think/ type families would be useful for this. 13:30:27 -!- itidus20 has joined. 13:30:42 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 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 Creator: dvipsk 5.58f Copyright 1986, 1994 Radical Eye Software 13:35:01 Producer: Acrobat Distiller Command 3.01 for Solaris 2.3 and later (SPARC) 13:35:07 Going to blame Adobe here. 13:37:35 fizzie: how do you render that white dot on white paper? 13:38:00 -!- sebbu2 has quit (Ping timeout: 240 seconds). 13:38:32 fizzie: in fact all of that text is white 13:38:35 isn't it jujst going to be invisible? 13:38:39 :) 13:39:43 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 oooooooh 13:40:08 now I see. 13:40:11 pleasing to the eyes. 13:41:50 I think type-directed name resolution isn't too terrible of an idea 13:41:52 the only problem 13:41:56 is it needs a better name. 13:42:14 also it's playing "how many ways can we overload . ? " game 13:42:18 +the 13:42:28 (Maybe I should've s/(●|N → °)/$1/g instead.) 13:45:12 :D 13:45:41 if ' weren't already an identifier character, record'field would be a good alternative to using . 13:45:42 13:45:42 13:45:42 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 13:45:44 13:45:46 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 *sigh* 13:45:53 shachaf: Should I bother? 13:46:21 elliott: sounds easy enough. just talk about read and catch. 13:46:45 :):):):):) 13:46:48 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 oh... okay 13:47:23 what do you think about record'field for TDNR? 13:47:41 * elliott decides not to bother. 13:47:43 kallisti: ugly 13:48:03 unfortunately all the non-ugly symbols are taken. 13:48:58 (except for, you know, all of those unicode characters) 13:50:58 oh I know 13:51:04 a non-breaking space could indicate TDNR 13:51:06 :) 13:54:55 I think 13:55:01 ' is the best choice aside from . 13:55:19 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 it breaks don't 13:57:33 oh shit... 13:57:48 http://lal0nde.deviantart.com/art/problem-sleuth-279003657 13:57:50 this 13:57:54 this must be moddable 13:58:57 elliott: you're banned from ever naming another variable "eVal" 13:59:28 oh 13:59:30 that was the guy 13:59:31 oops 13:59:51 he's banned forever. 14:02:41 @C.A.McCann: How can you sleep when there's rep to be gained?! :) – ehird Jan 8 at 18:51 14:02:41 Unknown command, try @list 14:02:47 bahahahahahahahahahahahahahahahahahahahahahahahahahahahaha 14:02:50 ^ha 14:02:50 ha. ha. ha ha. ha ha ha. ha ha ha ha ha. ha ha ha ha ha ha ha ha. ha ha ha ha ha ha ha ha ha ha ha ha ha. ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha. ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha 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 http://stackoverflow.com/questions/8793736/haskell-to-javascript-compilers/8793958#8793958 14:08:18 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 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 kallisti: i don't think selenium is relevant. 14:12:25 it's as relevant as Ji.. 14:13:00 Nope. 14:13:12 It might be if you make incorrect assumptions about what Ji does, though. 14:13:54 "it lets a Haskell server control a browser connected to it via AJAX." 14:14:27 I call you an idiot in T-10, T-9... 14:15:07 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 oh right, that's why I was ignoring you. 14:18:25 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 elliott, selenium is always relevant. 14:18:59 elliott: I discovered how I was wrong. happy? 14:19:10 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 kallisti: Sorry, I hate life and everyone and existence. 14:20:33 I don't really see how any of what I did implied that I think I "know more about something" 14:20:47 instead, I was just quoting you... to show you where I got that impression. 14:20:48 ???? 14:20:50 whatever 14:23:06 Blargh 14:23:16 Just got a terrible thought for API design 14:40:11 "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 SILLY PROFESSOR AND YOUR MATH HUMOR 14:49:38 hmm, back 14:49:45 that was a fun seminar 14:49:52 we spent a whole hour talking about call-by-name 14:50:01 then another 40 minutes after the seminar talking about product types 14:50:19 ais523: see #nomic 14:54:24 -!- ais523 has quit (Ping timeout: 240 seconds). 14:57:08 @tell ais523 can you actually talk about product types alone for 40 minutes? 14:57:08 Consider it noted. 15:18:03 http://en.wikipedia.org/wiki/File:Carlos_segundo80.png 15:18:08 Ngevd's family tree. 15:21:27 http://en.wikipedia.org/wiki/File:Undirected_6_cycle.svg Phantom_Hoover's family tree 15:21:39 kallisti: especially as all discrete bursts have measure zero. 15:22:14 This is also known as the Hexagon of Hoover. 15:24:34 http://en.wikipedia.org/wiki/File:Carlos_segundo80.png 15:24:41 Phantom_Hoover: Every time I see this I just grin and gawp at it. 15:24:51 It's like they're optimising for inbreeding. 15:25:37 It's the way that the guy has exactly five ancestors who weren't inbred there. 15:26:10 Phantom_Hoover: (The comments on the SO question whose reddit thread I presume you found that in are really annoying.) 15:26:17 Yes, they are. 15:26:34 "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 Well, in this case, the complainer /was/ a man who said he'd had two children with his daughter. 15:27:11 A man with money to spend on family tree software!!! 15:27:15 CAPITALISM: the movie 15:27:43 "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 http://en.wikipedia.org/wiki/File:Undirected_6_cycle.svg Phantom_Hoover's family tree 15:27:54 Um excuse me what do you say to Cain and Abel?? 15:28:05 All the vertices are Phantom_Hoover. 15:28:18 Yes. 15:28:31 http://en.wikipedia.org/wiki/File:Complete_graph_K7.svg 15:28:35 elliott's family tree. 15:28:53 Yes. 15:30:50 -!- ais523 has joined. 15:31:44 ais523: hi 15:31:48 hi 15:31:48 ais523: You have 1 new message. '/msg lambdabot @messages' to read it. 15:31:50 stupid connection 15:32:08 sure you can talk about product types for 40 minutes 15:32:32 note that it was in the context of impure languages 15:32:58 in particular, we were debating the expression that in ICA would be written as "print(1);(2,3)" 15:33:24 (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 both in call-by-name, and in call-by-value 15:38:52 what is ICA 15:39:36 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 International Council on Archives <--- aka elliott 15:41:55 http://en.wikipedia.org/wiki/File:EgyptianPtolemies2.jpg 15:42:02 Ngevd's other family tree. 15:42:37 Jesus Christ, the most recent new stock in that family tree is Antiochus III. 15:42:43 impressive pedigree 15:42:48 kallisti: idealized concurrent algol 15:42:55 Well, right up until Caesar and Antony. 15:43:02 also note how Antiochus III of Syria manages to birth Cleopatra I by himself 15:43:05 impressive. 15:43:36 Cleopatra VII's family were completely inbred for 5 generations. 15:44:06 I don't even know how to interpret these family relations.... 15:44:27 also what happened to Ptolomy, the son, the sequel. 15:45:10 for example what is the relationship between Ptolomey XIII and Cleopatra VII... they appear to be brother and sister twice. 15:45:36 They married, you dolt. 15:45:45 Phantom_Hoover: What is marriage but being brother and sister twice? 15:45:58 They just didn't have any children, which is not exactly surprising given the circumstances. 15:46:12 I'm sorry it looked strange. 15:46:23 Cleopatra wasn't lined up with all the others 15:46:32 and the elbow line didn't register as "marriage" at that point 15:46:52 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 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 http://bisserjeta.hsara.com/2012/01/100-year-old-prostitute-still-going-strong/?article 15:48:36 DEEP. 15:49:07 I wonder what her family tree looks like. 15:49:18 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 really? 15:50:22 I don't see how 15:51:25 this looks like a completely legit site to me. 15:54:40 I wonder who the audience is for this material. 15:55:14 this creepily written probably fake story about a 100-year-old prostitute. 15:55:33 what is its purpose. 16:03:04 I still need to play Ally Cat 16:03:16 It's still on my Todo list 16:03:19 *Alley Cat 16:03:32 In Ally Cat, the cat is your ally. 16:04:21 I am glad people take my decrees so seriously. 16:04:29 Or at least I can't imagine anyone else having told Sgeo to play Alley Cat. 16:04:45 elliott, you may have been telling someone else to play Alley Cat 16:04:51 Did the PC version of that thing have rather horrible PC speaker beeping. 16:04:55 I think it did. 16:04:57 The 10/2/2011 logs 16:05:17 (As in October 2nd, not as in February 10th) 16:05:30 As in 2011-10-02. 16:05:50 04:54:08: Sgeo|web: Play alley cat. 16:05:50 04:54:14: FOREVERRR 16:05:50 04:54:17: elliott: on Thursday, I will 16:07:12 What is this alley cat 16:07:56 Some old game 16:08:05 :t runWriter 16:08:06 forall w a. Writer w a -> (a, w) 16:08:14 :t execWriter 16:08:15 forall w a. Writer w a -> w 16:08:52 fizzie: Yes, it did. 16:09:01 Phantom_Hoover: The BEST GAME. 16:10:38 The CGAest game. 16:10:52 :t msum 16:10:53 forall (m :: * -> *) a. (MonadPlus m) => [m a] -> m a 16:13:39 How many lives do I have? 16:13:56 I suck at games 16:14:46 I think I'm dead. I wasn't counting, but 9 would make sense 16:15:10 Oh 16:15:14 It says next to cat 16:15:30 Wait 'til Sgeo discovers you can JUMP IN THE WINDOWS. 16:15:38 The windows have minigames 16:15:40 I think 16:15:58 I've only been in 1 window 16:16:05 It's JUST like Mario Party. Almost. 16:16:55 :D 16:16:57 Without the party part. 16:16:58 Solo party. 16:17:00 There's a weird clicking coming from the speakers 16:17:05 Yes. 16:17:28 I mean, while it tries to play the music, I don't think it is the music 16:17:35 No, there's no "music". 16:17:45 That's patter sounds. 16:18:04 "patter sounds"? 16:18:08 Like, feet. 16:18:26 Feet that play a melody with different pitches? 16:18:53 Well. 16:19:07 Oh. 16:19:11 No, that's the music. 16:19:56 Hmm, no music during gameplay, I guess, just at game over/intro screen 16:22:25 Right. 16:27:49 -!- Ngevd has joined. 16:28:20 :t evalWriter 16:28:21 Not in scope: `evalWriter' 16:28:28 @hoogle evalWriter 16:28:28 No results found 16:29:36 Hello! 16:31:29 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 oh, no, it would be Word32 or Word64 or whatever. :P 16:31:50 nevermind. 16:34:11 it seems to me that it's optimizing for space over time. 16:44:24 better spatial locality of the vector seems to be cancelled out by using a map... 16:46:01 What? 16:48:49 :t succ . fromEnum $ maxBound 16:48:50 Ambiguous type variable `a' in the constraints: 16:48:50 `Enum a' arising from a use of `fromEnum' at :1:7-14 16:48:50 `Bounded a' 16:50:53 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 :t fromEnum 16:51:26 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 forall a. (Enum a) => a -> Int 16:51:30 ah 16:51:34 and then left it in to show the judges that I wasn't afraid of them 16:52:56 ais523: hmm, this must be some other submission to the one i saw 16:53:38 which one did you see? 16:53:48 (that's part of the Makefile, not of the C code) 16:54:28 ais523: the one with a bunch of setjmps 16:54:33 or maybe it's the same one 16:54:34 same one 16:54:47 that one was pretty 16:54:48 i think 16:54:50 > maxBound :: Just Bool 16:54:50 Not in scope: type constructor or class `Just' 16:54:51 i don't remember what it looked like 16:54:53 I consider setjmp pretty much mandatory in obfuscated C 16:54:55 > maxBound :: Maybe Bool 16:54:55 No instance for (GHC.Enum.Bounded (Data.Maybe.Maybe GHC.Bool.Bool)) 16:54:55 aris... 16:55:01 elliott: each function consists of nothing but declarations 16:55:12 which are very complicated expressions, overparenthesized 16:55:23 and indented in columns, using Lisp-style indentation for each column 16:55:39 is there any reason why writing an instance for (Bounded a) => Maybe a is a bad idea? 16:55:40 ais523: can i see it :( i lost my copy :( 16:55:53 er 16:55:54 kallisti: is minBound (Just minBound) or Nothing 16:56:01 well, we're past the deadline now, so I can paste it somewhere and PM people the link 16:56:01 Nothing, I would say. 16:56:08 though I realize that's arbitrary. 16:56:10 well I guess that's consistent with Maybe's Ord instance 16:56:15 yes. 16:56:21 also Enum 16:56:23 ais523: you realise that there's no rule against sharing them in the first place, right? 16:56:26 I think it has an enum... 16:56:26 at least Gregor didn't find one 16:56:30 elliott: right, indeed 16:56:34 just it has to be your own work 16:56:35 > toEnum 0 :: Maybe True 16:56:35 Not in scope: type constructor or class `True' 16:56:39 > toEnum 0 :: Maybe Bool 16:56:40 lol 16:56:40 No instance for (GHC.Enum.Enum (Data.Maybe.Maybe GHC.Bool.Bool)) 16:56:40 arising... 16:56:42 oh neverminde 16:56:46 I'm just a little overprotective of it 16:56:48 They even allow team submissions. 16:56:57 Publicly sharing is probably not wise though. 16:57:01 Gregor: I think that's a change 16:57:32 int r,u,y, getchar(), putchar(), b(); 16:59:53 ais523: Now if only you could do int r, u, y, main() { ... }; 16:59:54 :) 17:00:17 is that legal? it'd be awesome if it were 17:00:23 'snot. 17:00:39 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 Which is ... so useful ... for getchar and putchar ... ? 17:02:02 the extra arguments don't do anything but make the code look nicer 17:02:04 :t fromEnum 17:02:05 forall a. (Enum a) => a -> Int 17:02:08 and it's a free obfuscation 17:02:22 (a () out of context in the wrong column makes people realise the code isn't meant to be read in columns) 17:04:02 Gregor: where's your submission, btw? I'm interested in seeing it now the deadline's passed 17:04:02 @hoogle asTypeOf 17:04:02 Prelude asTypeOf :: a -> a -> a 17:04:18 ais523: I'll PM 17:06:39 what's an example of a type that is Bounded but not Enum. 17:07:11 kallisti, real numbers between -1 and 1? 17:07:23 oh, yes I suppose that counts. 17:07:36 but then what would that look like in Haskell 17:09:31 Float and Double are Enum but shouldn't be. 17:09:43 But they're bounded. 17:09:46 Since IEEE has -inf and +inf. 17:09:57 -!- sebbu3 has changed nick to sebbu. 17:10:05 ah yes 17:10:39 kallisti: More generally, you can make any type bounded like 17:10:52 data WithBounds a = MinBound | Middle a | MaxBound 17:10:57 but can't necessarily give it an Enum instance. 17:11:12 (You need `Ord a` for the Boudned instance to mean much, though.) 17:11:34 that's an interesting type. 17:11:52 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 elliott, I was thinking, something like that makes more sense than your WithNegInfinity and WithPosInfinity, I think 17:13:14 It's not nonsensical for a lower bound to be positive infinity 17:13:29 Sgeo: My types were like that for a reason. 17:13:50 Namely, WithBounds didn't make sense for the usecase in question. 17:16:00 you know what? less needs syntax highlighting 17:16:09 I know you could just use an editor, but good editors aren't necessarily good viewers 17:17:30 http://stackoverflow.com/questions/8850299/catching-errors-during-string-parsing 17:17:32 http://stackoverflow.com/questions/8853896/throwing-exceptions-in-haskell-and-xderivedatatypeable 17:17:32 http://stackoverflow.com/questions/8854471/io-string-and-io-data-type 17:17:35 this guy 17:17:37 sigh 17:17:44 ais523: highlight foo | less -R 17:17:57 ooh, interesting 17:18:21 Where highlight = e.g. code2color 17:18:29 there's an actual command highlight, it seems 17:18:33 I'm not sure what engine it's based on 17:18:40 lesspipe also has some kind of support 17:18:41 Deewiant: I think there's a program that does that actually called "highlight", which is why I said "highlight". 17:18:51 elliott: right, and I found it in the repos 17:18:52 * ais523 installs it 17:18:53 elliott: It sounded generic so I wasn't sure. :-P 17:18:59 ais523: I think more also does syntax highlighting, but who the fuck uses more. 17:19:03 Er. 17:19:03 most. 17:19:05 Not more. 17:19:07 heh 17:19:22 I hope highlight's a no-op on stuff it doesn't understand 17:19:26 in that case, I could just add it into l 17:19:32 into l 17:19:39 l is my ls-or-less program 17:19:46 that runs ls or less depending on whether you give it a directory or a file 17:20:00 aww, highlight doesn't do INTERCAL 17:20:19 ais523: you realise less has preprocessor support built in, right? 17:20:27 yes 17:20:28 LESSOPEN 17:20:30 or w/e 17:20:42 it's more annoying than anything else, as it tries to interpret .doc as Word files rather than text files 17:20:42 ais523: be careful about -R, though; you won't want to do that on binary files 17:20:43 and errors out 17:20:47 also, err, what? 17:20:52 we're not talking about the same thing 17:20:56 elliott: less foo.doc 17:21:02 gives an error message "no catdoc available" 17:21:19 INPUT PREPROCESSOR 17:21:19 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 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 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 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 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 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 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 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 replaced by the filename when the input preprocessor command is invoked. 17:21:38 etc. 17:21:44 elliott: yes, I believe it's lessopen that's responsible 17:21:54 I doubt it, since it just executes a script you pass it... 17:22:00 s/pass it/specify/ 17:22:05 $ echo $LESSOPEN 17:22:07 | /usr/bin/lesspipe %s 17:22:29 ais523: OK, so since lesspipe does something wrong, you're saying LESSOPEN is to blame? 17:22:40 and indeed, /bin/lesspipe (=/usr/bin/lesspipe) complains on 104 17:22:48 elliott: I'm saying the default value of $LESSOPEN is to blame 17:22:53 how is that relevant? 17:22:53 because it's set to lesspipe 17:23:03 I was telling you you didn't need a wrapper script to accomplish what you want 17:23:06 sheesh 17:23:13 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 elliott: well, I either need to wrap less, or lesspipe 17:23:36 ais523: wtf? 17:23:40 ais523: just do what Deewiant said 17:23:48 nobody forces you to pue lesspipe in that variable 17:23:50 *put 17:23:55 Deewiant: np 17:23:59 elliott: well, it processes gzip files 17:24:04 which is a useful thing for it to do 17:24:25 LESSOPEN="| /usr/bin/lesspipe %s | highlight -qOxterm256 --force" 17:24:26 Deewiant: highlight (via the libhighlight-perl bindings) is what p.zem.fi uses. 17:24:32 hi 17:24:50 ais523: you're complaining "I don't want to use LESSOPEN to accomplish this because of " 17:25:16 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 Deewiant: Is the obvious reason that Finns are blind to each other's words? 17:25:57 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 The reason is that fizzie is the only one I know of who has write access to it. 17:26:45 Deewiant: http://p.zem.fi/w3mimgdisplay.c 17:27:28 fizzie: You should use a content-disposition header on that .bin to set the filename correctly. 17:27:37 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 http://p.zem.fi/w3mimgdisplay.sybase 17:28:26 Deewiant: Yes, I sort of forgot to handle errors there. 17:29:03 This committee is not addressing lazy programmers. 17:29:09 :D 17:29:23 fizzie: " 17:29:23 XXX = unsupported language: x" 17:29:26 Looks like error handling to me! 17:29:33 Well, for some values of "handling", maybe. 17:29:54 s/"\n/"/ 17:30:04 Oops, now fizzie's line is squashed into mine. :/ 17:33:00 > let _ = 2 in _ 17:33:01 Pattern syntax in expression context: _ 17:33:07 mmk 17:34:48 "Thinking in typeclasses is IMO the best thing to do: it's really the most Haskellish." 17:34:56 wat 17:34:56 Starting to become convinced that everyone but me is just crazy. 17:37:27 ais523: btw, shouldn't it run less or ls | less, for consistency? 17:46:11 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 Meh, evidently so. 17:47:39 $ highlight -qOxterm256 --force /bin/ls 17:47:39 highlight: Undefined language definition. Use --syntax option. 17:47:39 zsh: segmentation fault highlight -qOxterm256 --force /bin/ls 17:48:04 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 That's what I thought --force would do. 17:48:32 (With -q.) 17:48:33 "less /bin/ls" outputs "^?ELF^B^A^A" in blue now. 17:49:54 yay! http://stackoverflow.com/users/1097181/ehird 17:50:12 Deewiant: Couldn't you just use || cat %s? 17:50:17 Assuming you can silence errors. 17:50:38 I told it to be quiet and it still said "Undefined language definition" (and segfaulted). 17:51:28 I'm assuming sharing applies to typeclass constants right? 17:51:30 Evidently it says that whenever the file has no extension. 17:51:36 it would be silly to calculate minBound for a type multiple times. 17:52:10 Deewiant: You might want to report a bug. :p 17:52:15 Anyway, 2>/dev/null and so on. 17:54:27 elliott: You're reputation is apostrophical. 17:54:32 http://sprunge.us/ELCM some code to generate Enum instances for 2-operand product types. feedback welcome. 17:54:41 Well, -q is just "supress progress info in batch mode" [sic], so maybe 2>/dev/null is the canonical solution. 17:55:28 http://en.wikipedia.org/wiki/Talk:Stack_Overflow#Partisanship_section_recuringly_censored_by_MICROSOFT_vendors 17:55:29 http://en.wikipedia.org/wiki/Talk:Stack_Overflow#Criticism_.28October_2011.29 17:55:36 TIL people on [[Talk:Stack Overflow]] are insane. 17:55:36 Deewiant: It does quiet the "unknown extension" message, though. 17:55:59 * elliott yells "MICROSOFT" every time it says "MICROSOFT". 17:56:15 "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 this is amazing :D 17:56:30 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 Hmm, it's by the vendors of this thing, which I have seen before: http://g-wan.com/ 17:57:12 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 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 "G-WAN (~100 KB) makes it a breeze by transparently parallelizing legacy procedural code." 17:57:36 I'm sure it does. 17:57:44 Also I like how you can't select text on that site. 17:57:49 fizzie: Does that mean I get money? 17:58:06 It doesn't say. 17:58:13 It sounds like money! 17:58:18 More money than Haskell, anyway. 17:58:38 "G-WAN makes C/C++ libraries fly: 17:58:38 Developping C# though... are you sure it's worth it? 17:58:41 #pragma link "sqlite3"" 17:58:48 FLIGHT. 17:58:59 fizzie: Well, I must be pretty good at it, if I've written books about it. 17:59:06 Actually I suppose that doesn't hold for an awful lot of tech books out there. 17:59:40 "so NO REFERENCE IS AVAILABLE BECAUSE OF STACKOVERFLOW CENSORSHIP." 17:59:43 That's remarkably convenient. 18:00:11 elliott: You'll also start to make blattant lies. 18:00:21 "who claimed during a conflict that he is a RUBY developer while in fact he works as a C# developer." 18:00:27 fizzie: I might even start programming in more than one language! 18:00:38 "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 The conspiracy, it's spreading. 18:01:01 They're all MSFTies too. 18:01:07 Once you get past 50k edits... 18:01:27 "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 :D 18:01:32 This just keeps getting better. 18:01:43 You "Ordinary users" with your Wikipedia "User" pages. 18:02:13 I think he's drinking the Microsoft Kool-Aid. (Is that what you say?) 18:02:24 I don't know about idioms. 18:02:37 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 As you list yourself as a StackOverflow moderator on your profile, I hardly consider you an unbiased source. [...] 18:02:38 I'm not a Stack Overflow moderator. SathyaBhat (talk) 15:18, 24 October 2011 (UTC) 18:02:46 SECRET STACK OVERFLOW MODERATOR. 18:04:27 What's this "Super User" thing? 18:04:37 > toEnum 256 :: Word8 18:04:38 *Exception: Enum.toEnum{Word8}: tag (256) is outside of bounds (0,255) 18:04:38 fizzie: It's the Third Site in the Stack Overflow Trilogy. 18:04:45 What's the second? 18:04:46 fizzie: I swear this terminology is not made up. 18:04:50 Deewiant: Server Fault. 18:04:58 Server Fault is sysadmin stuff; Super User is general "computery" stuff. 18:05:13 Oh, I thought Super User was the sysadmin one. 18:05:20 Okay then. 18:05:51 I wonder if there's a way to automatically determine the minimal WordN type needed to represent maxBound of a type. 18:05:53 fizzie: Help! Microsoft just hired me! http://en.wikipedia.org/w/index.php?title=Stack_Overflow&diff=471179936&oldid=469906030 18:06:08 kallisti: Represent howso? 18:06:11 Bounded doesn't imply integral. 18:06:14 well yes. 18:06:42 kallisti: So I don't see how it makes sense. 18:06:48 hmmm... 18:06:56 for a Bounded Enum 18:07:00 how about that? 18:07:16 kallisti: Well, Enum only offers ->Int conversion. 18:07:21 So it fits into an Int. 18:07:25 Apart from wrong instances. 18:07:30 @src Integer fromEnum 18:07:31 Source not found. I can't hear you -- I'm using the scrambler. 18:07:34 Wrong instances like that. 18:07:40 (Fuck the Prelude.) 18:07:57 right but you could convert it to a smaller integer type right? 18:08:12 ais523: btw, shouldn't it run less or ls | less, for consistency? <-- it's not about consistency, it's about convenience 18:08:13 how would you determine the minimum at compile time. 18:08:45 or is that generally an impossible thing to do because it requires runtime information (namely fromEnum (maxBound)) 18:08:51 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 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 fizzie: IT'S IMMORAL. 18:09:14 It's in YOUR oral. 18:09:27 I don't know what that meant. 18:09:36 This channel is rated PG, man. 18:10:11 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 bash 18:11:17 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 i think 18:11:27 I'd strongly suspect the shell, but I've never thought about it. 18:11:31 It'd sound the logical place. 18:11:31 I feel as though this Enum generator thing is probably something that someone has already done somewhere. 18:11:47 :D there's a "bloomier filter" 18:12:06 Given that zsh says "zsh: segmentation fault" it'd be very unexpected if it weren't the shell. :-P 18:12:24 do modules implicitly export typeclass instances that they import? 18:12:36 oh wait irrelevant 18:13:22 kallisti: There is no control over importing/exporting instances. 18:13:26 Instances just permeate the natural vacuum. 18:13:30 ah good 18:13:32 If they can get to your code, they will. 18:13:36 that's what I thought 18:13:41 (That's required by the open world assumption.) 18:13:42 but wasn't sure. 18:14:08 (See my answer to http://stackoverflow.com/questions/8728596/explicitly-import-instances.) 18:14:45 maxBoundProd looks lonely without a minBoundProd. but in most cases it would just be toEnum 0 18:15:09 but it could NOT be that... I guess. 18:15:09 elliott: Please leave a space after URLs so that hyperlinkifiers get it right; thanks. 18:15:45 Deewiant: Your hyperlinkifier is seriously broken if it includes final dots. 18:15:57 Also, is incredibly ugly. :( 18:16:01 elliott: It includes the dot and the period. 18:16:09 And that's a completely valid resulting URL. 18:16:14 Deewiant: There's a difference between a dot and a period? 18:16:17 Erm. 18:16:21 The dot and the bracket. 18:16:42 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 I suppose I could half-heartedly make an effort to enclose them in cases of ambiguity? 18:17:02 (See my answer to .) 18:17:04 does that work? 18:17:06 s/^d/D/ 18:17:10 Yeah, that seems to work. 18:17:54 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 Deewiant: Also: 18:18:14 [htkallas@pc112 ~]$ echo "./segfault" | bash 18:18:14 bash: line 1: 24141 Segmentation fault ./segfault 18:18:14 [htkallas@pc112 ~]$ echo "./segfault" | env LC_ALL=fi_FI.UTF-8 bash 18:18:14 bash: rivi 1: 24144 Muistialueen ylitys ./segfault 18:18:30 (For some reason it won't obey LC_ALL if I give it -c "./segfault" instead.) 18:18:47 Heh. 18:18:56 fizzie: Probably it bubbles the signal up. 18:19:04 Because -c is generally for non-interactive use. 18:20:52 ha ha ha monomorphism restriction you're funny. 18:21:34 elliott: It looks as if it execve's ./segfault without forking if I do a simple-command -c like that. 18:22:12 [htkallas@pc112 ~]$ LC_ALL=fi_FI.UTF-8 bash -c "./segfault" 18:22:12 Segmentation fault 18:22:12 [htkallas@pc112 ~]$ LC_ALL=fi_FI.UTF-8 bash -c "./segfault > /dev/null" 18:22:12 bash: rivi 1: 24200 Muistialueen ylitys ./segfault > /dev/null 18:22:21 I guess it makes sense, even if it's not quite what I'd expect. 18:22:24 File a bug report about that changing behaviour. 18:22:45 At least it won't leave all those useless 'bash' processes around when people do "sh -c ..." from wherever. 18:23:04 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 I don't know, then I'd have to dig around the documentation first to see if it's mentioned somewhere. 18:24:30 fizzie: That's what maintainers are there for! 18:24:36 To do that for you and yell at you about it. 18:27:17 is eVal hungarian notation? 18:30:56 no... 18:31:00 well, maybe 18:31:02 it is a value 18:31:03 >_> 18:31:12 According to one list, "e" is a prefix for enums. 18:31:35 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 I'll let you determine which is shittier. 18:32:58 foo 18:32:59 :: (GArrow g (**3) u, 18:32:59 GArrowDrop g (**2) b, 18:32:59 GArrowCopy g (**) u1, 18:32:59 GArrowCopy g (**2) b, 18:32:59 GArrowSum g (**1) ((**2) a1 (Mu (Foo a1))), 18:33:01 GArrowLoop g (**) u1) => 18:33:03 g a (Mu (Foo a1)) 18:33:05 Well this is going to be painful. 18:33:20 So much type! 18:33:29 Also so full of stars. 18:33:40 The best part is that those (**2) things aren't actually valid syntax. 18:33:47 It just appends numbers without thinking, to operators. 18:34:13 Is there some sort of GHC extension to make that work, or was this just written by a blithering idiot? 18:34:37 pikhq_: "This" was written by the blithering idiot known as GHCi. 18:35:46 Ah, classy. 18:38:28 *Main> putStrLn . runHask $ foo 18:38:28 \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 Yay! 18:39:09 :t toInteger 18:39:10 forall a. (Integral a) => a -> Integer 18:39:23 Phantom_Hoover: Behold. 18:39:52 > fromEnum . succ . toInteger $ (maxBound :: Int) 18:39:53 -9223372036854775808 18:39:55 lolwat 18:40:16 > succ (maxBound :: Int) 18:40:17 *Exception: Prelude.Enum.succ{Int}: tried to take `succ' of maxBound 18:40:21 > 1 + (maxBound :: Int) 18:40:22 -9223372036854775808 18:40:25 kallisti: I simplified it for you. 18:40:33 well... yes. 18:40:53 negative enum indexes seem... bad. 18:41:13 kallisti: Not really? 18:41:20 enum foo { MAGIC_BLAH = ~0 } 18:41:22 *}; 18:42:09 -!- Vorpal has quit (Ping timeout: 240 seconds). 18:42:16 Phantom_Hoover: I SAID BEHOLD. 18:42:20 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 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 elliott: also are you sure that "they're used in C" is a good defense? 18:53:22 kallisti: That's what Enum is for. 18:53:24 An enumeration of values. 19:00:15 Hello! 19:01:15 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 what is the topological structure of the universe? 20:04:25 er rather 20:04:26 space 20:04:32 in the universe 20:05:00 I read it was some sort of mobiusy dodecahedron or something somewhere 20:05:03 Also... 20:05:06 -!- Ngevd has quit (Quit: ice cream). 20:05:23 dodecahedron wat 20:06:13 kallisti: http://en.wikipedia.org/wiki/Shape_of_the_Universe 20:06:23 kallisti: flat 20:06:45 No. 20:06:56 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 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 a) is kind of splitting hairs, admittedly, and b) was due to a misunderstanding 20:09:09 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 elliott, no, I mean I assumed you were following on from Ngevd. 20:11:14 Ah. 20:11:49 -!- oerjan has joined. 20:11:49 so uh... which one is it? :P 20:12:23 kallisti: Which one of what? 20:12:27 It's flat. 20:12:44 "flat" isn't a topological structure is it? 20:13:00 Phantom_Hoover: Okay, I was too liberal. 20:13:04 Flat here means R^3. 20:13:14 oh. okay. 20:13:17 (With the usual topology, of course.) 20:13:52 I thought most scientists believe that the universe "wraps around" 20:13:55 Phantom_Hoover: http://upload.wikimedia.org/wikipedia/commons/1/16/World_line.svg I like how this is indistinguishable from pseudoscience. 20:14:01 kallisti: You thought wrong. 20:14:12 kallisti: Also, it's not like you could ever find out, to my understanding. 20:14:15 i.e. there is no way to reach the edge. 20:14:50 You could find out, at least through application of the Copernican principle and measurement of the large-scale curvature. 20:16:07 Well, OK, but I mean "you couldn't actually do it". 20:17:28 -!- Ngevd has joined. 20:17:31 Hello! 20:18:12 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 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 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 kallisti: projectable product types, or patternmatchable product types? 20:27:11 I don't know the difference. "Haskell product types" :P 20:27:22 Haskell's pure, so it doesn't matter ther 20:27:22 so probably the latter/ 20:27:24 *there 20:27:26 oh. 20:28:09 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 with mixed radix. 20:28:18 I'm not going to spend 40 minutes discussing product types with someone and then not /use/ the resulting knowledge 20:28:31 lol 20:28:46 basically in fromEnumProd is where you can see the mixed radix. 20:29:38 numOf b returns the total number of elements of b's type. numOf True would return 2. 20:29:56 (it makes some assumptions about how the Enum instance is defined) 20:30:01 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 This is precisely the current scientific consensus. 20:30:58 oh good. 20:31:00 Phantom_Hoover: Eventually we're going to need big magnets to keep everything close enough. 20:31:20 does this mean I'm actually increasing in volume? :P 20:31:48 I don't think so 20:31:49 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 kallisti, no. 20:32:13 The bonds holding you together are slightly strained by the expansion, but they aren't pulled apart. 20:32:31 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 I guess I could define an applicative? maybe 20:35:09 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 every field needs to be Bounded and Enum, except for the last one, which can be just Enum. 20:36:21 oh wait no they all need to be Bounded I think. 20:36:37 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 Phantom_Hoover: Excuse me are you suggesting magnets will get less powerful. 20:36:48 (Also I know that you dolt.) 20:36:53 Yyyyes. 20:37:39 Phantom_Hoover: But what will ICP do? 20:40:04 Phantom_Hoover: Also couldn't you just use a really really dense powerful magnet. 20:40:11 We just need to keep creating larger magnet galaxies. 20:40:54 yes this is exactly like a mixed radix numeral system. shocking. 20:43:54 kallisti: see also instance Ix for tuples 20:47:29 it's pretty difficult to read.. 20:47:39 @src (,) index 20:47:40 Source not found. The more you drive -- the dumber you get. 20:47:41 @src (,) range 20:47:42 Source not found. There are some things that I just don't know. 20:47:42 hmph 20:47:53 wouldn't it be nice if @src actually worked. 20:47:55 http://www.haskell.org/ghc/docs/6.12.2/html/libraries/base-4.2.0.1/src/GHC-Arr.html#Ix 20:48:25 kallisti: "6.12.2" 20:48:33 whatever 20:48:57 it's not immensely likely to have changed 20:49:18 oerjan: considering that the latest docs do _not_ include ghc.arr... 20:49:28 O KAY 20:49:31 though http://www.haskell.org/ghc/docs/latest/html/libraries/base/src/GHC-Arr.html works 20:49:42 oerjan: if you keep replying to everything with O KAY it'll become annoying :P 20:49:51 O KAY 20:49:58 cough 20:50:07 oh no, not the coughing 20:53:14 I am GOING TO READ A BOOK. 20:53:16 MADE OF PAPER 20:53:23 LOOK AT ME BEING ALL LOW TECH 20:55:42 Phantom_Hoover: Have I told you about how we don't have electricity in Hexham? 20:55:48 Linear algebra is not as boring as I'd thought. 20:55:50 Ngevd: What's the book. 20:56:03 The Girl with the Dragon Tatyoo 20:56:06 Tatyoo. 20:56:13 That was a ytpo 20:56:25 oaky 20:58:01 I also read the books made of paper, when resting in bed 20:58:17 Phantom_Hoover: What are the books made out of in Edinburgh? 20:58:25 This book is set in Sweden. 20:58:36 Raw abstraction. 20:58:47 I understand there is at least one person who lives in Sweden who frequents this channel 20:58:58 Ngevd: Yes, and he's terrible. 20:59:11 Ooh, maybe he's the killer! 20:59:22 Ngevd: it's originally in swedish, yes 20:59:24 Dammit, elliott, you've ruined the ending for me! 20:59:43 oerjan: Just like you. 21:00:20 elliott: jag fattar inte vad du pratar om 21:00:29 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 oerjan: "You're fat, also bad; do you pratar om?" 21:01:24 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 elliott: hey i cannot disagree with you making a translation that insults you 21:01:47 zzo38: the way I see it working is you choose a preference. 21:01:53 either white, black, or no preference 21:01:55 or 21:02:03 if there's a ranking system, then unfavored players are given white. 21:02:06 kallisti: That does make sense is one way 21:02:16 or some mix of the two. 21:02:20 I think, choose the preference. 21:02:37 -!- monqy has joined. 21:02:48 yes. a ranking gsystem implies a) an actual userbase b) a consistent set of rules 21:02:51 of which I have neither. 21:03:09 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 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 yes that sounds good. 21:05:42 so the preference should be indicated as part of the standard "greeting" between a client and server. 21:06:27 Is 2.4 million kronor a lot? 21:07:01 Phantom_Hoover: So wait, is everything in Edinburgh made out of raw abstraction? 21:07:06 "Do you want to play [f]irst, [s]econd, or [n]o preference?" 21:07:15 elliott, yes. 21:07:23 Phantom_Hoover: What about the sandstone? 21:07:25 How else do you think a Phantom_Hoover such as myself could live there. 21:07:36 elliott, raw abstraction and sandstone. 21:07:54 Phantom_Hoover: Ah. 21:08:07 Phantom_Hoover: I forget, are you a hoover that hoovs phantoms or a hoover that is a phantom? 21:08:08 Sandstone is a very good abstract building material. 21:08:13 I always forget. 21:08:19 A hoover that is phantom. 21:08:27 zzo38: I don't really know if I intend to set it up that way. perhaps. 21:08:37 I'm a Taneb who is a Ngevd who is about to leave 21:08:38 -!- Ngevd has quit (Quit: Goodbye). 21:08:45 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 kallisti, elliott Phantom_Hoover darnnit Ngevd left update 21:08:53 Who else? 21:08:55 Phantom_Hoover: Wait why don't you change your name to Phantom Hoover, it's way more pronouncable. 21:09:08 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 Sgeo: You LIED to me. 21:09:30 elliott, what? 21:09:50 monqy 21:10:01 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 elliott, my name was Phantom_Hoover until IRC ruined it. 21:10:06 cf. the wiki. 21:10:13 hi 21:10:17 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 Phantom_Hoover, I don't think monqy wants to be on my list? 21:11:18 I may be wrong 21:11:27 I should make a macro or something 21:11:41 Sgeo, i want him to suffer 21:11:50 elliott, my name was Phantom_Hoover until IRC ruined it. 21:11:53 Phantom_Hoover: I meant your IRL name? 21:12:06 Sgeo: There was no update. 21:12:15 Because everyone would give me funny looks. 21:12:17 elliott, there was. 21:12:28 elliott, yes there was, unless you checked like two seconds before I announced and read it already 21:12:36 Oh, there it is. 21:12:44 Phantom_Hoover: Dude, you're called Ahamhmahnahmnhahhnahanin McCuil. 21:12:50 Phantom_Hoover: Your funny lookage would *decrease*. 21:13:06 elliott, I don't actually recall saying you could disclose that in the channel. 21:13:38 Phantom_Hoover: (a) I spelled it terribly (b) Dude it was originally in the channel. 21:13:54 It's also been in the channel multiple times since originally being in the channel? 21:14:21 I still don't recall saying that. 21:14:43 2011-04-15.txt:08:55:14: -!- Phantom_Hoover is now known as A_McCuil. 21:14:56 Humm. 21:15:08 First occurrence of "McCuil" (case insensitive) 2010 onwards. 21:16:22 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 Cuil was not crappy. 21:17:00 Phantom_Hoover: OK, *innovative search engine 21:17:10 elliott: I see that you bothered. 21:17:13 Innovative in areas such as, for example, not returning relevant results. 21:17:24 shachaf: I was running close to the cap and wanted accept rep. 21:17:33 shachaf: :( 21:17:34 elliott: the innovation has been around since long before. 21:17:35 It did, however, produce extremely entertaining results. 21:17:37 *that 21:17:39 -!- Ngevd has joined. 21:17:42 Hello! 21:18:01 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 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 Ngevd: How quickly did you read. 21:18:21 Ngevd: 2.4 million Swedish kronor = 223 598.928 British pounds 21:18:26 Not quickly enough 21:18:29 Phantom_Hoover: Also, slapping B-coloured paint on A, etc. 21:18:36 oerjan, hmm... I could do with that amount of money 21:19:06 > let (a, a) = (2,2) in a 21:19:06 Conflicting definitions for `a' 21:19:06 Bound at: :1:5 21:19:07 this should be a thing. 21:19:27 * shachaf should create fake SO questions that steadily grow more and more annoying. 21:19:30 kallisti: gb2Prolog HTH HAND 21:19:37 gb2? 21:19:39 > let (a, _) = (2, 2) in _ 21:19:41 Pattern syntax in expression context: _ 21:19:41 get back to 21:19:41 Phantom_Hoover: Go back to. 21:19:50 shachaf: That would be indistinguishable from SO. 21:20:03 elliott: I think you underestimate me. 21:20:10 Ngevd, in a, not in _ 21:20:13 elliott: I'm trying to think of a situation where such a thing would be useful. 21:20:24 The goal would be to see how long you could last before going *actually* insane. 21:20:29 but I don't think it would be too difficult to implement would it? 21:20:36 kallisti: What do you want this to do, exactly? Compare with (==)? 21:20:48 whatever case does. 21:20:58 No, you don't want structural equality. 21:21:04 What if a is a function? 21:21:27 What if a is a Set, and you have two equivalent sets that are represented using different trees? 21:21:29 > let f id = 5 in f id 21:21:30 5 21:21:33 ! 21:21:36 I... don't know. 21:21:42 What if a is a data structure that has cycles in it? 21:21:44 How... what 21:21:48 I guess Eq would work, but maybe isn't the best way? 21:21:56 > let f q = 5 in f id 21:21:56 > let f id = 5 in f (id . id) 21:21:57 5 21:21:57 5 21:22:07 > let f id = 5 in f undefined 21:22:08 5 21:22:14 kallisti: The best way is probably not to do it. 21:22:14 Oh 21:22:33 ...oh 21:22:33 :t let f id = 5 in f 21:22:34 forall t t1. (Num t1) => t -> t1 21:22:41 * Sgeo suddenly sees the obvious 21:22:46 (Before the type) 21:23:02 Before the type, all IRC users are equal. 21:23:31 > let num = (1::Int) in let f num = num in f 2 21:23:32 I am great confused waht tpye 21:23:32 2 21:24:04 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 correct 21:26:18 > let f id = 5 in f id 21:26:18 5 21:26:18 ! 21:26:18 How... what 21:26:34 On this day elliott died by putting his palm on his face so hard that it went straight through. 21:27:11 elliott: hi now is the time where you have an opportunity to talk me out of using a monad transformer. 21:27:15 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 kallisti: You're stupid and dumb and your code sucks and I hate you. 21:27:45 Oh, *monad* transformer. 21:27:51 Uh, shachaf doesn't like them. 21:28:05 shachaf, why do you not like monad transformers. 21:28:14 They're like burrito transformers! 21:28:19 oerjan: Unfortunately they're made out of pure abstraction and thus pass right through normal matter. 21:28:27 > let f (\x -> x) = 5 in f id 21:28:27 They turn burritos into spacesuits containing toxic waste. 21:28:27 : Parse error in pattern 21:28:28 Phantom_Hoover: I don't like them either, if that means anything to you. 21:29:11 Oh dear, the Scottish clan is invading Hexham again 21:29:19 Don't forget to burn the Abbey! 21:29:30 elliott: you shouldn't underestimate their sandstone ballistas 21:29:38 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 or if I can avoid doing so altogether 21:30:00 Ngevd, we will abstract burn them. 21:30:01 Sgeo: do you not understand what was happening 21:30:16 Phantom_Hoover: Yes, so they'll be abstractly burned but not concretely. 21:30:20 elliott, I don't know much about them; I'm interested in what's wrong with them? 21:30:27 Monad transformers, that is. 21:30:29 monqy, I figured it out 21:30:39 * Sgeo suddenly sees the obvious 21:30:54 Phantom_Hoover: They don't compose well. 21:31:03 id in f id = was just a variable in the pattern to be assigned to whatever the argument was 21:31:37 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 > let 2 + 2 = text "~the wonders of shadowing~" in 2 + 2 21:31:39 ~the wonders of shadowing~ 21:31:50 Phantom_Hoover: That sounsd specific, but in reality it means that monad transformers can pretty much do anything. 21:31:59 elliott, no, I get what you mean. 21:32:02 When turning a monad into its transformer, there's no mechanical rule for telling where you layer on the "m"s. 21:32:28 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 I mean, there's a RWST that's just ReaderT, WriterT, and StateT bundled together for performance. 21:33:01 I'm not entirely sure I understand the purpose of RWS 21:33:04 (I guess "convenience" too, but it could just be a type synonym if that was the real reason.) 21:33:12 it seems that State works well for all three of these things. 21:33:23 kallisti: Yes, and you can write all your code in IO, too. 21:33:33 Using State for all of those is great, because you can write to your read-only state! 21:33:38 And reverse your monoidal accumulator. 21:33:40 MONAD TRANSFORMERS R DUM 21:33:42 That's why. 21:33:46 * shachaf QED 21:33:56 shachaf: I think Phantom_Hoover will find your criticism tau times as convincing as mine. 21:34:03 s/sounsd/sounds/ 21:34:06 So basically, needing to learn new semantics for each monad transformer independent of the semantics of the monad? 21:34:08 s/}/ }/ way up 21:34:24 Sgeo: Well, no, what they do is usually intuitively obvious. 21:34:27 That's not saying much, though. 21:34:34 Oh, yeah, and it's really hard to "combine" monad transformer stacks. 21:34:38 You pretty much have to define one stack and stick to it. 21:34:53 You can't say "this code needs , this other code needs , and this code uses both the previous codes". 21:34:57 elliott: So at least one of our criticisms was irrational. 21:35:04 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 Oh, wait, you're giving actual justifications. 21:35:11 what we need is a monad transformer zipper! 21:35:52 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 With Haskell you need to, at the very least, interleave <$> and <*> everywhere. 21:36:04 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 writer could be used for a log.... but, do I need one of those? 21:36:30 oerjan: Yeah, and you can't define context synonyms, so all your method signatures are 10x larger! \o/ 21:36:46 oerjan: Also, if the compiler doesn't inline it away, you get to pass around a hundred typeclass dictionaries everywhere! 21:36:53 s/method signatures/definition signatures/ 21:37:06 oerjan: Oh, and you can't have two pieces of state in the same stack. 21:37:15 That's just not allowed. Everyone only needs one piece of state. 21:37:44 elliott, hmm? Surely you can if you drop the convenience of MonadState? 21:37:55 Sgeo: 21:38:00 Oh, yeah, and it's really hard to "combine" monad transformer stacks. 21:38:00 You pretty much have to define one stack and stick to it. 21:38:00 You can't say "this code needs , this other code needs , and this code uses both the previous codes". 21:38:00 At least not without a LOT of threading stuff manually to run it all. 21:38:03 elliott: hey that's what Monad* classes are for 21:38:13 Phantom_Hoover: I BET YOU'RE NOT EVEN READING THAT 21:38:33 I was reading, does that count?? 21:38:34 elliott: Phantom_Hoover thinks this was far too concrete for an abstraction 21:38:35 shachaf: You should read it too, unless you did since I told you ages ago. 21:39:14 What's with the def and nonsense? 21:39:39 Tastes like... ML? 21:39:46 I wonder if Valve will hunt me down if I make advertisement money off of portal chess. :P 21:39:56 kallisti: just name it something other than portals 21:40:00 Sgeo: Well, it's not like you can do mutually-recursive definitions any other way at a REPL. 21:40:04 elliott: Read what? "introducting eff"? 21:40:05 But yes, the authors are ML people. 21:40:13 shachaf: Yes. I told you to the last time monad transformers came up. 21:40:19 It's in my list-of-things-that-I'll-ostensibly-read-someday! 21:40:25 Isn't that enough for you, elliott? 21:40:32 elliott: I had an INTERCAL REPL idea that each line you wrote would append to a program 21:40:36 shachaf: NO READ NOW. 21:40:37 There are only about a hundred other tabs in that list! 21:40:44 shachaf: It's like 3 pages long, dude 21:40:45 and it'd rerun the program from scratch each time, discarding any output that was the same as last time 21:40:46 DUDE. 21:40:48 ais523: heh 21:40:51 that way, even COME FROM would work properly 21:41:27 elliott: Fine, I'll move it to the end of that list. 21:41:32 I always start from the end. 21:41:47 shachaf: OK, and then start now. 21:41:55 * shachaf should probably wake up now. 21:42:13 alles hat ein ende nur die wurst hat zwei 21:42:53 ais523: In an emergency situation, could you crudely fashion an antistatic wristband by crouching on a computer case? 21:43:15 elliott: depends on if the case is earthed 21:43:25 which it probably will be if it's made of metal, not painted, and plugged in 21:43:29 1 and 3 are likely, 2 may not be 21:43:32 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 mmmmmm 21:43:39 (the paint would make the outside not earthed, although the inside would be) 21:44:04 ais523: thanks, I'll let my supernatural vacuum cleaner friend know 21:44:10 earth tone painting 21:44:33 elliott: this is a really bizarre question, anyway 21:44:42 a good emergency antistatic wristband is water pipes, anyway 21:44:44 wow, TPB are switching to magnet links exclusively 21:44:49 they're often unpainted, and quite commonly found around houses 21:45:15 'Often'? 21:45:23 I don't think I've ever seen painted water pipe— oh wait you don't mean taps. 21:45:32 (I used a tap to assuage my paranoia.) 21:45:33 and pretty much every house has their entire water supply system earthed because it saves on money for earth wires 21:45:45 Phantom_Hoover/tap otp 21:45:49 well, on the flip side, sometimes taps are made of plastic 21:46:18 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 Phantom_Hoover: I think we actually own one 21:46:41 haven't used it in years, though 21:46:44 Phantom_Hoover: Reference 1. Postman Pat 21:46:58 Phantom_Hoover: my aunt has one 21:47:07 used it occasionally to wash the carpet, rather than just vacuum-clean it 21:47:25 elliott: You're missing out on #haskell 21:47:41 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 20 minutes is simply inexcusable 21:48:19 is carpi for real 21:50:14 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 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 right? 21:50:58 shachaf: Did you suggest -O2? 21:51:02 Did anyone suggest -O2? 21:51:02 if I used strict RWS I would want to add IO to the stack. 21:51:05 I bet carpi is running in GHCi. 21:51:29 elliott: yes oxygen is generally helpful when problem solving. 21:51:31 ghci -O2 is the obvious answer. 21:51:38 kallisti: Don't use lazy input. 21:51:51 shachaf: Come on, you have to suggest -O2, it hurts me inside. 21:52:10 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 elliott: Why don't you suggest it? 21:52:47 02:36:01 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 02:36:43 carpi: the things the runtime does for you is stuff that gets "executed" 21:52:47 02:38:40 and by runtime are you referring to the part where actions are performed by systems outside haskell on behalf of haskell? 21:52:47 02:39:47 carpi: the RTS 21:52:48 02:42:57 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 shachaf: Because I'd join and go "HI, SHACHAF PASTD ME LOGS TO MOCK YOU, USE -O2" and no. 21:53:03 elliott: or are you saying /in general/ not to use lazy input? 21:53:11 kallisti: In general. 21:53:16 elliott: Hey, I wasn't *mocking*! I was sharing. 21:53:40 elliott: ...really? 21:53:44 kallisti: Unless you want space leaks, resource allocation problems, unpredictable performance, ... 21:53:47 * shachaf imagines it: * elliott has join #haskell USE -O2! WHY ISN'T ANYONE TALKING ABOUT -O2??? SOMEONE MENTION -O2, YOU USELESS CHANNEL! * elliott has left #haskell [RAGE] 21:53:51 ... difficult-to-debug IO problems ... 21:54:11 elliott: so you mean lazy input is a bad idea for programs that are moderately complicated. 21:54:20 but okay for simple things. 21:54:35 kallisti: No. 21:54:45 Lazy IO is "good" for the following: trivial examples. 21:54:45 Lazy input is useful only for toy hacks. 21:54:59 i.e. programs you will run less than 5 times ever. 21:55:02 I see. 21:55:10 Or, I suppose, programs that are thiny-veiled wrappers over a trivial pure function. 21:55:15 elliott: Nonsense. 21:55:25 There's also the second thing you mentioned. 21:55:34 And probably there are other justified uses for lazy I/O. 21:55:34 elliott: and here I thought lazy input was something that made Haskell awesome to use. :P 21:55:54 shachaf: Well, "interactive multi-user network server" isn't one. 21:56:21 who cares about multiple users anyway 21:56:25 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 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 elliott: I'm guessing they generalize to many different sources of IO? i.e. sockets, filehandles, concurrent channels 21:57:28 shachaf: 13:10:18 koeien: yea in ghci 21:57:30 shachaf: Told you. 21:57:41 kallisti: Yes, although in GHC sockets are Handles. 21:57:48 (Yes, there's the lower-level interface, but you almost never need to use it.) 21:57:50 oh that's right. 21:58:15 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 elliott: I'm pretty sure Haskell is just dead slow. 21:58:27 elliott: What bias? 21:58:35 Conduits are better at the resource management thing, anyway. 21:58:36 elliott: what about things like.... a simple recursive loop. 21:58:47 Deewiant: Well, I don't like them. :p 21:58:52 elliott: Why not? :-P 21:59:03 Deewiant: They use mutable references to maintain basic internal state, for one. 21:59:25 Just because their interface is basically "stateless" but, hey, they run in ST or IO, so let's just use refs! 22:00:18 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 Which works, sure, but is bad news for something so "basic" and underlying as stream processing. 22:00:48 Also, "quotes". 22:01:00 Alright. 22:01:51 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 elliott: a simple glance at the top-level module for both enumerator and conduit suggests that enumerator is conceptually simpler. 22:02:39 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 kallisti: I suspect people will begin abandoning enumerator in droves. 22:02:55 kallisti: Anyway, enumerator is painful to use in practice. 22:03:07 Largely because there's about 10 composition operators and you usually just have to guess which one you need. 22:03:32 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 there's many more types though. I don't really know where to start. 22:04:48 SourceResult is simple enough. :P 22:04:51 kallisti: 22:04:55 http://www.yesodweb.com/blog/2011/12/resourcet 22:04:55 http://www.yesodweb.com/blog/2011/12/conduits 22:05:00 http://www.yesodweb.com/blog/2011/12/conduits-sink 22:05:05 http://www.yesodweb.com/blog/2012/01/conduits-conduits 22:05:07 http://www.yesodweb.com/blog/2012/01/conduits-buffering 22:05:13 is the blog post series they were introduced in that just concluded. 22:06:03 -!- NihilistDandy has joined. 22:06:41 elliott: I'm glad to hear that the conduit's are out of the bag. 22:07:16 shachaf: conduit's [composition operators]. 22:07:24 Oh. 22:07:30 That's what I get for not reading context. 22:07:42 * shachaf should probably just leave IRC. 22:07:46 At this rate. 22:12:11 yeah internet damages your brain, you hear. 22:23:53 elliott: I sure am learning a lot about how to abstract ResourceT to non-IO monads! 22:24:28 Sorry, next time I won't link you the material presented introducing an abstraction you find confusing. 22:25:12 elliott: oh no it's useful material I'm just drudging through it waiting for the punchline. 22:25:32 (the probably three or four functions I need) 22:25:49 kallisti: If you're writing a network server, you'll probably need more than that. 22:26:06 assuming I have an actual need to scale, yes. a good assumption to make. 22:28:24 psh, you mean resourceT can only have (maxBound :: Int) registered actions!? 22:29:05 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 zzo38: yep 22:29:27 the actual syntax I'll work out later. 22:29:38 as "prefer" could be many different kinds of preferences. 22:29:45 regarding player color and rule set. 22:29:52 and possibly other unforseen options. 22:30:48 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 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 Such as, "prefer color black" to set the preference for playing black, and "prefer -color" to unset that preference. 22:41:42 yes something along those lines. 22:43:19 elliott: okay now that I've stubmled through the ResourceT article the actual conduit article itself is significantly less painful. 22:43:35 While "prefer" by itself should probably display the current settings. 22:45:53 kallisti: *articles 22:52:29 it appears that $= =$= and =$ have considerable variation in the ways you can equivalently piece sources/conduits/sinks together. 22:53:13 It's just (a $= b =$= c =$= d =$ e), isn't it? 22:53:19 i.e. you only use ($=) and (=$) at the end-points. 22:53:50 elliott: well, if I'm understanding correctly you could could continue to use them until the midpoints 22:53:57 Phantom_Hoover: Is lambda l or h, I forget. 22:54:15 kallisti: That's just (f . g . h $ x) vs. (f $ g $ h $ x), isn't it? 22:54:18 elliott, l. 22:54:39 elliott: yes. 22:54:43 Phantom_Hoover: thx 22:55:22 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 I haven't learned how enumerators work to compare, but the basics of conduits are pretty intuitive. 22:58:51 shachaf: 22:58:52 The type of function is off, but without seeing it we probably can't tell why. – Xodarap 10 mins ago 22:58:52 22:58:52 22:58:52 It doesn't need a type – GoodGuyGreg 4 mins ago 22:59:05 IT DOESN'T NEED A TYPE. 22:59:08 lol 22:59:47 "It doesn't need a type" are probably, out of context, words I would never associate with Haskell. 23:01:44 so for example, the function that transforms text input into sybolic "commands" I would probably make a source. 23:02:01 s/function/thing/ 23:02:04 (????) 23:02:11 conduit-thingy 23:04:09 kallisti: Presumably you'd write a parser first. 23:04:33 I was actually going to define what the commands are first.. 23:04:39 and then do the parser afterwards 23:04:42 or well 23:04:44 -!- Patashu has joined. 23:04:45 do both kind of at the same time. 23:04:50 I meant before writing a conduit thing. 23:04:53 oh yes. 23:05:20 the first thing is to implement the "pure" chess game, playable by absolutely no one. it just sits there and exists. 23:05:36 lots of things in haskell don't have types 23:05:38 like types 23:05:39 then I'm going to add all the things that are required for the interface. 23:06:22 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 Omegle... now lets you log in through Facebook. 23:09:57 types have a type, kind of 23:10:09 Not in Haskell, surely. 23:10:35 the whoosh is strong in this one. 23:11:07 I'm Vorpalling. 23:11:25 * kallisti Vorpals the Ngevd. 23:12:17 sorry, *with 23:14:34 * oerjan notes that you can say "kind of" or "sort of", but not really "type of" 23:15:38 well not in that idiom. 23:16:36 kmc: They don't need types. 23:16:42 Only things that need types have them in Haskell. 23:16:45 :D 23:16:47 So, not functions. 23:19:24 is Data.Conduit correct? 23:19:32 I would think... Control.Conduit is a better name 23:19:37 perhaps. 23:19:50 There's no difference. 23:20:14 well, yes. that's the bottom line. 23:20:17 Data.List; shouldn't it be Control.List, because its Applicative and Monad instances model nondeterministic computation? 23:20:24 Data.Functor but Control.Applicative? 23:20:41 Why, shouldn't Control.Applicative be Data.Applicative, considering how many containers are instances of it? 23:20:44 such a stupid distinction 23:21:00 Why are monads in Control.Monad, but if you just chop off the type parameter it ends up in Data.Monoid? 23:21:31 oh wait I've got the best module name: 23:21:32 Conduit 23:21:43 Monad 23:21:46 Applicative 23:21:53 Conduit.Monad.Applicative 23:21:59 yes exactly 23:22:55 I guess it would make sense for Data to contain actual data structures 23:22:59 and related functions 23:23:06 kmc: Anyway, we need to sharply distinguish Data and Control to distance ourselves from the Lispers. 23:23:08 with Control containing abstractions over many structures. 23:23:09 The Data/Control module names are not really always sensible 23:23:14 Since in Haskell they are the same thing 23:23:25 kallisti: So is a total trie in Data or Control? 23:23:28 (I mean, data structures and control structures are the same thing) 23:23:30 After all, it represents a function. 23:23:42 But it's pure data, no function arrows or control structures in there. 23:24:02 elliott: I don't know enough about what that is to conclude anything about it. 23:24:55 I mean 23:24:57 I know what a trie is 23:24:59 but not a total trie 23:25:20 kallisti: http://conal.net/blog/posts/elegant-memoization-with-functional-memo-tries might help. 23:25:28 I simply mean a trie that has all its elements defined. 23:25:37 i.e. representing (a -> b) rather than (a -> Maybe b) or similar. 23:25:55 ah 23:26:13 well, can such a trie be used as a control structure? 23:26:41 (I'm not entirely sure what that means) 23:26:49 kallisti: Presumably functions call under control in your categorisation scheme, since they're not "actual concrete data structures"(tm). 23:26:51 *fall 23:27:01 Also lambda is the ultimate control flow and all that. 23:27:29 So, since you have ((a -> b) -> Trie a b) and (Trie a b -> (a -> b))... 23:27:32 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 Yet they're pure data trees. 23:27:44 I would say "control structures" in a functional language would include higher-order functions. 23:27:44 Concrete and all that. 23:27:54 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 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 Oh, "Form", that's nicest. 23:29:02 I would just remove that level. 23:29:03 There is no difference between data structures and control structures in Haskell (unless they are made strict) 23:29:03 >_> 23:29:11 Then move Control.Exception into System.Exception. 23:29:18 As well as Control.Concurrent to System.Concurrent. 23:29:32 kallisti: That would cause massive top-level pollution. 23:29:45 what nasty things does that entail? 23:30:03 Data and Control are already pretty hugely populated. 23:30:43 kallisti: For a start, there's a Data.Data :P 23:30:48 I would put Functor and then Functor.Applicative, Functor.Monad, and Functor.Comonad. That might do. 23:31:00 Also Data.Dynamic would become Dynamic, and that's a very overloaded word to occupy. 23:31:06 But put list stuff in Data.List 23:31:15 And that's just in base. 23:31:42 s/^(Data|Control)/Stuff/g 23:31:55 s/^(Data|Control)/Computers/g 23:32:06 s/^(Data|Control)/Power!/g 23:32:12 Power.Monad 23:32:16 sounds more exciting doesn't it? 23:32:18 * elliott sincerely likes Form the best. 23:32:35 sounds like something from martial arts... 23:32:41 -!- Phantom_Hoover has joined. 23:32:42 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 What are they called in mathematics? 23:32:54 Something like concurrency or exceptions or IO or whatever isn't really about form. 23:33:03 elliott: help what is "form" 23:33:18 kallisti: Buy a dictionary. 23:34:25 * Phantom_Hoover → sleep again 23:34:25 -!- Phantom_Hoover has quit (Client Quit). 23:34:43 http://www.reddit.com/r/haskell/comments/og3lr/don_stewart_spokesman_for_senate_minority_leader/ 23:34:46 GREAT HASKELL CONTENT 23:35:10 sigh 23:35:30 great comment too 23:36:09 : - ) 23:36:10 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 :: -- )) 23:38:33 mathematically correct, n. something done the way zzo likes it 23:38:42 Ssoorrrryy,, dduupplleexx sswwiittcchh oonn.. 23:38:53 oops 23:38:57 elliott: That isn't the correct definition. 23:39:02 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 correct definition would make it an adjective? 23:41:52 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 i disagree with monqy's correct 23:50:46 kmc: oh god 23:50:58 kmc: i just answered two SO questions by the poster of that functional dreamers thing 23:51:04 fml 23:51:31 functional dreamers thing? 23:53:07 monqy: http://www.jadbox.com/2012/01/functional-dreamers/ 23:53:25 oh that 23:53:29 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 proactivized 23:55:01 link elliott? 23:55:46 How often do you find (zip [0..]) a useful function? 23:56:35 very 23:57:10 kmc: to the questions? 23:57:22 yeah 23:57:28 Is there a single name for (zip [0..]) function? 23:57:38 http://stackoverflow.com/questions/8858422/does-tryhaskell-org-support-definitions http://stackoverflow.com/questions/8858739/the-difference-between-and-expressions 23:57:39 zzo38: zip [0..] 23:58:04 zzo38: there are single-name functions with more characters than that :P 23:58:16 elliott: That is not what I meant, though. 23:58:28 i'm fine with calling it «zip [0..]» 23:58:29 oerjan: I just wanted to know if there is any; it is not required 23:58:34 one less arbitrary name to memorize 23:58:36 but no, I don't know of one 23:58:39 python calls that "enumerate" 23:58:43 haha"closed as exact duplicate by duri, ehird, Martin Geisler, Tikhon Jelvis, Daniel Pratt 4 secs ago" 23:59:19 hilarious 23:59:22 (?) 23:59:32 :t (?) 23:59:33 Not in scope: `?' 23:59:56 the ideal language is one where you don't need name bindings at all 23:59:59 because they'd all be longer than the definition 2012-01-14: 00:00:25 elliott: Do you mean, like, Unlambda or Lazy-K, for example? 00:00:41 well... for sufficiently wrong definitions of "longer" 00:02:08 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 for sufficiently weird definitions of violate 00:02:51 oerjan: well um of course it's impossible 00:02:55 without an infinite alphabet at least 00:03:01 the famous mathematician G%C3%B6del 00:03:26 kmc: he encrypted his name to keep the persecutors away 00:03:28 "This statement cannot be proved in Peano arithmetic in less than a googolplex symbols" goedel really liked antagonising PA 00:04:43 oerjan: lmao at "List of long proofs" in the see also 00:04:55 i somehow doubt they're googolplex-length 00:06:00 _probably_ not 00:06:16 as even an automated prover couldn't check them 00:07:44 They could be in a less powerful system 00:09:53 http://zzo38computer.cjb.net/textfile/miscellaneous/impossible_physics_list 00:10:43 -!- cheater has joined. 00:10:55 -!- primo has joined. 00:13:32 do most web browsers support HTML% yet? 00:13:34 *5 00:13:54 what is most 00:13:58 hmm, there's a website called caniuse or something 00:14:00 the ones that the people use. 00:14:01 that tracks the support 00:14:49 so HTML5 Audio is supported in the newest versions of everything except Opera Mini 00:15:00 `welcome primo 00:15:11 browsers in risk of not having it include... IE. awesome. 00:15:11 audio why do you want audio audio is awful dont do audio 00:15:12 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 kallisti: I'd say that's a feature though 00:15:21 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 elliott: thanks 00:15:49 but of course, even Mini could open audio through whatever platform audio handler(s) there are 00:15:53 do you want audio why do you want audio dont 00:15:55 theoretically anyway 00:16:23 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 I'd say implementing that would be a horrible thing, and I will obviously prevent it 00:17:51 zzo38: it's difficult to implement a simple audio player without playing audio. 00:18:28 noisy webpages are why bad things happen 00:18:29 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 hi 00:24:59 X suddenly froze 00:25:01 what do? 00:25:06 is there a way to fix this without restart? 00:26:15 I'm just going to restart... 00:26:38 oh... 00:26:49 -!- kallisti_ has quit (Client Quit). 00:26:57 apparently 00:27:00 right clicking was the solution 00:27:46 I think gftp is just bad and I should never use it again. 00:28:09 so based on the last 9 lines, #esoteric is now kallisti's channel for talking to his/her self 00:28:23 yes. 00:29:19 A few lines are not sufficient statistics. 00:30:05 zzo38: hush, you're breaking the statistics 00:32:35 WHY ARE ALL OF THESE FTP CLIENTS SO BAD 00:32:59 kallisti: What happen if you just type in "ftp" at the prompt? 00:33:01 kallisti: ftp(1) 00:33:41 I'll learn that later. 00:34:05 im sure learning a new crappy inconsistent gui app will be about 10x eaiser 00:34:06 easier 00:34:40 well for doing a few simple things when under a slight time pressure. 00:34:43 it will be fine 00:34:45 and then I can go learn ftp 00:43:03 -!- Klisz has joined. 01:03:32 monqy: hi 01:04:29 i got a new irc client Pidgin aparently xchat is not free after 30 days 01:04:40 hahaha 01:05:17 So, US courts think that having a .com or .net hostname suffices in order for them to have jurisdiction over you. 01:05:25 hmm, i need to find some way to convince elliottt to change their legal name 01:05:47 the US has 'jurisdiction' over the entire world anyway 01:05:48 Apparently nobody in the legal system even knows a damned thing about anything. 01:05:48 or else, try and be really active in #haskell about twenty minutes ago 01:05:59 minimise or maximise confusion, the choice is mine 01:06:02 you're lucky if the courts claim jurisdiction 01:06:14 otherwise the executive branch can unilaterally blow up your house 01:06:30 Y'mean it's a matter of "most money wins" rather than "we win" then? 01:06:38 hey gusy i hear ameriKa suxe! 01:06:48 *ameriKKKa 01:07:04 I need to move to the fucking Moon. 01:08:20 jesus h christ in a chicken basket, houston 01:08:24 we're on the fucking moon, over 01:09:17 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 oh man, ame"corporatism"riKKKan is a really good name 01:09:30 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 that was completely accidental, i've created a masterpiece 01:09:54 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 pikhq: are you suggesting that we are somehow absorbing spaceflight endeavours from space 01:11:08 elliott: No. If we were we'd probably have fewer energy issues. :P 01:11:32 (I presume if you can absorb spaceflight endeavours, you can then extract electricity from it) 01:11:45 "I call it: the Science-Consuming Generator." 01:12:19 It sucks up future science and makes energy, thus killing two birds with one stone. 01:12:22 :P 01:13:32 someone tell me to go to bed 01:13:46 elliott: Go to bed. 01:14:02 ベッドへ行け! 01:16:12 oh well, g'night i guess 01:16:13 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 zzo38: The US also has about as much of a valid claim to the moon as it does Alpha Centauri. 01:17:40 nor does the sun, for that matter 01:17:50 i.e. "Hahahaha you can't even get there!" 01:18:57 primo: True; the sun doesn't either. The limits of the sun declination are the tropics of Cancer and Capricorn 01:20:00 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 itwouldn't take long to find out, if one were interested in knowing 01:21:53 and that it's something that baffles me as well 01:22:38 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 yet, that doesn't seem to be the case at all 01:26:51 I have the declinations for 47 stars, but not Alpha Centauri 01:28:30 I have the right ascension as well. They are listed in the order according to their right ascension. 01:28:45 I can also calculate ecliptic coordinates if wanted. 01:29:28 Declination -60° 50′ 02.308″ says wikipedia 01:29:35 OK 01:29:40 well, that's for A 01:30:10 -60° 50′ 13.761″ for Alpha Centauri B 01:30:49 OK. I didn't know there are two 01:31:17 −62° 40′ 46.141″ for Proxima Centauri 01:36:32 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 kmc: The official XChat for Windows is indeed not free after 30 days. 01:43:39 that's fucked 01:44:06 Windows more like WinKKKbl0$E 01:45:48 Are constellations supposed to be numbered according to alphabetical order of their Latin names? 01:52:01 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 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 well i imagine you cannot get more authoritative than the IAU on this 01:55:42 Yes, the IAU is authoritative for such things 01:55:56 kallisti, there was an update earlier 01:55:57 But this list is same as the IAU, except that it is numbered 01:58:24 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 they say one got online every day to remedy affairs caused other hours from her nick 02:01:21 roper: I do not understand without a context? 02:01:40 account hijacking 02:02:13 bot harassment 02:03:02 they are quite talkative 02:03:43 i think they use your history from other conversations 02:03:47 oh wow mozilla doesn't support mp3 in audio elements. 02:03:54 pretty ballsy. 02:04:05 kallisti: Use Vorbis or FLAC. MP3 is no good anyways 02:04:09 zzo38: yes I am 02:04:12 mp3 is not free 02:04:22 yes that's why Mozilla doesn't support its use in audio elements. 02:04:23 roper: Yes, that is one reason it is no good 02:04:25 patented 02:05:34 For videos, use Theora. 02:05:38 worse than secret 02:07:20 question for anyone 02:07:49 if an iterpretter for a given esolang doesn't work at all, can i just overwrite it with one that does? 02:08:17 questionable 02:08:33 i'm looking at ferNANDo 02:08:43 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 orLANDO 02:08:50 the haskell implementation is correct. python not at all 02:10:02 Check what things were changed by the anonymous modificationsby 164.67.235.79 and 131.179.32.131 02:10:28 Also look at talk page 02:10:31 zzo38: can't possibly work on any machine. A = B nand C was originally implemented as A = A nand B 02:10:49 and the talk page implemenation, is even worse o.O 02:11:14 Well, then, please do fix it. 02:11:33 I did not look carefully at them or try to run them on my computer 02:11:49 output 2**(9-i) should be 2**(7-i) (or, <<7-i) 02:11:57 heh 02:12:16 and the 'fix' to find the last line number is entirely broken 02:12:20 primo: well if you think it's so bad it's not worth basing a corrected one on it 02:12:28 because list.reverse() is in-place, it returns None 02:13:03 * oerjan wrote the haskell one btw 02:13:43 may ever be a limit for the most inefficient formulation? 02:14:04 that does the calculation 02:15:10 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 hm wait 02:15:27 nop is nop 02:15:29 you don't need that 02:16:13 but you can pad in time and space for technical reasons 02:16:31 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
 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  "Boy without a cerebellum baffles doctors" - I wonder if this is a documentary about guido
02:18:18  how  would you make worse a = sum (range(0,n)) ?
02:18:34  worst complexity class
02:18:42  it seems as though if I look away from skype for too long it will be frozen when I come back.
02:19:23  roper: sum(x) = sleep()
02:19:32  nope
02:19:44  not valid
02:19:47  roper: sum(x) = sum(x)
02:19:58  same complexity
02:20:09  I don't understand the question then
02:20:29  Instead of sum(range...) you could convert it to single algebra formula
02:20:32  well O(n)
02:20:37  ahh yes, it seems 164.67.235.79 broke it
02:21:07  zzo38 that would not change complexity
02:22:03  You could write   n*(n+1)/2   instead
02:22:43  zzo38 wrong, that is O(1)
02:22:53  Yes, it is O(1)
02:23:12  i mean worst complexity
02:23:35  I don't know how to change it to worst complexity.
02:23:47  neither i
02:23:52  curious
02:24:11  you can optimize but not worsenize
02:24:32  what is the "worst complexity"?
02:24:42  roper: you can easily worsenize. see bogosort for an example in sorting
02:25:13  I would say there's no end to the amount of useless operations you can perform.
02:25:27  worst complexity is... at least O(n^2)
02:25:28  if you count it, O(infnity) is the "worst possible case"
02:25:39  though big O notation is usually defined over reals.
02:25:49  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  i mean complexity class, not number of operations
02:26:31  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  zzo38: hm was that the Mel story?
02:26:54  <3 mel
02:27:15  quintopia wrong
02:27:33  roper is never satisfied.
02:27:45  roper: you are wrong
02:27:52  i am over satisfied
02:28:01  roper: the problem here is that it takes a sentient being to determine whether the worsening is allowed or not.
02:28:08  no it is still o n
02:28:19  uh, no?
02:28:54  worse than x*N OPERATIONS?
02:29:01  worst case of quintopia's algorithm is O(infinity)  aka it continues to the end of time.
02:29:19  roper: it is not O(n). it is expected to take O(n*x*1/p)
02:29:27  that is not an alforithm, kallinsti
02:29:43  where x is the size of memory and p is the probability of the right number occurring in it
02:29:57  mmm
02:29:58  roper: http://en.wikipedia.org/wiki/Las_Vegas_algorithm
02:31:02  http://en.wikipedia.org/wiki/Probabilistic_complexity#Computational_complexity
02:31:06  and deterministic?
02:31:20  instead?
02:31:34  impossible?
02:31:44  nope
02:31:56  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  then it calculates the sum of that
02:32:05  and then divides that by N
02:32:05  :P
02:32:08  WORSER
02:32:30 -!- augur_ has joined.
02:32:37  mmm
02:33:00  for instance "count to A(n) every time you increment the counter that will eventually contain your answer"
02:33:16  much worse complexity :D
02:33:58  2^n
02:34:03  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  ^
02:34:51  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  O.O
02:35:21  :)
02:35:24  roper: i have for a while now thought that you're probably trolling.
02:35:44  not entirely
02:35:51  he could just be really dumb.
02:35:53  >_>
02:36:24  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  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  what about cosbycoin
03:08:51  well if you insist on using bills...
03:10:17 -!- TeruFSX has joined.
03:10:55  oerjan: ..........................
03:11:05  astounding
03:11:21  yw
03:11:31  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  has anyone heard about the Jan. 18 "blackout"?
03:14:22  kallisti: What does that mean?
03:15:00  reddit is going to go offline on Jan 18 to protest SOPA
03:15:06  also Mozilla
03:15:09  and possibly others.
03:15:11  en.wikipedia might too, or at least display a banner: http://en.wikipedia.org/wiki/Wikipedia:SOPA_initiative/Action
03:15:34  if facebook and google do it, that might be something
03:16:03  oh god I would have to use bing.
03:16:07  or duckduckgo
03:16:08  or yahoo
03:16:11  AAAAAAAAAAAAAAAAAAAAAH
03:16:37  Will Freenode go offline too?
03:16:50  not that I'm aware of.
03:17:32  You could probably still use gopher if Google go ofline
03:19:06  Or some Wikipedia mirror
03:23:20  zzo38, you're aware that Google does not actually control the HTTP protocol, yes?
03:23:39  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  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  (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  Even though it is C, there is no buffer overflow because there is no buffer!
04:19:45  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  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  *parser result
04:27:01 -!- TeruFSX has quit (Read error: Connection reset by peer).
04:27:32  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  "non-context-free" would be an approximation.
04:29:04  oerjan: O, is that what it is called? Or, only approximately?
04:30:01  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  and i think if you use only applicative methods and a finite grammar, you can do only context-free things.
04:33:09  Yes I think so.
04:33:39  But you would rarely ever need it differently.
04:34:30  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  oh and you'll need that anyhow if you have arbitrary order of declarations like in haskell.
04:35:22  (that = post-parsing)
04:36:03  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  yeah
04:40:38  So I suppose context-free with an infinite grammar is like non-context-free?
04:42:02  yes, you can turn an arbitrary String -> Bool function into such a grammar
04:43:01  oh hm
04:43:08  finite strings.
04:46:38  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  OK
04:54:01 -!- augur has quit (Ping timeout: 240 seconds).
04:57:48 -!- augur has joined.
05:01:18  Nginx does not properly support headerless HTTP. I suggest that they fix that.
05:02:02 -!- pir^2 has joined.
05:02:07  "headerless HTTP" sounds like "not HTTP"
05:02:40  do you mean HTTP 0.9?
05:03:13  kmc: No, I mean headerless HTTP. True it is not complete HTTP. But Apache supports headerless HTTP.
05:03:44  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  do you have some documentation of Apache's support
05:03:59  all i found googling for "headerless HTTP" was HTTP 0.9
05:04:40  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  is this a documented feature
05:05:22  or just something that happens to work
05:05:28  I don't know, but I know how it works because I tried it.
05:05:52  And Apache's headerless HTTP seems more reasonable to me than Nginx's headerless HTTP.
05:05:52  so now you want nginx to be bug-compatible with apache
05:05:57 -!- Nisstyre has joined.
05:06:31  As far as I know it isn't a bug, it is supposed to be like that.
05:06:57  kmc: According to http://www.apacheweek.com/features/http11 this is standard HTTP 0.9 behaviour.
05:07:58  hm it does seem nginx claims to support HTTP/0.9
05:08:02  i'm surprised
05:08:36 -!- Nisstyre has quit (Max SendQ exceeded).
05:08:41  When I $ nc localhost 80\nGET /\n, it gives me an nginx response page with no headers.
05:08:59  Maybe the headers are coming from a CGI-style executable or something along those lines?
05:09:35  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  I don't think Google runs nginx.
05:10:29  O, it is gws
05:10:30 -!- Nisstyre has joined.
05:10:44  Then they should fix gws
05:11:07  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  (I use Apache on my own computer, however.)
05:11:36  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  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  hi
06:35:03  hiiiii
06:36:48  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  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  move pawn to b1
06:38:52  notaprogram: Do you mean a black pawn?
06:39:05  ok you're human, no computer could play chess that badly
06:39:18  zzo38: no, I insist on moving first
06:39:55  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  oops, I meant b3
06:40:36  it's friday the 13, I mix up the digits
06:40:41 -!- Nisstyre has quit (Ping timeout: 240 seconds).
06:41:03  O, OK.
06:41:21  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  the universe is a functional programming language
06:48:33  ok
06:48:39  but it is so esoteric that only I know how to program it
06:48:43  ok
06:49:19  O KAY
06:49:38  (i think even elliott would consider that an appropriate case)
06:49:58  so... can I get added as an op here?
06:50:04  yes
06:50:11  Can you?
06:50:16  it's quite physically possible.
06:50:55  but is it probable?
06:51:05  not in the near future, no.
06:51:22  You need a heart of gold.
06:51:35  gold is expensive...
06:56:00  a heart of pyrite will do
06:56:12  Sgeo, to me the essential idea is that descriptions of IO are first-class values
06:56:47  kmc, right, and right outside the language, the description of main is executed?
06:56:55  i wouldn't say that's "outside the language"
06:57:04  the Haskell Report specifies the meaning of each IO action
06:57:13  Outside the miranda of the language
06:57:21  you have one semantics for function application and evaluation, and another semantics for execution of IO actions
06:57:24  they're both part of the language
06:57:40  in fact the rules for execution invoke the rules for evaluation
06:58:12  monqy: http://www.youtube.com/watch?v=Eh44QPT1mPE
06:58:15  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  not just at the "outer level" of main, but at each occurrence of (>>=)
06:59:17  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  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  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  Mathnerd314, cool
07:13:48  but unfortunately there's no Haskell implementation
07:17:14  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  Internet Quiz Engine:   gopher://zzo38computer.cjb.net:70/1quiz.menu*a
08:28:11  Chrome doesn't seem to support gopher
08:28:36  firefox removed support... but there's an extension
08:28:46  http://zzo38computer.cjb.net/prog/bashgopher/bashgopher
08:29:32  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  Such as, adding "-q -1" to nc if necessary, changing "clsb" to "clear", and changing CRLF to LF only.
08:32:47  Does this work for you?
08:38:13  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  fizzie: ping
09:21:47 -!- Phantom_Hoover has quit (Ping timeout: 244 seconds).
09:22:09 -!- Phantom_Hoover has joined.
09:29:17  me: pong
09:41:26 -!- primo_ has changed nick to primo.
09:44:26  `quote 74
09:44:36  74)  Invalid! Kill! Kill!  I get that feeling too.
09:44:53  `quote 69
09:44:57  69)  Warrigal: what do you mean by 21?
09:45:02  `quote 21
09:45:06  21) IN AN ALTERNATE UNIVERSE:  there is plenty of room to get head twice at once
09:46:27  `quote 314
09:46:31  314)  ais523: quick, say something funny   something funny hagrea:D   can'tä sopt laughitn
09:48:41  `quote 313
09:48:43  `quote 315
09:48:44  313)  it is from 2002 though, I was younger then
09:48:47  315)  elliott: hey, thinking's easier than using the Internet
09:49:14  hmm.
09:49:23 -!- Nisstyre has joined.
09:49:28  `quote 333
09:49:30  333)  haha, god made one helluva blunder there :DS   "WHOOPS HE AIN'T DEAD YET!"   "luckily no one will believe him because christians are such annoying retards"
09:49:51  `quote 249
09:49:54  249)  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  `quote 250
09:50:15  250)  mtve, now he's an expert idler.   mtve: kitty kitty kitty
09:52:11  `quote 252
09:52:14  252)  I need a new desktop background   j-invariant: Try http://codu.org/spinners.png (tiled)   uhrghoaudp
09:53:18  `quote 253
09:53:21  253) * quintopia sits on gregor
09:53:41 -!- Nisstyre has quit (Ping timeout: 240 seconds).
09:53:45  blargh, to sleep I go
09:54:49  `quote 254
09:54:52  254)  [...] reyouthismootherate [...]
10:02:48  `quote 302
10:02:51  302)  Phantom_Hoover: if the list is in random order, like poor ehird here
10:05:02  `quote 304
10:05:06  304) * Received a CTCP VERSION from nyuszika7h   * VERSION Microsoft IRC# 2011 64-bit (Windows 8 Beta, x64, 2GB RAM)    Gregor: Windows 8 Beta? o_O    A small benefit of my brief time as an intern at MS.
10:05:35  `quote 305
10:05:38  305)  addquoting yourself?  isn't that like commenting on your own facebook status?    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  `quote 311
10:11:43  311)  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  `quote 320
10:20:23  320)  BYE dbc WE'LL BE SURE TO ACCIDENTALLY MENTION YOUR NICK OFTEN
10:20:43  whoops... too far
10:20:53  FFS.
10:20:54  I'll try again tomorrow
10:20:57  `pastequotes
10:21:01  http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.1014
10:21:06  Here, enjoy.
10:21:54  see, they're all wrong
10:22:16  Oh, jesus.
10:22:25  I liked you more when you were just annoying, rather than insane.
10:22:58  yes, I know. but insanity appears to be the only way out...
10:23:22  fizzie: ping me when you're available
10:23:41  `quote 683
10:23:45  683)  COCKS [...]  truly cocks
10:24:34  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  `quote sleep
10:31:28  325)  i'm really sleep \ 544)  IM FIST IN HEAD AND DONT KNOW TO SLEEP?????? \ 559)  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.)   The "Why are you still asleep? I told the cat to wake you up." comment does come pretty close, though. \ 613)  in the past few minutes I tried remembering
10:31:44  `quote shachaf
10:31:48  617)  elliott: GHC bug? Come on, it's the parentheses.   The more parentheses you add, the closer it is to LISP, and therefore the more dynamically-typed. \ 663)  Real Tar is GNU tar.   You just ignore whichever features don't make you feel superior enough. \ 701)  VMS Mosaic?   I hope that's not Mosaic ported to VMS.   Hmm. It's Mosaic ported to VMS.
10:32:03  Those quotes are terrible.
10:32:30  I'll take solace in the fact that `quote isn't so much "best of" as "random of".
10:38:13    
10:38:17  err, oops
10:38:41  (why was there a single space in the input line?)
11:45:22  clearly a ploy by the romulans to disrupt our communications
11:46:33 -!- elliott has joined.
11:46:37  -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  WHO THE FUCK ARE YOU
11:52:55  "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  01:58:45: -!- roper has joined #esoteric.
11:54:35  01:59:57:  they say one got online every day to remedy affairs caused other hours from her nick
11:54:35  02:01:21:  roper: I do not understand without a context?
11:54:35  02:01:40:  account hijacking
11:54:35  02:02:13:  bot harassment
11:54:35  02:03:02:  they are quite talkative
11:54:37  02:03:43:  i think they use your history from other conversations
11:54:39  I...
11:54:48  romulans
11:54:57 -!- Ngevd has joined.
11:55:31  If there's ever an esoteric blend of Haskell, f should be equivalent to `(flip f)`
11:55:45  haha
11:55:52  what, haskell isn't esoteric enough for you?
11:55:53  Also, Hello
11:55:57  hi Ngevd
11:56:30  Nah, I can generally figure out what a Haskell program is for by looking at it for a while
11:57:06  Ngevd: i was thinking exactly that haskell is a right-to-left language
11:57:24  and indeed i define flip ($) in all my programs to be <>
11:57:29  it's very useful
11:58:24  I would have called it 
11:58:38  yes
11:59:43  £sd
12:04:42  00:24:32  dibblego: Why did you kick me?
12:04:42  00:25:04  Fifo: please do not spam the channel or its users in private
12:04:42  00:25:29  dibblego: Sorry!
12:04:42  00:25:49  dibblego: Please join ##iPhoneFifo!
12:05:43 -!- Nisstyre has joined.
12:05:45  What?
12:06:27  02:35:24:  roper: i have for a while now thought that you're probably trolling.
12:06:27  02:35:44:  not entirely
12:06:27  02:35:51:  he could just be really dumb.
12:06:27  02:35:53:  >_>
12:06:36  oerjan logreading: i'm definitely leaning on the side of just really dumb
12:08:22  this is such a weird channel
12:08:37  It's possitively esoteric
12:08:46  womp womp
12:08:56  03:23:20:  zzo38, you're aware that Google does not actually control the HTTP protocol, yes?
12:08:57  kmc: YET.
12:09:01  yeah
12:09:11   Internet Quiz Engine:   gopher://zzo38computer.cjb.net:70/1quiz.menu*a
12:09:13  SOUNDS LEGIT
12:09:17  it is
12:10:11  gopher://zzo38computer.foeug3g47fgeg34.ch3p-h4rbl-vjaagra.co.ng:22/../../warez2.php
12:10:50  Gopher is a pun!
12:10:54  Heheheh
12:11:44 -!- kmc has left ("Leaving").
12:11:46 -!- kmc has joined.
12:12:02  04:34:30:  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  04:35:12:  oh and you'll need that anyhow if you have arbitrary order of declarations like in haskell.
12:12:02  04:35:22:  (that = post-parsing)
12:12:12  hmm, what you need is a bitemporal state monad
12:12:18  so that state flows both forwards and backwards
12:12:33  "bitemporal"!? That two-timing...!
12:12:33  i guess you need the state to be a Monoid to combine them
12:12:37  one point twenty one jiggawatts
12:14:17  06:31:50:  http://stackoverflow.com/questions/4382223/pure-functional-language-haskell oh man, Haskell question answered by Joel Spolsky
12:14:17  surprisingly it's even basically correct
12:15:08  despite all the people going "getChar is, like, referentially transparent so you're wrong" :|
12:16:59  06:48:16:  the universe is a functional programming language
12:16:59  06:48:33:  ok
12:16:59  06:48:39:  but it is so esoteric that only I know how to program it
12:17:03  oh, good, he's still crazy!
12:24:53  it's kind of correct
12:25:13  i mean it's just arguing about what words mean
12:25:29  but if you accept joel's definition than Haskell isn't a pure functional language
12:26:33  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  i have one
12:26:45  extensional equivalence
12:26:57  there's no experiment by which you can distinguish "one getChar from another"
12:27:14  anyway i don't want to argue about what "pure" means
12:27:21  but evaluating getChar (like with seq) doesn't perform any IO
12:27:24  that's just a fact
12:27:26  that's a little lax for my tastes :P and yeah, I'm not saying it does
12:27:39  elliott, it's the same standard by which you decide whether two functions are "the same"
12:27:40  well whatever
12:27:49  and if we can't do that, we can't even say that "map" is referentially transparent
12:27:50  kmc: sure, but there /are/ experiments you can perform on functions
12:27:59  there are experiments you can perform on IO actions too
12:28:05  you do one every time you run a haskell program
12:28:19  i see you're arguing about what "pure" means :P
12:28:22  nope
12:28:45 -!- MDude has joined.
12:30:07  Haskell has evaluation semantics and execution semantics
12:30:37  the former is a calculus of referentially-transparent functions without side effects
12:30:52  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  whether the combination of these forms a "pure functional programming language" is a stupid argument
12:31:27  i know you know how it works
12:31:29  and I agree that treating (IO a) as a model of an imperative program with result type a is just fine
12:31:46  I just think that it lets you consider far too many things that are completely impure in practice as pure
12:31:49  because you can model them that way
12:33:07  i don't understand
12:33:31  but that's ok
12:33:39  :)
12:33:40  Are there any pure imperative languages?
12:33:47  Would such thing have any point at all?
12:34:11  it sounds like a great excuse to argue about what "pure" and "imperative" mean
12:34:36  if you pressed me for a yes/no answer on "pure" and "imperative" I would say that Haskell is both
12:34:43  this may be an unpopular viewpoint
12:35:54  i think it's the wrong focus if you want to understand haskell or why it's good
12:36:11  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  "too imperative" by what standard
12:36:34  bring your own standards
12:36:40  compared to "the ideal"
12:36:54  A little impurity is good for a language
12:36:56  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  How would that work?
12:37:19  i would say "declarative" rather than "functional"
12:37:32  kmc: yes. others would say "denotational" :P
12:37:46  Ngevd, well, a very simple example is interact :: (String -> String) -> IO ()
12:37:48  but the basic sentiment is the same
12:37:59  yeah
12:38:12  i like declarative programming and it would be cool to use it in more areas
12:38:31  at the same time, i find imperative programming in Haskell to be pleasant enough
12:38:56  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  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  (ok, not in those words :P)
12:39:59  Purest language ever... surely that would be a tie between a few esolangs?
12:40:11  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  whether this makes Haskell overall "impure" is a meaningless argument about definitions
12:40:30  Also, how can we say that language a is more or less pure than language b?
12:40:46  Which is more pure? Java or C++?
12:40:49  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  shrug
12:41:18  to me Haskell is a pragmatic multiparadigm language with a good set of design tradeoffs
12:41:31  so i don't focus on ideological purity
12:41:43  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  admittedly at least one of those people was dumb.
12:42:04  that's stupid
12:42:12  Nomads aren't pure.
12:42:14  i wouldn't call (Maybe a) a list either, but [a] is
12:42:31  kmc: well it was in reaction to saying "monadic actions" more generally
12:42:36  and I think it's perfectly reasonable to call (Maybe a) an action
12:42:39  shrug
12:42:43  i don't think it matters
12:42:53  i think #haskell should agree on common terminology and push it
12:42:58  instead we just bicker about words
12:43:12  haha, getting a few hundred people to agree on IRC
12:43:15  ur funy
12:43:27  anyway the *reason* i don't worry about whether Haskell is philosophically pure
12:43:29  I avoid #haskell, mainly because I'm scared of big groups
12:43:34  is that i wish *other people* would see it as a pragmatic multiparadigm language with a good set of design tradeoffs
12:44:06  rather than a language for extremists who argue all day about philosophical purity
12:44:09  I would say it is at least primarily functional, although has features from other paradigms
12:44:47  kmc: as an extremist i'm offended
12:44:51  haha
12:44:54  very well sir
12:46:51 -!- Ngevd has quit (Read error: Connection reset by peer).
12:50:56  in particular many of Haskell's strengths have nothing to do with "purity"
12:54:54  in my "why learn Haskell" slides i talk only a little bit about "purity" and types
12:56:26  i spend more time on stuff like EDSLs, lightweight concurrency, STM, semi-implicit parallelism, GHC 
12:56:43  Maybe purity is overrated but I don't think types are.
12:56:48  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  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  (which of course, common implementations don't)
12:58:58  elliott, yeah, types are pretty important
12:59:05  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  well ok
12:59:33  But yeah, fair point.
12:59:38  i do, and I was talking about one effort to do so
13:00:02  I agree that things like you listed are better sells under such constraints.
13:00:02  in the best case, you convince them that it's a useful feature for preventing mistakes
13:00:05  which is... still not that sexy
13:00:21  i mean, subconsciously I know that *I* don't make any mistakes
13:00:47  Yeah, but think about all the other terrible programmers you have to deal with!
13:00:54  See, we can sell Haskell on antagonism and ego.
13:00:54  they probably aren't using haskell
13:00:58  Like Ruby!
13:01:00  haha
13:01:03  touché
13:01:53  anyway there was enough to fill an hour with "here's this amazing thing Haskell lets you do"
13:02:17  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  i agree it's not a great EDSL host
13:02:42  i think it's a pretty good EDSL host, and that this plays nicely with the other strengths of the language
13:02:54  "The question is a simple one. Must all operations on a TVar happen 
13:02:54  within *the same* atomically block, or am I am I guaranteed thread 
13:02:54  safety if, say, I have a number of atomically blocks in an IO 
13:02:54  function."
13:03:01  i wish Template Haskell weren't so fucking cumbersome; then we could have some better concrete syntax for EDSLs
13:03:18  O_O
13:03:32  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  kmc: I'd have to subscribe to haskell-cafe.
13:03:55  instead you just lurk and snark
13:03:58  Yes.
13:04:06  that's cool
13:04:27  kmc: I think the kind of EDSLs Haskell is good at are the ones that are richer than Haskell.
13:04:35  Which is to say "first-class" EDSLs.
13:04:42  e.g. Parsec and so on.
13:04:50  The problems come when you can't embed Haskell in them, e.g. anything you're trying to compile
13:05:06  right
13:05:32  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  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  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  yes
13:07:10  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  that is, you can construct a Haskell AST, then compile it and use it as a function
13:07:52  metaprogramming in haskell sucks right now
13:08:14  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  kmc: Have you seen the http://www.cs.berkeley.edu/~megacz/garrows/ stuff?
13:08:40  uh, started reading it a while ago
13:08:43  didn't get very far
13:08:45  heh
13:08:49  I don't like arrows, but it's very interesting.
13:09:08  And seems to be able to do an awful lot of DSL-y stuff that isn't really possible now.
13:09:17  The syntax is ugly though.
13:09:58  they get bonus style points for implementing part of GHC in Coq
13:10:27  I'm always surprised that Coq extraction actually works in practice.
13:11:14  elliott, so how would you solve the problem
13:11:27  other than better macros and staged compilation
13:14:34  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  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  r each additional language feature, and the code you write is just unrolled into a bunch of those.
13:14:58  i see
13:15:06  i should learn more about garrows then
13:15:17  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  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  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  Except more aggressive, since you have full access to the *entire* structure of the EDSL program.
13:18:53  (Nothing hiding behind an "arr", etc.)
13:20:34  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  efine new syntax for those capabilities and it becomes as good as a native language feature.
13:20:40  That might be going further down the Lisp path than most people would like, though.
13:21:09  yeah
13:21:20  there's already controversy over "how typed" template haskell should be
13:21:53  yeah
13:22:18  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  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  yeah
13:34:24  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  Need help indexing XML files into Solr using DataImportHandler
13:53:44  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  [...] 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  RIP Phantom_Hoover
15:02:48 -!- Phantom_Hoover has joined.
15:03:58  eek a zombie
15:05:36  RIP us all
15:05:56  %rip
15:06:24  mv %rip, usall
15:06:27 -!- primo has quit (Read error: Connection reset by peer).
15:06:38 -!- Ngevd has joined.
15:07:39  Hello!
15:07:50  hi
15:08:09  hi Ngevd
15:08:53  How did your Haskell thing-that's-a-bit-like-an-argument-but-you-both-agree go?
15:09:18  i think that's called a "discussion"
15:09:39  anyway the logs are public
15:09:48  I know, I've read them.
15:09:56  I just want to make conversation
15:10:14  not allowed
15:10:17  only arguments
15:12:47  > ap (.) (join (.) (ap (.) (join (.)))) (*2) 1
15:12:48    1024
15:13:01  lols
15:13:23  > ap (.) (join (.) (ap (.) (join (.)))) (join (+)) 1
15:13:24    1024
15:14:06  this is probably what Ngevd's new haskell program actually looks like
15:14:28  Nah, I'm just playing with MIBBLLII
15:14:55  Lambdabot can be used as a non-compliant interpreter for a similar language to MIBBLLII
15:18:00  :t ap id id
15:18:01      Occurs check: cannot construct the infinite type: a = a -> b
15:18:01      Probable cause: `id' is applied to too few arguments
15:18:01      In the second argument of `ap', namely `id'
15:18:04  cool
15:18:11  an esolang that looks like brainfuck but isn't
15:18:27  compared to the usual esolangs that don't look like brainfuck but are
15:18:47  The functions ap, join, const, id, flip, and (.) match up 1 to 1 with MIBBLLII combinators
15:19:07  As long as you work in the ... (->) r monad ???
15:19:07  kmc: Or the ones that look like, and are brainfuck.
15:19:36  Or something?
15:19:47  As long as you have Control.Monad and Control.Monad.Instances
15:19:51  http://esolangs.org/wiki/Zoo_Tycoon_2_Cheats_Money
15:20:13  Have spambots been attacking spam articles?
15:20:56  i would totally use a language named Zoo Tycoon 2 Cheats Money
15:21:41  Shall we create a language by that name?
15:22:22  yes
15:22:31  Zoo == objects, tycoon == control structures, 2 == ...arithmetic?, cheats == functions./subroutines
15:22:40  money == finance library?
15:23:09  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  No.
15:26:03  yes
15:26:55  actually you should invent a language such that we can execute these spam pages
15:27:17  has there been any work towards designing programming languages specifically for stoned people
15:27:28  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  asldkfjaksdlfldskjakdlfldskjaksldfldksjaksdlf
16:03:05  hi
16:11:04  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  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  more accurately, thats what it means to me
17:27:57 -!- Phantom_Vax has joined.
17:28:15  Hello everybody.
17:29:01  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  Yes.
17:36:07  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  ah.
17:37:20  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  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  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  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  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  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  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  you've said
18:32:59  Is there a way to abuse a monad of some sort to get nice syntax without -XArrows?
18:34:05  There's a "bind-like operator"
18:34:07 * Sgeo blinsk
18:34:11  blinsk
18:34:14  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  I could have sworn I saw something though
18:36:43  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  Difference of what?
18:38:58  functors and endofunctors
18:39:23  endofunctor is a functor from a category to itself.
18:39:25  Endofunctor is a functor from a category to itself. The Functor class in Haskell make endofunctor from (->) category to itself
18:39:55  functors are comparable to morphisms over categories.
18:40:08  Functions /are/ morphisms, you dolt.
18:40:08 -!- toruk-mack has joined.
18:40:17  (in fact I believe many of them are morphisms in the category of small categories.)
18:40:39  (but not all?? not sure)
18:41:18  Is Internet Quiz Engine good to you?
18:41:26  Yes it is legitimate.
18:41:28  it is not relevant to me.
18:43:11  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  `welcome toruk-mack
18:45:12  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  @tell kmc Explain yourself!!!1
18:45:36  Consider it noted.
18:45:37  toruk-mack: Are you good at esolang?????
18:46:07  TG: (omg still lolig @ that word boner i made ooomg) 
18:46:25  Sorry, wrong channel
18:46:30 -!- toruk-mack has left ("Leaving").
18:47:54  :(
18:48:14  `@ past-toruk-mack ? esoteric
18:48:18  past-toruk-mack: This channel is about programming -- for the other kind of esoterica, try #esoteric on irc.dal.net.
18:54:25  They're still online
18:54:36 * Sgeo messages
18:55:03  Yes I checked that too
18:55:11  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  Sgeo: It work if it was what they were looking for, which is possible, however
18:59:41  Is DALnet down?
19:00:36  Did you try connecting or ping or whatever?
19:01:05  Yes it seem down to me.
19:01:09  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  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  in English you can refer to at least 4 things unambiguously via pronouns.
19:08:12  I suppose as a compromise would be to invent more than one gender-neutral pronoun
19:08:15  for different kinds of.. things.
19:08:31  kallisti: That only works if the things you're referring to are of different genders.
19:08:46  elliott: ...yes, that's what I mean.
19:08:56  Well, so it's not much of an advantage.
19:09:01  Anyway, people don't seem to have any problem in languages which use "it" for everything.
19:09:11  the difference between it and he or she or they is pretty useful.
19:09:18  Making pronouns gender-neutral only to immediately re-segregate them by some other means is ridiculous.
19:09:30  kallisti: No?
19:09:39  kallisti: I mean, I really doubt you ever talk about that many things at once without using names.
19:09:44  sure.
19:09:45  Because that would be impossible to follow.
19:10:23  it happens frequently enough
19:10:39  and anyway there's no reason not to "resegregate" the pronouns by grammatical or conceptual distinctions
19:10:44  that have nothing to do with people.
19:11:05  well
19:11:10  it could involve people
19:11:29  for example you could have a pronoun for humans, and a pronoun for everything else
19:11:32  or
19:11:35 * elliott doesn't think it happens frequently enough.
19:11:36  a pronoun for livings things, and a pronoun for inanimate things.
19:11:42  You mean they vs. it?
19:11:47  "he knew that it was a bad idea"
19:11:49  but what if you want to refer generally to both humans and nonhumans
19:11:54  Anyway, there's real data on this, i.e. every language without such a distinction, so unless you're a linguist...
19:12:03  "she took it from me"  (thieving bitch)
19:12:13  :)
19:12:16  There can be one for living, one for inanimate, but then, is there going to be one for ideas?
19:12:30  elliott: note that I am not in any way saying that these languages are somehow crippled in their expressiveness
19:12:36  just that having multiple kinds of pronouns is a convenience.
19:12:52  but also an inconvenience
19:13:10  zzo38: yes that would be good. :)
19:13:19  shrugs violently
19:13:27 * kallisti sighs EXPLOSIVELY
19:13:45  i sure do love wild conjecture
19:13:53  elliott: do tell. what is my conjecture.
19:14:09  no
19:14:20 -!- Frooxius has joined.
19:15:41  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  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  well, no.
19:19:10  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  but if that's common then... that works too.
19:22:28  the person/non-person distinction isn't unheard of in other languages. For example Finnish.
19:22:37 -!- zzo38 has left.
19:24:21  kallisti: It doesn't appear in colloquial Finnish, from what I've heard in here.
19:24:29  "it" is used for everything.
19:25:35  ah I see
19:29:01  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  well, zzo38 and I are going to go invent a language with at least 20 pronouns
19:33:47  and maybe some distinctions between pro-adjectives and pro-verbs and pro-adverbs
19:33:50  also pro-sentences.
19:34:01  it's a language for pros.
19:36:05  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  er
19:36:15  different name rather
19:36:49  the end result will be that there's probably like 50 ways to say "dog"
19:37:13  (assuming 50 languages were uses, and none of those languages have more than one way to say dog)
19:46:35  !perl $x = qr[(a)]g; print "a a a a" =~ $x; 
19:46:39  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  !perl $x = qr/(a)/g; print "a a a a" =~ $x; 
19:47:02  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  erm
19:47:12  !perl $x = qr/(a)/; print "a a a a" =~ $x; 
19:47:13  a
19:47:18  !perl $x = qr/(a)/; print "a a a a" =~ /$x/g; 
19:47:19  aaaa
19:47:48  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  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  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  what's wrong with this picture.
20:08:19  "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  ...answer?
20:08:37  kallisti: web audio players
20:08:47  monqy: regardless of that.
20:09:49  `quote fought for
20:09:53  459)  elliott: You have become the very thing you fought for!
20:10:22  elliott: what is meaning of that massage.
20:12:01  no
20:13:35  IE doesn't support