00:02:28 Not really. 00:02:34 :'( 00:05:28 elliott_, benchmark it? 00:05:34 (okay that is a LOT of work I know) 00:06:09 elliott_, anyway I'm pretty sure hypervisor is more expensive than syscall. Or at least as expensive. 00:06:28 anything else would greatly surprise me 00:10:56 :( 00:22:50 -!- kmc has joined. 00:32:36 -!- kmc has quit (Quit: Leaving). 00:49:25 hmm 01:00:49 -!- elliott has joined. 01:00:49 -!- elliott_ has quit (Read error: Connection reset by peer). 01:07:56 -!- SimonRC has quit (Ping timeout: 260 seconds). 01:09:27 -!- SimonRC has joined. 01:27:42 "The operating system was "inspired by the literary heritage of Dante Alighieri (particularly the Divine Comedy)"? What kind of sense does that make? I challenge anybody to tell me what it was about Dante's philosophy, politics, writing style or anything else that inspired this operating system." 01:38:24 hi. 01:42:33 -!- Vorpal has quit (Ping timeout: 248 seconds). 01:49:23 x86 rings are not unlike the circles of hell 01:59:45 -!- kmc has joined. 02:04:18 elliott: hlep 02:04:28 Jafet: :D 02:04:31 quintopia: one cannot be hlepped 02:04:38 sad day 02:06:44 quintopia: but go on 02:07:49 sam is crouched behind a desk with two guns pointed at him. he has a tiny revolver with four bullets. he has two guns pointed at him. his girlfriend is tied up with an enemy pointing another gun at her head. save him without a deus ex machina. she can die. 02:08:05 but she can't die by brains blowing cuz she has to say stuff before she dies 02:09:44 Uhhh 02:09:52 Can we see sam's character sheet first? 02:10:32 quintopia: shoot the girlfriend, use element of surprise to escape 02:10:57 not brains blowing, shoot the heart instead or w/e 02:11:01 he wouldn't shoot his girlfriend... 02:11:05 or would he... 02:11:07 hmmm 02:11:07 -!- kmc has quit (Remote host closed the connection). 02:11:19 quintopia: that wasn't one of the requirements 02:11:27 it's his girlfriend!!!!! 02:11:30 She asks him to shoot her, he shoots her, and escapes 02:11:36 There, all criteria met 02:11:45 quintopia: won't be his girlfriend if he dies, will she? 02:11:45 -!- kmc has joined. 02:11:46 she's pregnant. why would she ask him to shoot her? 02:11:50 so he's basically fucked on the girlfriend front, either way 02:12:08 yes, but he i don't want him to do anything out of character 02:12:25 quintopia: shoot a precisely-aimed bullet at the girlfriend so that her womb bursts open; grab baby and escape 02:12:26 Sam hypnotizes the enemies 02:12:27 100% realistic 02:12:35 happens all the time 02:12:53 If you're Tarantino, shoot her in the side of the head. 02:12:53 happened to me the other week, someone shot me and my baby escaped 02:12:54 she's only like 2 mos preggo 02:12:58 no baby yet just fetus 02:13:08 quintopia: sam believes that life begins at conception. 02:13:10 walking fetus! 02:13:48 quintopia: so what is the uh 02:13:49 context here 02:13:59 a novel i'm writing? 02:14:22 It starts in media res 02:14:50 quintopia: i suggest not getting sam in that situation 02:15:03 Novels with guns are shitty anyways 02:15:28 quintopia: yeah they should be using uh 02:15:31 bows 'n arrows instead 02:15:36 lol 02:15:42 archery II: this time it's personal 02:15:46 but it's more exciting to have him in that situation 02:15:55 but i have an idea 02:16:02 * quintopia thinks text adventure 02:16:04 >look 02:16:09 Cloaks 'n daggers 02:16:12 quintopia: have him start just like 02:16:13 dancing 02:16:21 he just starts dancing 02:16:23 with the people with guns 02:16:31 and he does a jig over to his girlfriend 02:16:33 and kicks her out the window 02:16:35 and then jumps after her 02:16:38 but there's a trampoline underneath 02:16:38 YES 02:16:39 so he bounces back up 02:16:41 and shoots the bad guys 02:16:43 lul 02:16:45 best 02:17:07 i forgot about that patio outside! 02:17:38 he pulls the deskk drawer out 02:17:51 throws its contents at the guy with the girlfriend 02:18:15 but the other dudes will just shoot him... 02:18:37 Desks are bulletproof, man. 02:18:55 ah 02:19:33 this is a *big* desk 02:20:13 -!- pikhq has joined. 02:20:23 -!- pikhq_ has quit (Ping timeout: 252 seconds). 02:20:39 so then he jumps over the desk and runs at him with the other dudes shooting at him. but he shields himself with the desk drawer. 02:20:46 yep. it could happen. 02:21:09 Hollywood in writing 02:21:44 i know...its all so cliche :P 02:22:00 Actually that sounds more like a John Woo thing 02:22:19 so then he gets shot some when they figure out to shoot low... 02:22:46 and then... 02:22:50 rocks fall, everyone dies 02:22:57 Sam looks behind him and sees a fire extinguisher. He grabs it and uses it to lay down a smoke screen 02:23:05 oh shit good idea 02:24:12 Not knowing where he is, they start shooting at random and hit each other 02:24:15 The end 02:25:13 So, you have two days to finish the novel? 02:28:17 this novel is terrible 02:31:45 it doesn't matter if it is terrible 02:31:47 it is fun 03:11:14 hmm 03:11:39 they really need to do an fps crossed with secondlife 03:12:03 not specifically secondlife but something like that 03:26:36 -!- elliott has quit (Quit: Leaving). 03:27:05 -!- elliott has joined. 03:27:11 Gregor: Have you used Emscripten? 03:38:46 -!- kmc has quit (Quit: Leaving). 03:40:00 -!- zzo38 has joined. 03:46:17 -!- Nisstyre has quit (Ping timeout: 248 seconds). 03:56:00 -!- kmc has joined. 04:01:34 hey 04:04:13 hi 04:05:53 11 PM is an interesting time to wake up. 04:06:40 yes 04:13:04 @tell Vorpal so in one of the earlier missions of Magicka there's this dude that freaks out about goblins and says a bunch of hilarious gibberish; is any of that Swedish? 04:13:05 Consider it noted. 04:21:24 Goblins? 04:21:47 I don't seem to recall any goblins 04:22:23 .. 04:22:28 you lie. 04:23:04 ..? 04:23:22 I didn't say no goblins were ever mentioned, just that I don't remember goblins being mentioned 04:23:35 We are talking about Puella Magi Madoka Magica, right? 04:23:37 What does it mean "Note: this does not yield a monad unless the argument monad is commutative. " 04:24:40 zzo38: in the context of what? 04:24:51 Sgeo: yes of course. 04:24:52 that thing 04:24:54 that I don't know of. 04:25:24 kallisti: ListT 04:25:55 hi #esoteric 04:26:05 good job sgeo 04:26:08 zzo38, that's just the standard implementation that has that issue, I think? 04:26:16 Although I don't understand it either. 04:26:20 monqy, hm? 04:26:39 pretty sure magicka is a game kallisti plays 04:26:43 Oh 04:27:00 monqy smart 04:29:01 Sgeo: does ListT mean anything other than the "standard implementation"? 04:29:19 monqy, "ListT done right"? 04:32:04 how should I know 04:33:28 -!- Sgeo has left ("Leaving"). 04:33:31 -!- Sgeo has joined. 04:33:40 There is no need to keep referencing/commenting on the past to validate the present and future as a sort of musical emollient for the masses. All artists plunder from everywhere, so did Simon and Garfunkel but to put Fleetfoxes into a neat box of "our generations Simon and Garfunkel" is really missing the point in a major way and quite insulting to FFs. I'm listening carefully to music 30 years, and I've never heard anyt 04:33:47 youtube comments are great. 04:34:11 yes 04:40:18 -!- augur has quit (Remote host closed the connection). 04:40:37 coppro: Ping 04:41:49 Is there another kind of ListT? 04:42:36 http://www.haskell.org/haskellwiki/Amb :-) 04:43:14 elliott: pong 04:43:31 help I'm too dead to read this code. 04:43:34 coppro: I thought I had a question, but then I realised that clang almost certainly does -m32, so I lost my question 04:44:12 well, I can read cut 04:44:18 it clears the state list. 04:44:18 oh 04:44:21 * kallisti smart. 04:48:32 -!- pumpkin has changed nick to copumpkin. 04:52:04 Fleet Foxes are so authentic, they use reverb effect on every track 04:52:45 Jafet: true authenticity comes from having reverb right in your SOUL 04:54:10 copumpkin, are you a dual? 04:58:20 Jafet: elliott: lolwhat 05:07:49 elliott, kallisti: UPDATE 05:08:25 cool 05:12:47 -!- MDude has changed nick to MSleep. 05:20:33 -!- augur has joined. 05:34:32 -!- TheJimmyJames1 has joined. 05:47:14 -!- kmc has quit (Quit: Leaving). 05:52:50 What should a function be called: BarrierT f b m t -> BarrierT (f, b -> BarrierT f b m t) (BarrierT f b m t) m t and Barrier f b t -> Barrier (f, b -> Barrier f b t) (Barrier f b t) t 05:55:30 -!- kmc has joined. 06:02:26 -!- copumpkin has quit (Quit: Computer has gone to sleep.). 06:05:59 -!- Jafet has quit (Quit: Leaving.). 06:09:33 @tell Gregor pachelbel 06:09:33 Consider it noted. 06:11:59 -!- Vorpal has joined. 06:14:37 Do you know what such functions and there inverse would be called? I don't know. 06:15:44 -!- TheJimmyJames1 has quit (Quit: Leaving.). 06:23:00 wtf my dns is broken 06:23:01 Vorpal: You have 1 new message. '/msg lambdabot @messages' to read it. 06:23:50 The DNS breaks sometimes in my computer, and then later it is fixed. 06:24:17 kallisti: I don't remember which part you refer to. But in general the voiced over dialogue is mostly made up language with some English and Swedish words thrown in. 06:24:30 brb going to restart my bouncer 06:24:38 it's dns is broken for most other networks 06:24:41 (wtf...) 06:24:46 -!- Vorpal has quit (Quit: ZNC - http://znc.sourceforge.net). 06:25:24 -!- Vorpal has joined. 06:25:57 actually it is routing to half the internet that is broken 06:27:10 wtf ping works but connecting does not? 06:27:16 and nor does traceroute 06:27:46 -!- Vorpal has quit (Client Quit). 06:28:22 -!- Vorpal has joined. 06:28:55 actually not that either. Everything works fine from my laptop... 06:29:15 I don't know?????? 06:30:03 -!- kmc has quit (Quit: Leaving). 06:31:06 Do you have any suggestions of the names of the functions I have described? 06:35:03 -!- kmc has joined. 06:35:42 -!- Vorpal has quit (Quit: ZNC - http://znc.sourceforge.net). 06:36:17 -!- Vorpal has joined. 06:38:16 -!- TheJimmyJames has joined. 06:44:44 -!- oerjan has joined. 06:46:38 hi oerjan 06:47:50 -!- TheJimmyJames has quit (Read error: Operation timed out). 06:49:27 -!- TheJimmyJames has joined. 06:49:33 dammit why must the godel's letter comment feed be limited to 10 comments 06:49:59 goedel's letter. not goedel's last letter. not goedel's first letter 06:49:59 just 06:50:01 goedel's letter 06:50:14 *+lost 06:50:38 every time the two MrX and Pelotom trolls and counter-trolls post i lose messages and end up hunting around recent posts 06:57:03 -!- augur_ has joined. 06:57:54 -!- augur has quit (Ping timeout: 255 seconds). 06:58:18 -!- TheJimmyJames has quit (Read error: Connection reset by peer). 06:58:21 -!- elliott has quit (Ping timeout: 255 seconds). 06:59:06 Someone tried to answer my questions but seems as they did not understand this question. Did you even understand that? 07:03:00 Do any NSF music files use the track numbers to specify different variations (such as repeat vs non-repeat, equal temperament vs just intonation, etc) instead of another song? 07:05:58 -!- Jafet has joined. 07:06:02 -!- Jafet has quit (Changing host). 07:06:02 -!- Jafet has joined. 07:12:59 * oerjan braces for embarrasment by commenting on the issue on the blog again. 07:13:41 (as in "why don't you just do this" embarassment) 07:18:27 *+s 07:22:14 -!- kmc has quit (Quit: Leaving). 07:29:07 -!- zzo38 has quit (Remote host closed the connection). 07:35:50 hmmm 07:35:53 I need a new username for things. 07:36:05 bad_apple 07:36:15 oerjan: one must never be afraid of embarassment 07:36:22 O KAY 07:36:27 WE ARE ALL FOOLS 07:36:34 it is foolish to pretend you are not. 07:36:35 one should also learn to fly by flapping one's arms. 07:36:46 well, no... 07:37:08 kallisti: why not? it's approximately as easy. 07:37:21 http://www.youtube.com/watch?v=_F9RJSPnf8A 07:37:23 because this is better. 07:41:45 -!- Vorpal has quit (Quit: ZNC - http://znc.sourceforge.net). 07:41:50 That's not flying, that's falling with style. 07:42:21 -!- Vorpal has joined. 07:42:23 -!- Vorpal has quit (Remote host closed the connection). 07:43:26 oerjan: I want to do this, but I know I'd just crash into some rocks 07:44:30 . The United States Parachute Association (USPA) requires in the Skydivers Information Manual that any jumper flying a wingsuit for the first time have a minimum of 200 freefall skydives, made within the past 18 months, and receive one-on-one instruction from an experienced wing suit jumper, or 500 jumps experience to go without an instructor.[16] Requirements in other nations are similar. Wingsuit manufacturers offer train 07:45:57 -!- Vorpal has joined. 07:46:01 -!- Vorpal has quit (Changing host). 07:46:01 -!- Vorpal has joined. 07:46:43 [ 0.585378] pci_root PNP0A08:00: address space collision: host bridge window [mem 0x000c8000-0x000dffff] conflicts with Video ROM [mem 0x000c0000-0x000cffff] 07:46:44 gnh 07:52:04 oerjan: I want to jump off a skyscraper in one of those wingsuits 07:52:16 and then follow.... a carefully planned route so I doubt crash into anything. 07:52:57 i'd be worried about turbulence. 07:53:18 well, if there were any chance of getting beyond my immense fear of heights, that is. 07:53:36 oerjan: I'd be worried about a stray gust of wind. 07:53:41 presumably they only fly when there's no wind? 07:54:13 i thought that was more or less the same thing. 07:54:33 turbulence is a more abrupt change 07:54:35 in most contexts 07:54:43 These techniques include the orientation relative to the aircraft and the airflow while exiting, and the way in which the flier will spread his legs and arms at the proper time so as not to hit the aircraft or become unstable in the relative wind. 07:54:51 ah yeah, they could just decrease surface area if they need to 07:55:48 http://www.pbfcomics.com/28/ 07:57:34 With body shape manipulation and by choosing the design characteristics of the wingsuit, a flier can alter both his forward speed and fall rate. The pilot manipulates these flight characteristics by changing the shape of his torso, arching or bending at the shoulders, hips, and knees, and by changing the angle of attack in which the wingsuit flies in the relative wind, and by the amount of tension applied to the fabric wing 07:57:40 I wonder how they like 07:57:43 make themselves rotate. 07:58:36 While still very experimental, powered wingsuits, often using small jet engines strapped to the feet[13] or a wingpack set-up, allow for even greater horizontal travel and even ascent. 07:58:40 wtf 07:58:40 -!- Vorpal has quit (Quit: ZNC - http://znc.sourceforge.net). 07:59:20 The proper term is "holy wtf batman". 07:59:26 -!- Vorpal has joined. 08:02:12 -!- nooga has joined. 08:05:29 to the batwingsuit 08:07:52 http://www.youtube.com/watch?v=h4arnATc04U 08:07:54 this is so good 08:09:32 kallisti: I bet being in the jet is more comfortable :P 08:10:11 also those jets are flying rather slowly (for jets that is) 08:10:33 well, yeah... 08:12:42 still his power to weight ratio is going to be pretty high because... well it's just a carbon-fiber wingspan and a person. 08:13:03 he just lacks much fuel I'd imagine. 08:14:11 kallisti: and the human body can only take so much... 08:14:46 wrt air speed and so on 08:20:23 * kallisti watches a man fly over the English Channel in a JETPACK 08:21:16 personally it is not how I would chose to commute 08:22:13 that's because you're boring. 08:25:28 kallisti: got a link to the video though? 08:26:14 brb 08:26:41 it's not as interesting as the grand canyon vid 08:27:42 http://www.youtube.com/watch?v=WgdIE2t8QkM 08:30:22 he does some neat stunts in that one. 08:38:44 kallisti: obviously you don't do stunts when commuting :P 08:40:52 * kallisti zzzzzzs 08:41:15 kallisti: creeper with dyslexia? 08:41:27 wat? 08:41:31 kallisti: that sound 08:41:45 wat? 08:41:57 it's like a thing 08:41:59 that indicates sleeping 08:42:01 kallisti: you never played minecraft? 08:42:13 .. 08:42:18 ugh 08:42:19 no 08:42:21 kallisti: oh 08:42:21 I have better things to do 08:42:23 ... 08:42:26 come on it is fun 08:42:37 I disagree. 08:42:43 kallisti: have you tried it? 08:42:51 and I don't mean the free classic version 08:42:51 I've seen people play it. 08:42:57 I actually have a pretty good imagination 08:42:58 so like 08:43:01 I can imagine playing it 08:43:03 without even having to 08:43:05 it's the neatest thing. 08:43:10 kallisti: well at least it isn't like starcraft. I watched people play that. Seems utterly boring. 08:43:19 ...that is where you are wrong. 08:43:29 starcraft is like real-time chess on crack. 08:43:38 kallisti: which is utterly boring 08:44:20 kallisti: I tried many RTS, but so far I only found one fun to play: darwinia. 08:44:41 http://www.youtube.com/watch?v=tbwG63KVQz4 08:44:44 this game is good. 08:45:01 kallisti: is there any jargon in it? 08:45:12 maybe. 08:45:19 but Husky is pretty good at explaining what is happening 08:45:20 if you like 08:45:24 know starcraft basics 08:45:34 not really 08:45:47 he says "macro" 08:45:51 which isn't really very jargony 08:45:59 kallisti: meaning like autohotkey? 08:46:02 no. 08:46:04 macromanagement 08:46:07 I see 08:46:13 it refers to how you produce and spend money. 08:46:14 your economy. 08:46:16 unit production 08:46:17 etc 08:46:35 kallisti: he has an annoying voice IMO 08:46:47 when you expand to new bases, when you research new tech, and what units you produce... are basically the three important points of macro. 08:46:51 anyway I need to leave for university soon, won't be able to watch the whole thing now 08:46:53 Vorpal: you get used to it :P 08:47:22 there's also "micro" which is micromanagement... which is movement of individual units / multitasking 08:47:43 I know about micromanagement. I played dwarf fortress. Which is not exactly RTS. Still fun though. 08:47:48 kallisti: ever played dwarf fortress? 08:47:55 yep 08:47:57 it's fun. 08:47:59 yeah 08:48:05 Vorpal: micro has a more specific meaning than it's usual meaning. 08:48:06 in sc2 08:48:09 I see 08:49:34 kallisti: anyway, I prefer sandbox games. Like minecraft and dwarf fortress. 08:49:37 or RPGs 08:49:46 open world RPGs are especially fun 08:49:57 me too, I just don't like minecraft because it's not a fun game. :P 08:50:13 but I also like strategy/competitive real-time games 08:50:17 kallisti: it sure is. Sure the combat is meh. I prefer creative. 08:50:31 some FPSes, super smash bros, magicka, starcraft, 08:50:46 I kind of suck at aiming at moving objects :P 08:50:54 I'm okay with stealth based FPS 08:50:59 like deus ex 08:51:06 my favorite FPS game is zombies mod in CoD actually. don't really like the multiplayer but the zombies mode is very fun. 08:51:15 *mode 08:51:15 mhm 08:51:58 my max round is 32 on the kino der toten map 08:52:02 solo 08:52:08 kallisti: The only FPSes I found fun to play are ones that are RPG-FPS mixes really. Like Deus Ex Human Revolution. Or Fallout New Vegas (haven't played Fallout 3) 08:52:24 opposite for me on the fallout stuffs 08:52:28 I played fallout 3 08:52:36 well, the mechanics are pretty similar 08:52:41 just different setting and story 08:52:46 I've seen it. 08:52:56 the mechanics are a little different also. they changed some skills around. 08:53:03 right 08:53:07 and the crafting stuff 08:53:09 the VATS system is interesting 08:53:18 the vats system is boring. :( 08:53:27 oh? 08:53:30 I disagree 08:53:32 but whatever 08:53:35 especially with all the vats-related perks. 08:53:40 hm 08:53:52 you basically just vats everything and..... continue vatsing everything 08:53:52 anyway I need to leave. Cya 08:53:56 mmk 08:53:57 kallisti: actually no 08:54:15 kallisti: VATS isn't realistic for sniper rifle over long distance at a large unmoving target 08:54:24 VATS underestimate the chance to hit then 08:54:25 bbl 08:54:37 oh... kAY? :p BYE 08:55:17 The chance to hit depends on your screen resolution, too 08:56:55 UNFAIR! 08:56:58 .. 08:57:43 And the bullets are instantaneous rays anyway, so it doesn't matter if they're moving 08:58:05 well I don't think vats is based on your screen res. 08:58:22 No, but manual aiming can be 08:58:37 If you max out your character so that there's no sway 08:58:58 HD TVS ARE OVERPOWERED. QQ 08:59:10 Uh, they have only HD resolution. 08:59:22 Nothing on my 2560x1440 09:00:04 Hm, did Bethesda really use the same game engine for four games? 09:00:18 That just feels like they pulled something on the world 09:01:06 -!- GreaseMonkey has quit (Quit: The Other Game). 09:03:03 Jafet: sort of. 09:03:15 Jafet: they used a new AI for the NPCs in skyrim 09:03:23 I'm sure there have been improvements. 09:03:31 Shiny rocks 09:03:44 graphics, yes. shiny interfaces. 09:04:34 oh, and, uh, giant fucking worlds filled with towns, caves, dungeons, random encounters, every NPC having voice-overs, multiple options for quests, etc. 09:04:55 The new AI isn't any more believable than the Oblivion ones, though 09:04:57 it's not like they're getting away with anything. 09:05:02 It's the NPC animations doing the most of the work 09:05:04 Jafet: well yeah, but it's new nonetheless 09:05:30 nothing was pulled, I think. I believe they've put plenty of work into each game. 09:05:32 The NPCs tilting their heads actually goes a long way to create realism 09:05:44 it's better than before, certainly 09:06:34 Well, when you set out to create a game on the scale that Bethesda does, you normally wouldn't want to release it in a rough, bug-ridden state like Bethesda does. 09:08:51 -!- oerjan has quit (Quit: leaving). 09:13:31 what 09:13:33 skyrim 09:13:37 oh yeah 09:14:14 that reminded me of my second pc which runs the game constantly for 3 days 09:28:06 @tell elliott amb is interesting. It does something similar to what I have in mind for my graph language, except that in the graph language it will be implicit to every change of state. 09:28:06 Consider it noted. 09:29:00 lambdabot - the Siri of IRC 09:30:39 @tell kallisti to stop using @tell 09:30:39 You can tell yourself! 09:30:45 lambdabot: thanks 09:39:10 hmm 09:39:21 * kallisti checks out Oz to see how it efficiently does constraint programming. 09:42:11 I'm not really sure if any of this is relevant though 09:50:55 but basically the syntax would look something like.... 09:51:21 constraint { node -> replacement; node -> replacement; ... } 09:51:31 the symbols can be changed later if desired. 09:53:01 and if the same node is replaced by two rules then this essentially creates two nodes with past edges that point back to the original node. 09:53:16 a sort of non-deterministic split. 09:54:21 so, the somewhat annoying problem of determining the order of execution of graph rewriting rules 09:54:24 is.. no longer a problem. 09:57:16 so I guess I should start working on a) what constraints look like b) how to define predicates to use in constraints c) how to define functions in general d) some built-in operations e) how to refer to nodes 09:57:29 I guess the constraint would have variables... so like 09:57:54 X > 2 { X -> X+1 } 09:58:29 X here refers to any node. if a node satisfied the constraint, then it's replaced by the node that's produced from adding one to the node's value. 10:00:21 X > Y { X -> null } 10:00:27 this would delete every node but the smallest. 10:01:21 (delete is kind of the incorrect word, as you can still backtrack) 10:06:07 -!- monqy has quit (Quit: hello). 10:06:15 monqy: hello 10:06:44 but I also want things like.... 10:07:00 X > Y { X -> past(X) } 10:07:10 -!- hagb4rd has joined. 10:07:42 which would replace X with a past node of itself. since there could possibly be more than one past node this is non-deterministic. 10:08:07 hmmm okay I could just have sets. 10:08:18 X > Y { X -> [X, X+1] } 10:08:43 replace all non-minimum nodes with both itself and itself plus 1 10:09:02 and then have a | which applys constraints to sets. 10:10:20 something like... 10:11:07 X > Y { X -> e in past(X) | e = e^2 } 10:12:21 or.... 10:13:27 X > Y { X -> a,b in past(X) | distance(X,a) > distance(X, b) } 10:13:37 to revert to the most recent past node. 10:14:55 minimum(X) := a,b in X | distance(X, a) > distance(X, b) 10:15:22 X > Y { X -> minimum(past(X)) } 10:15:34 er... 10:15:34 no 10:15:35 wait 10:15:46 that doesn't work :P 10:16:06 you need something like... 10:16:37 minimum(X) := b where a,b in X | distance(X, a) > distance(X, b) 10:16:56 (will improve the syntax of these things at some point) 10:20:55 > let x = [1..5] in [b | a <- x, b <- x, a > b] 10:20:55 [1,1,2,1,2,3,1,2,3,4] 10:20:59 lol 10:21:38 whoa 10:24:21 -!- azaq23 has joined. 10:24:37 -!- azaq23 has quit (Max SendQ exceeded). 10:27:10 -!- nooga has quit (Ping timeout: 255 seconds). 10:29:30 -!- ais523 has joined. 10:30:38 -!- nooga has joined. 10:40:57 > let x = [1..5] in [b | let s = join(liftA2(,))x, (a,b) <- s, a > b] 10:40:58 [1,1,2,1,2,3,1,2,3,4] 10:41:00 :( 10:41:13 same thing. 10:42:01 > concat . init . inits $ [1..5] 10:42:03 [1,1,2,1,2,3,1,2,3,4] 10:42:54 kallisti, weren't you going to sleep?... 10:44:12 :t init 10:44:12 ais523: You have 4 new messages. '/msg lambdabot @messages' to read them. 10:44:13 forall a. [a] -> [a] 10:44:17 ais523, hello 10:44:19 hi 10:44:23 Vorpal: no 10:44:29 > init [1,2,3,4,5] 10:44:30 [1,2,3,4] 10:44:32 backwards tail? 10:44:37 kallisti, pretty sure you said like "zzzzzs" or something 10:44:37 I was actually zzzzzing because you were putting me to sleep. :P 10:44:42 kallisti, oh 10:44:50 Vorpal: ha ha ha 10:45:24 hm that is some interesting xmas decoration in the window to the robotics lab here at university 10:45:35 anyway how do you implement minimum on a set without doing something like a fold 10:45:52 kallisti: well, you could do an associative fold 10:45:57 which isn't the same as foldl or foldr 10:46:03 but you might still consider it as being like a fold 10:46:22 basically LEDs mounted on a fan, rotating. The LEDs are synced to the rotation so they spell out a word 10:46:27 gnh, did that get through? Just lost wlan for a bit 10:46:29 ("God Jul", Swedish for "Merry Christmas") 10:46:48 fuck microwave ovens. 10:46:51 or I guess actually what I'm asking 10:46:54 they mess up wlan badly 10:47:08 is how do you use universal quantification to get the minimum of a set. 10:47:19 oh... 10:47:20 duh 10:47:43 exists a. forall b. a < b 10:47:46 hm and the time too 10:47:48 on the fan 10:48:20 hmmm my mother seems to be under the impression that second-hand hookah vapor is somehow going to be bad for her because she has asthma. 10:48:27 which I think is probably not true. 10:52:55 because I'm on the other side of the house 11:41:35 -!- ais523_ has joined. 11:41:59 -!- ais523 has quit (Disconnected by services). 11:42:01 -!- ais523_ has changed nick to ais523. 11:42:05 X just exited for no obvious reason… 11:44:16 ais523: I love when that happens. 11:47:12 hmm, there's garbage on tty2 11:48:25 ais523: data has feelings too. just because no one's using it doesn't mean it's not data. 11:48:39 garbage is insulting to those poor bits. :( 11:48:52 *desert login: 1*41*41*41*41*4Password: HHHHHHHHHHHPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPHHHHQQQQQPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPUbuntu 10.04.3 LTS desert tty2 11:48:54 desert login: 11:49:03 (note: that isn't actually my password) 11:49:09 good password 11:51:15 (nor my username) 12:22:22 -!- nooga has quit (Ping timeout: 255 seconds). 12:37:07 -!- augur_ has changed nick to augur[afk]. 12:44:24 -!- ais523 has quit (Ping timeout: 244 seconds). 12:46:30 -!- sebbu2 has joined. 12:46:31 -!- sebbu2 has quit (Changing host). 12:46:31 -!- sebbu2 has joined. 12:47:27 -!- Phantom_Hoover has joined. 12:47:31 -!- ais523 has joined. 12:48:09 -!- sebbu has quit (Ping timeout: 248 seconds). 12:49:32 can anyone explain why you would said "pairwise distinct" instead of "all elements are unique" 12:51:02 -!- ais523 has quit (Excess Flood). 12:52:40 -!- ais523 has joined. 13:01:03 what the hell 13:01:07 about a week ago 13:01:25 I was commenting on how warm it is in November 13:01:27 and today 13:01:28 it's snowing. 13:02:01 I don't even think it's below freezing. no, it's not. 13:10:39 eräässä kapakassa ja vakioasiakas ehdotti hänelle 13:15:59 -!- ais523 has quit (Ping timeout: 252 seconds). 13:18:54 itidus21: don't pretend you're not American. 13:19:19 http://s3.amazonaws.com/data.tumblr.com/tumblr_l99k91VcPO1qdpbleo1_1280.jpg?AWSAccessKeyId=AKIAJ6IHWSU3BX3X7X3Q&Expires=1322659120&Signature=ZADFaT4zuI5XQjZSiuliUVob0VQ%3D 13:20:04 ah, this must be what Sweet Bro and Hella Jeff is parodying. 13:20:16 -!- ais523 has joined. 13:24:36 http://www.reddit.com/r/askscience/comments/mt83n/dear_sociologists_why_do_black_people_not_enjoy/ 13:24:37 Phantom_Hoover: You have 9 new messages. '/msg lambdabot @messages' to read them. 13:24:38 This, wow. 13:26:36 -!- ais523 has quit (Ping timeout: 244 seconds). 13:27:25 -!- Patashu has quit (Quit: MSN: Patashu@hotmail.com , Gmail: Patashu0@gmail.com , AIM: Patashu0 , YIM: patashu2 , Skype: patashu0 .). 13:27:32 @tell elliott why why why this was a good day 13:27:32 Consider it noted. 13:28:17 Phantom_Hoover: you're so popular. 13:31:35 interesting, so pistachio seeds actually split open like that because of artificial selection. 13:39:12 -!- nooga has joined. 14:11:19 http://pics.kuvaton.com/kuvei/there_is_no_censorship_in_us.jpg 14:22:08 kallisti, that's a significantly more complex thing than straight "censorship". 14:26:59 yes I agree. 14:27:32 it seems to strange to me that for some reason the US needs different information/stuff from the rest of the world. 14:28:13 It'll mainly be a combination of culture, world prominence and the size of the market. 14:30:49 -!- olsner has quit (*.net *.split). 14:36:47 -!- olsner has joined. 14:48:58 -!- ais523 has joined. 14:59:47 -!- Zuu has quit (Read error: Connection reset by peer). 15:01:51 -!- copumpkin has joined. 15:03:53 -!- Zuu has joined. 15:17:37 http://www.dalnefre.com/wp/2011/11/fexpr-the-ultimate-lambda/ 15:17:47 This looks exceptionally stupid from a cursory glance. 15:18:04 "Application of a Lambda causes evaluation of its operands, producing arguments which are combined as specified by a body expression." 15:18:16 Yes, yes it is. 15:19:42 that doesn't make sense to me. 15:19:44 producing arguments? 15:19:59 oh 15:20:12 ...that's... stupid. 15:20:48 It appears he's reinvented lazily-evaluated lambdas. 15:23:47 "application of a lambda causes evaluation of its operands" sounds pretty unlazy to me. 15:32:21 -!- mrgaddy has joined. 15:33:16 hello to all esoterics! 15:33:54 `? welcome 15:34:02 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 15:35:52 -!- mrgaddy has quit (Client Quit). 15:36:40 Another neopagan sent packing. 15:39:00 -!- MSleep has changed nick to MDude. 15:40:23 -!- copumpkin has quit (Remote host closed the connection). 15:40:48 -!- copumpkin has joined. 15:43:59 Phantom_Hoover: sometimes I wish we were a joint channel between neopagans and amateur language designers. 15:44:18 Hey, oklopol's a professional language designer. 15:45:07 I guess Gregor kind of is too? 15:45:08 well, no 15:45:19 unless he wrote a paper about Plof? 16:02:48 -!- pikhq has quit (Ping timeout: 244 seconds). 16:02:57 -!- pikhq has joined. 16:05:17 -!- ais523 has quit (Remote host closed the connection). 16:24:34 -!- elliott has joined. 16:26:50 !perl print "\n" =~ /\s/ 16:26:53 1 16:26:57 whew. sanity. 16:29:33 -!- elliott has set topic: The IOCCC is back on! http://www.ioccc.org | http://codu.org/logs/_esoteric/. 16:29:41 * elliott now proceeds to find out why oerjan did that. 16:29:41 elliott: You have 2 new messages. '/msg lambdabot @messages' to read them. 16:33:26 !perl my $x = "hi hi ho hi"; while ($x =~ /hi/g) {print $&} 16:33:27 hihihi 16:33:33 whew. sanity. 16:33:38 sometimes I have to check when I'm writing perl. 16:34:24 isn't loss of sanity the standard perl coding state 16:34:42 yes. 16:34:57 actually it's the loss of sanity that makes me check all of these dumb things. 16:35:15 * kallisti cannot remember like 3 million special cases of stuff all the time. 16:37:10 -!- sebbu2 has changed nick to sebbu. 16:44:50 i wasn't accepted in stacs :( 16:45:09 Oh noklopol? 16:45:51 if you look at accepted papers in http://stacs2012.lip6.fr/, you'll see why 16:45:53 they are idiots. 16:46:28 oklopol is dum lol 16:54:01 -!- ais523 has joined. 17:03:52 -!- kallisti has quit (Ping timeout: 258 seconds). 17:05:56 elliott: here? if you're reading this live and not logreading, here's a hilariously breakage of a phpBB webforum: http://mafiascum.net/forum/viewtopic.php?f=8&t=14360&start=50 17:06:00 everyone's panicking, obviously 17:06:13 (creating new posts works, incidentally, it's just that all existing information seems to be badly messed up) 17:06:14 hi 17:06:21 ha 17:06:29 my favourite bit is the "Jump to" box at the bottom 17:06:35 -!- kallisti has joined. 17:06:43 oh, and half the pages fail with an internal error, the others are like that 17:07:04 * Sgeo was vaguely considering playing on MS once 17:07:10 Not sure I have the patience though 17:07:19 if you're not sure, you don't 17:07:47 elliott: as a bonus, none of the site admins are online, but one of the art people is, and tried to fix the problem by changing the default style to be one that they were working on as a joke 17:07:58 (or at least, that had amsuing placeholder graphics in) 17:08:02 heh 17:08:10 so everyone assumed that it was some sort of hack attempt 17:08:16 (they changed it back after it was clear that it did nothing useful) 17:08:29 but now everyone is blaming the tigers 17:08:41 ais523, where can you see what anyone is actually saying? 17:08:53 Oh, is there an IRC channel? 17:09:08 Sgeo: any thread which was created after this happened 17:09:09 like http://mafiascum.net/forum/viewtopic.php?f=8&t=19711 17:09:23 Ah 17:09:47 hmm, I /might/ actually end up using the state variable declaration in PErl 17:09:47 for my IRC bot 17:12:13 elliott: any idea of what could cause that sort of breakage? 17:12:20 it seems to be some sort of systematic corruption 17:14:10 -!- monqy has joined. 17:14:25 -!- kallisti has quit (Ping timeout: 255 seconds). 17:14:30 -!- kallisti has joined. 17:14:30 -!- kallisti has quit (Changing host). 17:14:30 -!- kallisti has joined. 17:15:36 ais523: hmm, reordering of table columns? 17:15:41 or inserting a new one in the wrong place 17:15:53 @help 17:15:54 help . Ask for help for . Try 'list' for all commands 17:15:56 @help help 17:15:57 help . Ask for help for . Try 'list' for all commands 17:16:04 perhaps, but it pretty clearly involves more than one table with any sensible architecture 17:16:09 e.g. everyone's showing as having joined on the epoch 17:16:17 weird 17:16:30 (I'm not assuming that phpBB's arch is sensible, but I don't think it'd be /that/ crazy) 17:16:36 "Who the Eff are you and how did you join in 1969" 17:16:50 hmm, unless join dates are calculated from the posts table 17:16:59 ais523: they're not 17:17:07 I know a /very slight/ amoutn about phpBB 17:17:13 good to know 17:17:20 there's definitely an index on (user, thread, date) 17:17:23 in the posts table 17:17:39 so it wouldn't be impossible to assume there's one on (user, date) too; it'd just be wrong 17:19:35 ais523: well, join date can't be calculated from date of first post 17:19:47 yes, that's what I meant by "wrong" 17:19:56 oh, everyone's avatar vanished too 17:20:09 (but changing avatars worked and put them back to normal, or alternatively tiger-themed) 17:20:14 and that can't be related to the posts table, surely 17:20:37 ais523: well, IIRC avatar info is stored in a table, just not the files themselves 17:21:05 right, but it wouldn't be the same table as posts unless the database was normalized in a really crazy way 17:21:17 typically, changing avatar changes it on all posts, you don't want to go back over all the posts and update it by hand 17:21:29 thus, it's stored in a separate table, almost certainly 17:21:30 lol 17:21:35 i think it's stored in the user table 17:21:51 -!- kallisti has quit (Ping timeout: 240 seconds). 17:22:05 -!- kallisti has joined. 17:22:05 -!- kallisti has quit (Changing host). 17:22:05 -!- kallisti has joined. 17:22:15 help I'm in wlan limbo 17:22:44 "The tigers are unrelated to the problem at hand." 17:23:27 ais523: this xalxe person sure does post a lot 17:23:33 elliott: I wonder how long "pretentious hipster" has been cool. 17:23:44 elliott: he's not a top poster site-wide, he's just interested in the whole tigers incident 17:23:44 at least since like the 50s right? 17:23:55 Tiger Incident(tm) 17:24:32 well, it has to be called something 17:24:43 ais523: the blognomic dynasty is still going? 17:24:58 elliott: it's the one after the one that started during the Agoran invasion 17:25:03 yep, I know 17:25:10 the last one was very short 17:25:14 this one seems a more usual length 17:25:15 it's been on this one the last like ten times i've checked :P 17:25:19 although it's in need of a win condition 17:25:40 you know what would be awesome 17:25:42 elliott: btw, I realised that Braid's time travel model is a superset of Feather's; e.g. the first puzzle in world 3 is pretty much exactly a <<= operation, giving the key to the player 17:25:49 haha 17:25:58 and world 2 should serve as a big demonstration of why timeloops are so easy to make by mistake in Feather 17:26:06 little balls of soft pretzel, filled with mozzarella. one day I shall make that. 17:26:10 it's actually a good visualisation tool 17:26:20 has it solved any feather problems yet? 17:26:26 no, I don't think so 17:26:40 in Braid, things can just have a glowy green outline and be outside the usual flow of time 17:26:46 that's like the Feather version of unsafePerformIO 17:26:48 cheating! 17:26:53 did someone say feather 17:26:58 can you play the game without that? 17:27:20 you can't cause things to do that; some puzzles (all in world 3, and many elsewhere) have them naturally on the map, thouhg 17:27:21 *though 17:27:56 each world has its own gimmick (apart from 2, whose gimmick is not having a gimmick) 17:28:06 btw, the worlds are numbered starting from 2; it's an effect of the pretentiousness 17:28:07 2 is first 17:28:26 the end is 1, right? 17:28:43 yep 17:29:01 well, or beginning depending on how you look at it, the game's plot is time-reversed (probably inevitably) 17:29:35 but it's the level you play last 17:29:45 ais523: a video title on YouTube you might find amusing: "55 Bugs in 3 Minutes (Minecraft 1.0.0)" 17:29:56 indeed 17:30:05 is it single-segment, or IL? 17:30:14 ? 17:30:37 are there discontinuities in the action, like saving and then loading elsewhere, or cutting with things done during the cut? 17:31:06 (if it repeatedly saves and loads in the same place, it's segmented, but that seems really unlikely for that sort of video) 17:31:23 oh, there's a cut after every bug 17:31:31 demonstrating them all with one large contraption would be... impressive 17:32:10 single-segments are much more impressive than ILs for that reason 17:32:14 Project for Pyralspite? 17:32:16 "in single player, arrows don't affect a pressure plate until a particle effect intersects the pressure plate" 17:32:32 although ILs are generally much faster, to make up for it 17:32:37 still can't get over how unlikely that bug is 17:32:38 That bug still amazes me. 17:33:06 ais523: (What is that terminology from? TASes?) 17:33:07 Boosters, I can get. Water ladders, I can get. Boatvators, I can get. But that? 17:33:14 elliott: unassisted speedruns 17:33:22 -!- TheJimmyJames has joined. 17:33:23 TASes are really heavily segmented by definition 17:33:38 although there's been one attempt I know of at an IL TAS, TASvideos wouldn't accept it 17:34:05 as they verify that the whole run is continuous using emulators, and ILs aren't continuous by definition 17:34:09 ais523: well, TASes are indistinguishable from someone playing ridiculously well without save-scumming, no? 17:34:17 I mean, the end result 17:34:23 elliott: right, indeed 17:34:27 oh, I had the terminology the wrong way aroudn 17:34:29 so they look like single-segments when played back 17:34:33 Phantom_Hoover: all creative sandboxy games need perpetual motion machines. 17:34:36 what does IL stand for? 17:34:39 or occasionally, single-segment with resets 17:34:41 individual level 17:34:43 -!- TheJimmyJames has quit (Client Quit). 17:34:51 because you have to play the whole game a level at a time in any order 17:35:07 heh 17:35:17 it's typically used for things like racing games 17:35:28 where the levels are all independent, and any ordering of the levels is entirely arbitrary 17:35:48 (and continuity is thus not required; SDA even allows the levels of an IL to be done by different people, and just adds together the best time achieved for each level) 17:36:00 "A half-block with ice underneath it is slippery." 17:36:03 Phantom_Hoover: we are using this 17:36:13 Yes. 17:36:17 Yes we are. 17:37:47 elliott: I think I would play minecraft if it were more CAy 17:38:11 Conway's Game of Life: the Game! 17:38:45 I guess redstone is kind of like wireworld???? kind of??????? 17:38:52 kallisti: Elliottcraft (the game I'm not really working on but am designing, and that's named after elliott to cause confusion) is basically a bully automaton 17:38:55 with only a few individual components 17:39:00 being 3D rather than 2D means only a few are needed 17:39:07 and I think it's TC, although haven't proven it 17:39:23 ais523: import state: ground 17:39:26 *important 17:39:36 assuming you walk around in it 17:39:51 kallisti: there is a possible content for a cell that is solid and does nothing 17:40:03 good. 17:40:06 two, in fact, one that falls and can be pushed around, and one that's immobile and just hangs there in midair 17:40:14 excellent. 17:40:26 ais523: So, sand and stone? :-) 17:40:34 stupid minecraft and its IMPOSSIBLY FLOATING STRUCTURES which are SOMETIMES NOT WANTED. 17:40:38 but OTHERTIMES KIND OF COOL. 17:40:41 ais523: (in Minecraft, sand and gravel alone are affected by gravity) 17:40:44 elliott: I don't think they have names yet, other than really descriptive names 17:40:57 but the moveable one acts rather more solid than sand 17:41:05 ais523: sand is solid in MC 17:41:10 oh, right 17:41:22 I read MC as mind control. 17:41:24 well, the game isn't going to make much sense real-worldly, but it should make at least more sense than /that/ 17:41:44 I've even vaguely envisaged it working as an MMO 17:42:02 ais523: glider guns are a must. 17:42:03 and I'm trying to work out how easily you could attack people by building walls around them or sending lots of factory blocks at them 17:42:11 kallisti: oh, don't worry about that 17:42:21 there's a block whose purpose is to be a glider with side effects, and it's quite easy to create 17:42:46 reflecty mirror things that move gliders around? 17:42:54 also: portals 17:42:58 every game benefits from portals. 17:43:15 for example see: portal 17:43:19 ais523: I've always liked the idea of games that are basically single-player MMOs 17:43:25 let's see… we have air, ground-like blocks (mobile/levitating), conveyor blocks (mobile/levitating), factory blocks 17:43:35 conveyor blocks and factory blocks both have six possible orientations 17:43:38 elliott: that sounds horrible kind of. almost as horrible as regular MMOs 17:43:55 none of the blocks can self-propel; but factory blocks can repeatedly create conveyor blocks beneath themselves 17:44:05 which effectively gives you a side-effecting glider 17:44:13 ais523: you could eliminate the diffusion of mobile and levitating by just putting block on a single kind of levitating block. 17:44:17 i.e., the only mode is online server play 17:44:18 /but/ 17:44:23 everyone spawns like miles and miles away from each other 17:44:34 so you never know unless you like accidentally cross the path of someone exploring far out 17:44:35 kallisti: that'd make severe differences from the way computation worked 17:44:39 or make plans to meet up with someone 17:44:40 elliott: but then, how would you play it offline? 17:44:48 also, someone would probably make some sort of space-filling machine before long 17:44:54 and everyone would come across it eventually 17:44:58 ais523: you don't (bonus points if it doesn't tell you it's connecting to the network before you realise it yourself) 17:45:15 elliott: then it's effectively malware 17:45:19 ais523: AWESOME malware 17:45:23 ais523: peano curves: the game? 17:45:24 well, yes, but still malware 17:45:31 elliott: more to the point, my network connection is often very unreliable 17:45:41 so I'd notice the game repeatedly crashing 17:45:43 ais523: well, it helps to dilute the world of malware with fun malware 17:45:47 a world with fun malware > a world with unfun malware 17:46:42 a world with fun malware + a world with unfun malware = a world with unfun malware 17:46:46 therefore, a world with fun malware = 0 17:47:20 ... 17:47:36 * kallisti good math 17:47:37 therefore, a world with unfun malware < 0 17:47:48 (and <0 < <3) 17:48:25 > (<0) < (<3) 17:48:26 *Exception: (==): No overloading for function 17:49:06 hmm, I wonder why that's erroring on (==) 17:49:15 a large part of me wishes that functions were orderable and equatable. 17:49:33 then define ordering and equality on functions 17:49:35 ais523: I wonder why that's a runtime error..... 17:49:40 -!- nooga has quit (Ping timeout: 245 seconds). 17:49:48 because 17:49:58 > (sin + cos) pi 17:49:59 -0.9999999999999999 17:50:10 elliott: some library, presumably? 17:50:18 also, what? 17:50:20 library for what 17:50:22 > cos pi 17:50:22 -1.0 17:50:26 > sin pi 17:50:26 1.2246467991473532e-16 17:50:30 oh, I see 17:50:32 ais523: num instance for functions 17:50:41 elliott: defining + on functions 17:50:44 sin pi..... 17:50:50 ais523: it's just a Num instance 17:50:55 but Num requires Eq and Show 17:50:56 because bad 17:51:00 oh, aha 17:51:14 elliott: does Eq requite Ord? 17:51:20 erm 17:51:22 but Num requires Ord and Show 17:51:23 Ord requires Eq 17:51:24 or does it 17:51:25 @src Num 17:51:25 class (Eq a, Show a) => Num a where 17:51:25 (+), (-), (*) :: a -> a -> a 17:51:25 negate, abs, signum :: a -> a 17:51:25 fromInteger :: Integer -> a 17:51:26 oh... 17:51:27 okay. 17:51:29 no Ord isn't required 17:51:31 I wonder why they defined it 17:51:42 me too. 17:52:04 and I wonder why they defined it in terms of == 17:52:13 @src (a->b) < 17:52:13 Source not found. BOB says: You seem to have forgotten your passwd, enter another! 17:52:22 > ((+3) > (+4)) 5 17:52:23 Couldn't match expected type `t1 -> t' 17:52:23 against inferred type `GHC.B... 17:52:36 .. 17:52:38 yeah 17:52:38 it'd be great if the rest of the error was printed 17:52:45 :t ((+3) > (+4)) 17:52:45 Bool 17:52:48 Pretty clearly GHC.BOol or siome.. 17:52:50 ah, there we go 17:52:59 in retrospect, that was inevitable 17:53:03 ..heh, indeed. 17:54:03 elliott: does caleskell do any other stuff with function instances that would require Ord? 17:54:11 don't think so 17:54:48 @info (->) 17:54:48 Parse error at "->)" (column 2) 17:54:57 @help info 17:54:58 help . Ask for help for . Try 'list' for all commands 17:55:05 @help @info 17:55:05 help . Ask for help for . Try 'list' for all commands 17:55:10 * Sgeo facepalms 17:56:42 ais523: I imagine one of the tests of the compare function or <= (whichever they defined for (->)) involves equality somewhere. 17:56:56 and then < etc are defined from that. 17:57:26 Um, why would they define Ord Num with compare or <= being anything other than error? 17:57:29 but that doesn't really explain why there is a completely useless Ord instance of (->) 17:57:35 Erm, I mean, Ord (->) 17:58:13 maybe they were lazy and just used the same error message they use with (==) to make their shitty useless instance. 18:00:30 perhaps it's actually a bug and no one realized that the Ord instance isn't actually needed. 18:00:47 ,, 18:01:00 ... 18:03:19 * Sgeo gets the discussion going in #haskell 18:08:29 Sgeo: it's Ord (a->b), right? (->) is quite different from (a->b) 18:08:36 Oh 18:09:01 ais523: probably. 18:09:16 > () > () 18:09:17 False 18:09:19 ais523: people often abbreviate instances for (->) in that way, it's kinda gross though 18:09:21 ...bah 18:09:29 elliott: does the language accept it? 18:09:33 no. 18:09:36 no, but we're not talking in haskell 18:09:40 well, OK 18:09:49 but that's like abbreviating int* to int in C 18:10:00 not really 18:10:06 even if you're not talking in C, it's still going to be really confusing 18:10:20 it's definitely obvious that you're saying (make functions do stuff) in much the same way as saying something like "an instance for monads" 18:11:04 Oh 18:11:12 There is a sensible definition of Ord for a->b 18:11:17 Well, actually 18:11:22 Don't know about sensible, but 18:11:30 no there isn't 18:11:34 :t max 18:11:35 forall a. (Ord a) => a -> a -> a 18:12:04 ais523: not really, since Ord (->) is totally invalid, and there's only one possible "expansion" to validity 18:12:08 as opposed to Ord Int vs. Ord (Ptr Int) 18:12:14 > max (+2) (+3) $ 5 18:12:15 8 18:12:24 Well, not "sensible" 18:12:25 Sgeo: ...and? 18:12:27 :t compare 18:12:28 forall a. (Ord a) => a -> a -> Ordering 18:12:30 @src Ord 18:12:30 class (Eq a) => Ord a where 18:12:30 compare :: a -> a -> Ordering 18:12:30 (<), (<=), (>), (>=) :: a -> a -> Bool 18:12:30 max, min :: a -> a -> a 18:12:33 elliott: Ord (a->a)? 18:12:36 How do you implement compare 18:12:37 But max and min are defined 18:12:46 So? The others aren't 18:12:50 elliott: with guards. 18:12:53 and stuff 18:12:53 But ah, I guess that's why 18:12:58 I wrote a consistent compare for functions 18:12:59 or something. 18:13:02 ais523: (a -> b), Ord (a -> a) isn't valid and wouldn't work if it did 18:13:04 it was kind of slow though 18:13:13 s/did$/was/ 18:13:16 ais523: for example: "an Ord instance for monads" when you actually mean an Ord instance for (Monad m, Ord a) => m a or something. 18:13:24 uh 18:13:25 aha, you can define <= in terms min as (<=) a b = min a b == a 18:13:32 kallisti: not sure how you'd define that 18:13:32 kallisti: that instance would be terrible and not work 18:13:32 that's where the call to == is coming from, probably 18:13:34 and 18:13:36 nobody says that 18:13:40 *in terms of min 18:13:41 and nobody would know what you meant if you said that :P 18:13:49 ais523: right 18:13:56 that's actually a plausible definition of <= for functions, it's just uncomputable 18:14:10 (and non-transitive) 18:14:16 I had a valid definition of it for functions 18:14:43 copumpkin: What did it do 18:14:53 Try the entire argument space? 18:15:03 yeah, but it's not that simple 18:15:16 That sounds fairly non-terminating :P 18:15:46 copumpkin: does "valid" here imply "computable"? 18:16:05 * ais523 tries to work out if sorting functions lexicographically by what they map the entire argument space to makes any sort of sense 18:16:25 I think it does with restrictions on the functions; differentiability is probably enough, but too strong 18:16:36 WTF 18:16:38 >deriv abs 0 18:16:42 > deriv abs 0 18:16:43 0 18:16:46 (that is, it's meaningful, but impossible to compute without more information) 18:16:47 > deriv abs (-1) 18:16:48 -1 18:16:59 > deriv abs 20 18:17:00 1 18:17:03 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds). 18:17:10 Sgeo: I bet it's just taking the average of left-derivative and right-derivative 18:17:14 > deriv abs x 18:17:15 signum x * 1 18:17:17 elliott: I'm pretty sure I've heard the phrase "instance for monads" used before. also: I wasn't anticipating my example would be reviewed for its plausibility of implementation. :P 18:17:25 ah no, doing it symbolically 18:17:28 @src deriv 18:17:28 Source not found. Where did you learn to type? 18:17:28 >deriv sin 18:17:32 > deriv sin 18:17:33 Overlapping instances for GHC.Show.Show (a -> a) 18:17:33 arising from a use of `... 18:17:44 > deriv sin x 18:17:45 1 * cos x 18:17:51 yep, symbolically all right 18:18:10 @hoogle (Monad m) => m a -> a 18:18:11 Prelude (>>) :: Monad m => m a -> m b -> m b 18:18:11 Control.Monad (>>) :: Monad m => m a -> m b -> m b 18:18:11 Control.Monad.Instances (>>) :: Monad m => m a -> m b -> m b 18:18:11 :t deriv 18:18:12 forall a b. (Num a, Num b) => (Dif a -> Dif b) -> a -> b 18:18:21 elliott, ais523: it only worked on finitely enumerable domains, and it would create a list of all functions 18:18:23 ais523: not symbolically, I don't think 18:18:23 oh come on, Haskell, no breakMonads function? 18:18:25 although it might be 18:18:27 and then find who appeared first in that list 18:18:32 I think it's AD 18:18:34 it was awesome 18:18:36 and the symbolicness comes from the Expr stuff 18:18:39 which comes in because of x 18:18:41 > deriv sin 99.4 18:18:42 0.4257869286693041 18:18:45 :t deriv sin 99.4 18:18:46 forall a. (Floating a) => a 18:18:47 yeah 18:18:50 elliott: how does it differentiate sin to cos without doing it symbolically? 18:18:54 and actually say the result is cos 18:19:02 is it just guessing that the result acts like cos? 18:19:03 ais523: that's part of the definition of sin 18:19:03 :t sin 18:19:04 forall a. (Floating a) => a -> a 18:19:10 it's part of the Floating instance for Dif 18:19:20 -!- zzo38 has joined. 18:19:23 > deriv (\a -> sin a * sin a) x 18:19:24 1 * cos x * sin x + sin x * (1 * cos x) 18:19:24 tl;dr typeclass hacks. 18:19:32 it's not a typeclass hack 18:19:52 elliott: it has to know that the input is sin, surely? 18:19:56 ais523: what 18:20:02 otherwise it's comparing functions and we already know that's impossible 18:20:10 no it's not 18:20:13 @messages 18:20:14 You don't have any new messages. 18:20:20 :t deriv 18:20:21 forall a b. (Num a, Num b) => (Dif a -> Dif b) -> a -> b 18:20:30 instance Blah (Dif a) where sin = ... 18:20:45 elliott: right, symbolic 18:20:48 no 18:20:49 not symbolic 18:21:03 the definition of sin will be something that says "this is sin" 18:21:13 thus, it's symbolic 18:21:17 no 18:21:17 not symbolic 18:21:19 unless you're using a really weird definition of the term 18:21:24 ais523: the reason it says cos 18:21:26 is because you used "x" 18:21:27 :t x 18:21:28 Expr 18:21:30 > sin x 18:21:30 sin x 18:21:31 > cos x 18:21:32 you're just saying lots of stuff that proves it's symbolic 18:21:32 cos x 18:21:39 you are still doing stuff that says it's symbolic 18:21:45 ais523: you're just saying lots of stuff that proves you don't know wtf it's doing 18:21:47 THE EXPR STUFF IS SYMBOLIC 18:21:50 the deriv stuff isn't 18:22:06 elliott: it's printing the result symbolically because I used x, indeed 18:22:18 but it was symbolic all along, because you can't go backwards from numerical to symbolic, in general 18:22:18 -!- elliott has left ("ragequit"). 18:22:56 elliott rageparts easily. 18:23:01 ais523: presumably it has to do some maths 18:23:04 I'm not used to elliott rageparting 18:23:07 ais523: on top of being symbolicish 18:23:27 symbolic differentiation basically means that it's using some sort of AST or similar representation of the functions, and operating on that 18:23:33 rather than evaluating the functions and operating on the resulting values 18:23:40 -!- elliott has joined. 18:23:44 and then somehow making them back into functions 18:23:55 ais523: I suggest you look up automatic differentiation 18:23:59 rather than arguing from incredulity 18:24:59 elliott: I've just looked it up; Wikipedia says that it isn't symbolic differentiation, then goes on to define it, with a definition that shows that it clearly is symbolic after all 18:25:11 unless "symbolic differentation" refers to something other than differentiation which is symbolic 18:25:13 you are incorrect 18:25:21 ais523: Then, go there and fix it if it is wrong? 18:25:25 http://blog.sigfpe.com/2005/07/automatic-differentiation.html 18:25:36 the fact that the operations are defined with variables 18:25:38 does not make them symbolic 18:25:40 Or, put a note on the Talk page to notify them in case someone has reasons to keep it how it is? 18:25:46 because there are no symbols at runtime 18:25:49 and no symbol manipulation at runtime 18:25:55 the only thing involving symbols or symbol manipulation is Expr 18:26:00 which is completely distinct from the automatic differentiation code 18:26:07 and unrelated to it 18:27:26 * elliott tries to find sigfpe's longer post. 18:28:24 elliott: OK, so automatic differentiation there is an optimization of an optimization of symbolic differentiation where you're superstrict 18:28:30 no 18:28:33 it's basically a specialiser 18:28:36 no 18:28:50 elliott: if you give in x as the argument, then you don't get any specialisation hapening 18:28:52 *happening 18:28:53 * elliott will just keep saying "no" every time you make an incorrect statement, since you don't actually listen to the corrections. 18:28:58 ais523: you can't give x in as an argument. x is not a number. 18:29:04 > deriv (sin :: Double -> Double) pi 18:29:07 elliott: nor is d 18:29:12 you cannot pass x to that sin 18:29:15 because it only takes Doublse 18:29:16 Doubles 18:29:19 oh wait, type error 18:29:22 -!- quintopia has quit (Ping timeout: 244 seconds). 18:29:24 sigh 18:29:25 anyway 18:29:28 automatic differentiation works because it redefines * on d 18:29:30 such that d*d = 0 18:29:32 no 18:29:53 Couldn't match expected type `Data.Number.Dif.Dif a' 18:29:53 against inferr... 18:29:55 elliott: the type error there is /mandatory/ 18:30:00 because, d is not a Double 18:30:10 yes, it is, it was a trivial mistake and irrelevant because you don't actually understand how AD works 18:30:17 > deriv (sin :: Dif Double -> Dif Double) pi 18:30:18 -!- Phantom_Hoover has joined. 18:30:18 -1.0 18:30:31 I presume a Dif Double accepts d 18:30:33 and also, are not interested in understanding, as opposed to just telling me I'm wrong and apparently Wikipedia and everyone else on the planet too based on misunderstandings 18:30:35 so I'm done 18:30:46 elliott: I've read the page, and I understand AD pretty well, by now 18:30:53 it's orthogonal to symbolic versus not symbolic 18:31:11 however, it requires redefining terms in the original expression 18:31:20 and thus, you need a symbolic version of the input 18:31:46 no you don't, you just need a polymorphic function 18:32:25 Is there an instance (Num a) => Num (Dif a)? 18:32:35 I would hope so. 18:32:46 > let f :: forall a. (Floating a) => a -> a; f x = sin x + cos x {- haskell has no facility for "inspecting" this function symbolically -} in (f (pi :: Double), deriv f (pi :: Double)) 18:32:47 (-0.9999999999999999,-1.0000000000000002) 18:33:32 elliott: actually, Haskell /can/ inspect that function symbolically 18:33:38 incorrect 18:33:45 create a new type, of typeclass Floating, that builds an AST 18:33:48 and defines sin, +, cos 18:33:54 (which it does, as it's of typeclass Floating) 18:34:00 that is not "inspecting the function symbolically" 18:34:06 also, types aren't "of typeclasses". 18:34:07 how is it not? 18:34:15 well, with an instance of that typeclass 18:34:20 ais523: by that argument, map is "symbolic" 18:34:24 I didn't mean to imply that a type could only belong to one typeclass 18:34:30 > map (\x -> "f " ++ show x) [1,2,3,4] 18:34:31 ["f 1","f 2","f 3","f 4"] 18:34:35 elliott: but, umm, it is? 18:34:35 OMG SYMBOLIC! 18:34:54 > cycle ["yes no "] --tl;dr 18:34:56 ["yes no ","yes no ","yes no ","yes no ","yes no ","yes no ","yes no ","yes... 18:34:59 oops 18:35:02 > foldr (\a b -> a ++ " `f` (" ++ b ++ ")") "z" ["a","b","c","d"] 18:35:03 "a `f` (b `f` (c `f` (d `f` (z))))" 18:35:04 > cycle "yes no " --tl;dr 18:35:05 OMG FOLDR IS SYMBOLIC 18:35:05 "yes no yes no yes no yes no yes no yes no yes no yes no yes no yes no yes ... 18:35:12 elliott: again, why would you expect it to not be? 18:35:16 EVERYTHING IS SYMBOLIC DESPITE THERE BEING NO SYMBOLIC SEMANTICS IN HASKELL OR CODE IN GHC 18:35:16 it doesn't need to evaluate anything 18:35:26 ais523: it's true that if you define every function as symbolic, then AD is symbolic, yes. 18:35:39 maybe there are even two people on the planet stupid enough to take such a view 18:35:41 wait, actually, no 18:35:54 hmm 18:36:27 ais523: btw, I think you'll find that most implementations of AD look like data Dif a = Dif a a, which has a conspicuous lack of symbolic d. 18:36:41 (d = Dif 0 1, _not_ symbolic at all, _not_ handled specially by the Num instance at all) 18:36:43 elliott: right, that's a specialization 18:36:55 no, that's the definition 18:37:00 > deriv (const 4) pi 18:37:02 0 18:37:05 http://en.wikipedia.org/wiki/Dual_number 18:37:13 ah, I know why map isn't symbolic, despite everything; it's because it doesn't try to provide definitions for any of the subexpressions of the original 18:38:36 AD is that differentiation thing— yep. 18:39:35 -!- quintopia has joined. 18:39:35 -!- quintopia has quit (Changing host). 18:39:35 -!- quintopia has joined. 18:39:53 > deriv (\x -> x^x) x 18:39:54 No instance for (GHC.Real.Integral 18:39:54 (Data.Number.Dif.Dif... 18:39:54 Are you discussing whether it counts as symbolic derivation or not. 18:39:58 > deriv (\x -> x**x) x 18:39:58 oh, forgot Conal has a serise of posts about it: http://conal.net/blog/posts/what-is-automatic-differentiation-and-why-does-it-work 18:39:59 (1 * recip x * x + log x * 1) * exp (log x * x) 18:40:00 What should I name the function to put the barrier monad into the other form? 18:40:01 elliott: hmm, I think you'll agree with the following statement: "Any function that doesn't mention Dif and is valid input to dif is also valid input to \f -> f x" 18:40:06 Phantom_Hoover: no, ais is blindly claiming it is without justification 18:40:18 do you? 18:40:43 (where x is Expr's x, there) 18:40:44 ais523: no, (Dif a) could easily have instances that Expr doesn't 18:40:55 Replace every number X with the number x + x'ε, where x' is a real number, but ε is nothing but a symbol with the property ε^2 = 0. Using only this, we get for the regular arithmetic 18:40:58 elliott: does it? 18:40:59 elliott: IT'S JUST A SYMBOL DUDE 18:41:02 elliott: SYMBOLIC 18:41:02 and would it make sense for it to? 18:41:02 It's... kind of symbolic, in that it only works for functions that only use + and *, but that's not really symbolic in the conventional sense. 18:41:09 and couldn't the same instances be added to Expr too? 18:41:16 kallisti: moron 18:41:25 Phantom_Hoover: Uhh, it works for functions that use plenty other than + and *. 18:41:32 elliott, hmm, like? 18:41:37 Phantom_Hoover: AD is widely used to differentiate entire procedural algorithms written in C. 18:41:44 Phantom_Hoover: Like anything? 18:41:47 Any operator. 18:41:55 elliott: (note: sarcasm) 18:41:57 ais523: I don't know whether it does 18:42:01 elliott: but they need either the source code or the resulting binary to work, presumably 18:42:05 Sorry, I meant to clarify, that doesn't use any numerical operations other than + and *. 18:42:21 ais523: if you made your question precise -- "any f :: (Num a) => a -> b can have be applied to (x :: Expr) where instance Num Expr"... no shit? 18:42:28 Phantom_Hoover: ...no? 18:42:41 so, I think by "symbolic", I mean "there is enough polymorphism present that you can just give a lot of AST-building definitions of the operators and end up with a parse tree of the function" 18:42:46 -!- zzo38 has quit (Remote host closed the connection). 18:42:47 > deriv sin (x :: Expr) 18:42:48 which is clearly different from your definition, thus the argument 18:42:49 1 * cos x 18:42:57 elliott, how would you use it on, say, ln x. 18:43:04 I notice a distinct lack of + and * 18:43:08 ais523: your definition is ridiculous: every polymorphic function becomes symbolic 18:43:17 Without using the series expansion; that's just expressing it in terms of + and *. 18:43:23 > deriv log (x :: Expr) 18:43:24 1 * recip x 18:43:29 > deriv log (pi :: Double) 18:43:30 0.3183098861837907 18:43:35 elliott: hmm, I suppose they are 18:43:36 Using Expr just confuses things. 18:43:39 and that's probably a good thing 18:43:43 elliott: I think it clarifies. 18:43:48 it doesn't 18:43:51 because Expr only works for a small subset 18:44:05 iirc it fucks up on abs or something, I forget exactly what I ran into when I tried to use AD with Expr 18:44:05 well, because it's missing instances, but right 18:44:13 no 18:44:14 > abs x 18:44:15 because the types don't work out 18:44:16 abs x 18:44:22 > deriv abs (x :: Expr) 18:44:23 signum x * 1 18:44:32 > deriv signum (x :: Expr) 18:44:32 0 18:44:35 iirc it fucks up on abs or something, I forget exactly what I ran into when I tried to use AD with Expr 18:44:42 "I forget exactly what I ran into" 18:44:50 indeed 18:45:00 and I'm currently trying to work out what leads to the sin -> cos case 18:45:21 Floating instance for dual numbers. 18:45:23 I think? 18:45:29 ais523: the definition of sin for Diff references cos, obviously 18:45:35 ais523: as the definition of sin for dual numbers /involves/ cos 18:45:40 because of the infinitesimal part 18:45:49 ais523: but the sin and cos referenced are those of the underlying numeric type 18:45:54 aha, of course 18:45:59 and for Expr, that consists of prepending "cos " (roughly) 18:46:40 elliott, but, um, seriously, the proof of AD uses a polynomial; how do you use it on things that aren't polynomials? 18:46:53 magic. 18:47:03 Phantom_Hoover: well, all the things that it's being tried on are polynomials 18:47:14 in the case of sin/cos, they're infinite-degree, but still polynomials 18:47:26 and in general, working on all polynomials means it works on anything that has a Taylor expansion 18:47:35 and things that don't are unlikely to be meaningfully differentiable anyway :) 18:47:55 Note that the standard ad libraries don't actually define things via Taylor expansions. 18:48:04 elliott, yes, so how do they do it? 18:48:07 no, because it would be stupid to do so 18:48:17 they're only relevant in proving that the technique works 18:48:23 Phantom_Hoover: they use basic calculus. 18:48:30 Um, no? 18:48:38 Phantom_Hoover: sin = liftAD sin cos 18:48:56 for instance 18:49:01 the ad library has 18:49:07 lift1 :: Num a => (a -> a) -> (D t a -> D t a) -> t a -> t a 18:49:08 What does liftAD do? 18:49:19 where sin = lift1 sin cos 18:49:25 Phantom_Hoover: Depends on which type you use 18:49:29 for the simple 18:49:29 data Forward a = Forward !a a deriving (Show, Data, Typeable) 18:49:30 it's 18:49:33 lift1 f df (Forward b db) = Forward (f b) (dadb * db) 18:49:34 where 18:49:34 Id dadb = df (Id b) 18:49:42 (where 18:49:42 type D Forward = Id 18:49:42 ) 18:50:58 -!- oerjan has joined. 18:51:21 oerjan: why did you put the tunes logs in the topic? I logread but didn't see anything about it :P 18:51:43 elliott: it was while glogbot was crashed 18:51:52 elliott: that's a lot of glue code.. 18:51:52 ah 18:51:58 kallisti: because it's generic 18:52:01 kallisti: it has all kinds of AD types 18:52:12 including like 18:52:13 -- | A @Tape@ records the information needed back propagate from the output to each input during 'Reverse' 'Mode' AD. 18:52:13 data Tape a t 18:52:13 = Lift !a 18:52:13 | Var !a {-# UNPACK #-} !Int 18:52:14 | Binary !a a a t t 18:52:16 | Unary !a a t 18:52:17 elliott: right. I think probably a simple example would be easier to follow though? 18:52:18 deriving (Show, Data, Typeable) 18:52:20 -- | @Reverse@ is a 'Mode' using reverse-mode automatic differentiation that provides fast 'diffFU', 'diff2FU', 'grad', 'grad2' and a fast 'jacobian' when you have a significantly smaller number of outputs than inputs. 18:52:23 newtype Reverse a = Reverse (Tape a (Reverse a)) deriving (Show, Typeable) 18:52:25 that uses StableNames and observable sharing and shit 18:52:26 kallisti: I was giving an actual example 18:52:30 elliott: yes I know. 18:52:32 to show something that actually works 18:53:01 big :: Nat -> Bool 18:53:01 big (S (S (S (S (S (S (S (S (S (S _)))))))))) = True 18:53:01 big _ = False 18:53:02 what a swell function 18:53:36 but you could also just say sin (Dif x dx) = Dif (sin x) (dx * cos x) 18:53:39 to demonstrate the basic idea. 18:53:48 sure 18:53:51 elliott, hangonhangonhangon, is liftAD just /defining/ the derivative? 18:54:07 Phantom_Hoover: sin on the dual numbers inherently involves cos. 18:54:13 It's not "defining" the derivative. 18:54:26 Computing sin on the dual numbers involves computing sin on the underlying number type, and cos on the same dual number type. 18:54:39 You could also define "sin x = x+1", it just wouldn't be sin. 18:54:50 Similarly, the only sin for the dual numbers is lift1 sin cos. 18:55:02 Oh, OK. 18:57:10 elliott: the formal definition of dual numbers is oddly similar to complex numbers. 18:57:22 kallisti: it's not really odd 18:57:22 Well nawww. 18:57:26 kallisti: complex numbers is adding i^2 = -1 18:57:29 kallisti: dual numbers is adding d^2 = 0 18:57:39 they're both gonna end up looking pretty similar :P 18:57:44 right that is the similarity I was talking about. :P 18:58:10 it's basically just a different complex number algebra. 18:58:44 A different complex number algebra? 18:58:45 -!- derrik has joined. 18:59:12 oh you can do second derivatives like this also you just need a second level 18:59:13 or more generally 18:59:19 data Diff a = Diff a (Diff a) 18:59:24 The complex numbers are just ((R,R), +, *); change + or * and you don't have the complex numbers any more. 18:59:27 but some things stop terminating if you do it like /that/ :P 19:00:01 Phantom_Hoover: you can't take square roots, sins, and cosines of complex numbers? 19:00:17 well, scratch square roots actually 19:00:27 kallisti, those are all derived from the stuff I stated. 19:01:13 oh right division. 19:01:15 * elliott wishes there was Automatic Integration. :p 19:01:20 Codual numbers! 19:01:31 elliott: make them 19:01:42 publish paper 19:01:43 get rich 19:03:31 kallisti, we can already do integration on polynomials really easily. 19:04:07 but not with codual numbers! 19:04:25 Phantom_Hoover: --Phantom "Help runge kutta" Hoverboard 19:04:49 elliott, hey, I found highly contradictory information on what it could be applied to! 19:05:13 Phantom_Hoover: (Wait what if we just rewrote Newtonian physics with polynomials?) 19:05:19 Phantom_Hoover: (THINK ABOUT IT) 19:05:28 Phantom_Hoover: are you sure you don't need like triangles or something to define sine? 19:05:30 elliott, they tried that, turns out it's impossible. 19:05:42 Phantom_Hoover: Maybe they didn't try hard enough? 19:05:48 Phantom_Hoover: Maybe they used the wrong foundation. 19:05:52 kallisti, sin x = x - x^3/3! + x^5/5! - ... 19:05:53 Let's try it with THE POWER OF TYPE THEORY AND UNSAFECOERCE. 19:05:58 -!- azaq23 has joined. 19:06:02 -!- azaq23 has quit (Changing host). 19:06:02 -!- azaq23 has joined. 19:06:32 kallisti, this definition is demonstrably equivalent to the triangle one, although it's pretty circuitous to actually show it. 19:06:45 Phantom_Hoover: oh okay. but then you forgot the infinite paper. 19:06:52 elliott: aren't those two opposite powers? 19:06:52 Phantom_Hoover: 3/3! = 1! = 1 idiot dummy 19:07:04 sin x = x - x^1 + x^1 - ... 19:07:05 === 19:07:08 sin x = x - x + x - ... 19:07:10 .Q.E.D 19:07:10 olsner, yes, they fight crime. 19:07:24 elliott "bad at teaching" hird 19:07:28 You've proven that sin x doesn't converge for all x? 19:07:35 Well, all nonzero x. 19:07:41 Phantom_Hoover: no we just need to use 19:07:42 ooh, TYPE CRIME, it's like thoughtcrime 19:07:44 ZETA FUNCTION REGULARISATION 19:07:49 it solves all summing problems 19:07:57 elliott, I think fax may have been a bad influence on you. 19:08:00 * kallisti has never had a problem summing. 19:08:23 Phantom_Hoover: OK I have determined that sin(x) = 1/4e^pi + (x*0.0000000000014) for all x apart from 3. 19:08:30 sin(3) = god. 19:08:53 Is that what zeta function regularisation actually says. 19:09:05 Yes. It has helped us find god. 19:09:12 Thanks, zeta function regularisation. Theta function regularisation. 19:09:52 Phantom_Hoover: I really want to believe in string theory because one kind of string theory involves using zeta function regularisation to work out a sum for actual physical things??? 19:10:02 I want to believe that God is awesome enough to put that into physics. 19:10:11 elliott, check out the WP article? 19:10:20 elliott: too bad that's bad because string theory ew 19:10:31 Phantom_Hoover: ? 19:10:45 The first example is bog-standard QFT. 19:11:00 Phantom_Hoover: Is it? YESSSSSSSSSSSSS 19:11:04 THANKS GOD 19:11:12 kallisti: Aw c'mon, everyone likes string theory, it's so elegant! 19:11:34 (Before Phantom_Hoover rips into me: it's a joke.) 19:12:15 elliott, wait, how much do you actually know about zeta function regularisation beyond "you can use it to prove mad things about infinite sums". 19:12:29 elliott: sometimes I feel like have a superpower to recognize jokes. 19:12:33 unless they're just incredibly deadpan. 19:12:41 Phantom_Hoover: I am like the world's foremost expert of zeta function regularisation? 19:12:55 elliott, what's the zeta function. 19:13:05 Phantom_Hoover: RIEMANNIAN 19:13:22 elliott: of all the people I know you seem to know the most about it, so that's a yes 19:13:29 Riemann, mon. 19:13:36 olsner, you knew fax, no? 19:14:22 Zeta-Function Regularization is Uniquely Defined and Well 19:14:24 E. Elizalde 19:14:26 (Submitted on 6 Aug 1993) 19:14:28 Hawking's zeta function regularization procedure is shown to be rigorously and uniquely defined, thus putting and end to the spreading lore about different difficulties associated with it. Basic misconceptions, misunderstandings and errors which keep appearing in important scientific journals when dealing with this beautiful regularization method ---and other analytical procedures--- are clarified and corrected. 19:14:33 Q.E.D. bitchen 19:14:46 Phantom_Hoover: nope, I've never used fax 19:15:11 elliott, is E. Elizalde you in a previous life. 19:15:17 Phantom_Hoover: Yes. 19:15:27 Phantom_Hoover: I revived two years later. 19:15:56 I should probably learn some analysis sometime, it seems cool. 19:16:52 Phantom_Hoover: Yes then you will know 1 thing, ha ha ha 19:17:05 :'( 19:17:15 oh come on, Haskell, no breakMonads function? <-- it makes very little sense to do that for an arbitrary monad 19:17:46 because different monads need different kind of setup to get started 19:17:52 elliott, update 19:17:55 oerjan: some can't get started at all 19:18:01 kallisti: dupdog 19:18:02 What does breakMonads do. 19:18:17 Phantom_Hoover: @hoogle (Monad m) => m a -> a 19:18:28 would be its type 19:18:56 Ah, yes, the classic "help i want out" response to a monad. 19:19:33 Don't most useful monads have a function like that, except with more arguments? 19:19:37 i mean, _even_ if you admit unsafePerformIO it still doesn't make sense for every monad. 19:19:54 oerjan: unsafePerformIO is in the report :) 19:19:59 Sgeo: yeah. except sometimes the output too has more arguments. 19:20:05 Sgeo: not necessarily 19:20:09 e.g. lists 19:20:15 I mean, the function monad doesn't, except it does if you consider the input "more arguments" 19:20:18 Sgeo, and there's the crux of the matter: m a isn't associated with any particular value of a. 19:20:30 14:17 < elliott> kallisti: dupdog 19:20:33 elliott: what about it? 19:20:33 elliott, why shouldn't I? 19:20:45 -!- sebbu2 has joined. 19:20:45 -!- sebbu2 has quit (Changing host). 19:20:45 -!- sebbu2 has joined. 19:20:49 oerjan: well you could always add it as a method to Monad, with the default definition of undefined 19:20:58 Sgeo: well you are basically just defining "useful monad" as "something which can be turned into a function from something else to something with an a in it" 19:21:01 so that it still breaks arbitrary monads. :> 19:21:14 kallisti: yeah fail needs company in its brokenness 19:21:15 But yes, like Phantom_Hoover said. 19:21:18 I think (a -> Bool) is a monad. 19:21:22 (pure sets) 19:21:30 oh, for Eq a 19:21:46 -!- sebbu has quit (Ping timeout: 248 seconds). 19:21:58 er hm 19:21:59 elliott: Cont r may be a better example 19:22:02 elliott, what's wrong with that as a definition of a useful monad? 19:22:02 how do you do join 19:22:08 Sgeo: (a -> Bool) -> a 19:22:11 can you write that? 19:22:12 you just cannot get an a result out of that 19:22:38 elliott, least value of a such that the function results in true, for some arbitrary well-ordering. 19:22:42 assuming r and a are not allowed to depend on each other 19:22:44 oerjan, even with applying id? 19:22:46 Phantom_Hoover: you only have (Eq a) 19:22:49 Sgeo: um 19:22:51 ZFC'd. 19:22:52 newtype PS a = PS (a -> Bool) 19:22:54 erm, using id 19:22:58 run :: (Eq a) => PS a -> a 19:23:08 Sgeo: id doesn't give you Cont r a -> a 19:23:12 oh 19:23:13 for Cont, ok 19:23:21 -!- nooga has joined. 19:23:21 :t runCont 19:23:22 forall r a. Cont r a -> (a -> r) -> r 19:23:40 oerjan: oh PS isn't a monad 19:23:41 unfortunately 19:23:41 You... get an r? 19:23:45 obviously that shows id works if a = r 19:23:48 because it's not a functor, it's a contrafunctor 19:24:07 er, hmm 19:24:09 that seems wrong 19:24:14 because Set /is/ a monad, modulo Ord constraint 19:24:16 so what's up? 19:24:24 Sgeo: note that breakMonad was supposed to have the type forall m a. Monad m => m a -> a 19:24:37 fmap :: (a -> b) -> (a -> Bool) -> (b -> Bool) 19:24:37 *breakMonads 19:24:41 wtf 19:24:46 oerjan: how is Set a monad again? that makes no sense 19:25:01 elliott: it's not 19:25:07 oerjan: MODULO ORD CONSTRAINT 19:25:42 ugh 19:25:47 it's because Set can access its inner "list of values" 19:26:22 elliott: apply f to that list, then nub . sort, i presume 19:26:40 oerjan: yes, but it's really gross because it means Set is nothing like a set :( 19:26:44 oh, and set union somewhere 19:26:51 elliott: yes the set monad is basically the same as the list monad, modulo ord constraint 19:27:03 oerjan: even worse: you can't define contramap for Set 19:27:09 but you /can/ for (-> Bool) 19:27:14 Sets are like the opposite of sets :P 19:28:53 contramap? 19:28:59 -!- sebbu2 has changed nick to sebbu. 19:29:49 Sgeo: see contravariant package 19:31:26 contramap scares me 19:31:32 -> Bool is a contravariant functor, yes. also it's its own adjoint functor, and when you compose those you get Cont Bool as the monad. 19:32:08 oerjan: yes, i'm just annoyed that (Set a) and (a -> Bool) are almost opposites 19:32:14 Set has fmap, (-> Bool) has contramap 19:32:41 I would think of the former as the latter except (a) faster and (b) you can get a magic ordered list of values out of it, but that doesn't affect what you can actually "do" to it :P 19:33:16 elliott: it may be somewhat analogous to how a finite dimensional vector space is its own dual, but the isomorphism is not natural (you need to pick an arbitrary basis) 19:33:24 heh 19:33:55 oerjan: I'm trying to think of monads that you can't "run" apart from data Trivial a = Trivial (or was it data Trivial a) and Cont... 19:34:04 having a hard time of it :P 19:34:25 elliott: hmmm.. what is "run" for lists? 19:34:40 kallisti: head :P 19:34:46 ah 19:34:47 but more relevantly, 19:34:50 [a] -> Maybe a 19:34:57 Sgeo probably considers that close enough to "running" 19:35:02 since (Maybe a) sometimes has an a in it 19:35:20 elliott: at least you know when it doesn't run. 19:35:55 so wait is Sgeo arguing in favor of breakMonads or something? I haven't been paying attention 19:36:44 come to think of it, inner products are what you add to _make_ that self-dualism natural for vector spaces, maybe there's an analogue for Set a and a -> Bool 19:39:11 safeIndex would probably be better 19:39:30 fsvo "better" 19:39:47 FSVO IS MINE 19:39:48 MIIIIIIIINE 19:41:10 elliott: friendship fsvo 19:41:22 elliott: ... fsvo fsvo 19:41:30 iouhfjkhflsd 19:41:36 elliott: hi friendship fsvo help 19:41:46 monqy: HELP 19:41:50 monqy: hlep 19:41:51 fsvo friendship 19:42:58 :t Expr 19:42:59 Not in scope: data constructor `Expr' 19:43:02 @hoogle Expr 19:43:03 Text.Parsec.Expr module Text.Parsec.Expr 19:43:03 Text.ParserCombinators.Parsec.Expr module Text.ParserCombinators.Parsec.Expr 19:43:03 Text.ParserCombinators.Parsec.Expr buildExpressionParser :: OperatorTable tok st a -> GenParser tok st a -> GenParser tok st a 19:43:19 hmm is there a SimpleReflect type that has a parameter? 19:44:10 http://hackage.haskell.org/packages/archive/show/0.4.1.1/doc/html/SimpleReflect.html 19:45:47 so no 19:46:07 would a... simple-reflect monad be possible? 19:46:15 heh 19:46:44 elliott, kallisti: hi 19:46:51 monqy: stop kallisti 19:46:57 -!- sebbu2 has joined. 19:46:57 -!- sebbu2 has quit (Changing host). 19:46:57 -!- sebbu2 has joined. 19:47:01 kallisti: no. return :: a -> Reflect a 19:47:02 qhat did kallisti do 19:47:03 what string do you use? 19:47:09 fsvo "better" 19:47:09 FSVO IS MINE 19:47:09 MIIIIIIIINE 19:47:09 elliott: friendship fsvo 19:47:09 elliott: ... fsvo fsvo 19:47:10 iouhfjkhflsd 19:47:12 elliott: hi friendship fsvo help 19:47:14 monqy: HELP 19:47:16 monqy: hlep 19:47:26 kallisti: :( 19:49:52 :) 19:49:58 -!- Klisz has joined. 19:51:06 -!- sebbu has quit (Ping timeout: 248 seconds). 19:52:57 https://github.com/ghc/testsuite/commit/dfdb979305d5ebb7b28fcabce06d9095d81d34da 19:53:01 monqy: oerjan: Phantom_Hoover: terrifying 19:53:36 ??? 19:53:47 terrifying 19:54:27 But that’s not all! Humble Introversion Bundle customers now have access to the source code for Darwinia, Multiwinia, DEFCON, and Uplink! Once you've purchased the bundle, check your download page for a source snapshot and gain access to Introversion's developer forums, wiki, and SVN repository. 19:54:28 !!!!!!!1183748975438957 19:54:44 you mean the call stack thing which he promised a while ago? 19:54:59 oerjan: yes but I DIDN'T KNOW IT WAS BEING EXPOSED TO USER CODE... 19:55:12 https://plus.google.com/107890464054636586545/posts/YJzAAxw28N7 19:55:22 heh 19:56:47 what is this thinge.. 19:57:12 call stack inspection for ghc haskells? 19:57:19 terrifying indeed 19:57:31 what about call stack /manipulation/? 20:00:07 elliott, I think this is old news that I saw in here but didn't process properly, but Introversion source now available for Humble Bundle purchasers 20:00:16 But that’s not all! Humble Introversion Bundle customers now have access to the source code for Darwinia, Multiwinia, DEFCON, and Uplink! Once you've purchased the bundle, check your download page for a source snapshot and gain access to Introversion's developer forums, wiki, and SVN repository. 20:00:16 !!!!!!!1183748975438957 20:00:16 you mean the call stack thing which he promised a while ago? 20:00:16 oerjan: yes but I DIDN'T KNOW IT WAS BEING EXPOSED TO USER CODE... 20:00:17 https://plus.google.com/107890464054636586545/posts/YJzAAxw28N7 20:00:19 heh 20:00:21 what is this thinge.. 20:00:23 call stack inspection for ghc haskells? 20:00:25 terrifying indeed 20:00:27 what about call stack /manipulation/? 20:00:29 elliott, I think this is old news that I saw in here but didn't process properly, but Introversion source now available for Humble Bundle purchasers 20:00:35 sgeo's memory lasts less than 6 minutes 20:00:46 elliott, I could swear I saw it earlier than 6 minutes ago 20:00:51 Like hours ago or something 20:02:30 elliott: maybe his memory only keeps the first reference 20:03:40 like: "Major online game" -> "Active Worlds" 20:03:55 * oerjan coughs 20:04:15 :D 20:04:40 -!- Jafet has quit (Quit: Leaving.). 20:05:33 wow, he remembers things from hours ago, Sgeo is quite the memory artist 20:06:10 he should join a circus 20:06:12 that's nothing, i remember things from _months_ ago. like, er, um... 20:06:16 :D 20:06:17 you too 20:06:19 -!- GreaseMonkey has joined. 20:06:19 Introversion forums, why are you down? 20:08:22 -!- sebbu2 has changed nick to sebbu. 20:08:39 * kallisti still remembers most of his schedule throughout high school. 20:09:11 and college schedules, even! 20:09:31 i vaguely remember that i once remembered my schedule 20:10:40 I think I took some typing class and geometry at the same time. 20:10:42 so bad. 20:10:54 typing 20:10:55 class 20:10:59 ?????? 20:11:00 yes. 20:11:07 it was like "how to use microsoft office: the class" 20:11:13 wow great 20:11:14 and it included a lot of typing of documents 20:11:16 and spreadsheets. 20:11:28 it was actually awesome because I would always finish first and then basically do nothing the rest of the class. 20:11:35 normally doing nothing is boring 20:11:40 but doing nothing with a computer is AWESOME. 20:11:46 most of my high school schedule was unscheduled time, not exactly hard to remember that schedule 20:11:51 * Phantom_Hoover downloads the Uplink source. 20:12:25 monqy: I also took this class called construction 20:12:27 it was hilarious 20:12:30 and awful. 20:12:37 I'm imagining a class about playing with blocks 20:12:39 I USED SAWS. YEAAAAAH 20:12:50 I'm bad at saws. 20:12:56 We call that DT over here. 20:13:01 well except jigsaws. jigsaws are fun. 20:13:22 I made a stick man out of metal and also a plastic self-portrait. 20:14:55 Phantom_Hoover: So, a stick man out of metal and a stick man out of plastic? 20:15:07 No, it was a Phantom_Hoover. 20:15:59 -!- Slereah has joined. 20:16:37 http://en.wikipedia.org/wiki/File:Frida_Kahlo_(self_portrait).jpg "Its inclusion in the article adds significantly to the article because it shows the subject of the article" 20:16:42 Frida Kahlo is the history of art. 20:17:42 -!- Slereah_ has quit (Ping timeout: 260 seconds). 20:26:04 "As you’ve discovered, the grandaddy machine-learning algorithm of them all, back-propagation, is nothing but steepest descent with reverse mode automatic differentiation. This means that if you wrote a neural network that simply evaluated, but didn’t know how to learn, and passed it into a routine for optimisation using steepest descent by reverse mode AD, then it would use back-propagation without anyone having to even know that such a thing 20:26:04 as back-propagation existed. Internally it would actually perform exactly the same operations as back propagation." 20:26:10 ais523: thanks for being wrong, it's made me google up things and remember how cool AD is 20:30:56 elliott: neat 20:33:42 > deriv log 0 20:33:43 Infinity 20:33:47 ha ha ha ha 20:33:57 > deriv abs 0 20:33:58 0 20:34:13 shocking 20:34:20 >deriv (\x -> if x > 5 then 0 else x) 4 20:34:25 > deriv (\x -> if x > 5 then 0 else x) 4 20:34:27 1 20:34:29 > deriv (\x -> if x > 5 then 0 else x) 6 20:34:30 0 20:34:58 If I put in 5 it's going to be 1, isn't it, even though that's not the right answer 20:35:01 > deriv (\x -> if x > 5 then 0 else x) 5 20:35:02 1 20:35:17 how is it not right? 20:35:28 oh, nevermind.. 20:35:47 "limits? what are those?" 20:35:49 Sgeo: Were you expecting itto work perfectly? 20:35:53 *it to 20:36:01 elliott, no, but I can dream, can't I? 20:36:10 No. 20:36:35 Hmm, maybe there should be an if' function that ... does something 20:36:49 what 20:36:53 elliott: how does it determine that constants have a derivative of zero but variables have a derivative of one. actually nevermind I see how it works for variables but not for constants. 20:37:18 it just passes in the argument with the 1 20:37:25 I suppose you could have (==*) :: (Eq a) => Diff a -> Diff a -> Diff Bool; ifE :: Diff Bool -> Diff a -> Diff a, but I have no clue what you'd do with Diff Bools. 20:37:30 if' :: (Num a) -> a -> (a,a) -> (a -> a) -> (a -> a) -> a 20:37:40 :t deriv 20:37:41 forall a b. (Num a, Num b) => (Dif a -> Dif b) -> a -> b 20:37:48 oh... nevermind 20:37:49 kallisti: const 1 :: Diff Double -> Diff Double 20:37:52 kallisti: === const (D 1 0) 20:37:53 kallisti: fromInteger in the Num instance? 20:38:00 i havent read the thing 20:38:01 const (D 1 0) (D 0 1) == (D 1 0) 20:38:01 ;_; 20:38:03 blah blah blah 20:38:08 a while ago i read stuff about AD then i forgot it all 20:38:08 oops 20:38:25 elliott "bad at teaching still" hird 20:38:39 but I got it 20:38:40 so nevermind. 20:40:29 monqy: I keep forgetting fromInteger is a method of Num and not just some magical thing somewhere else. 20:41:52 > deriv (\x -> 2*x) 3 20:41:54 2 20:42:32 > deriv (sin + cos) x 20:42:32 1 * cos x + 1 * negate (sin x) 20:42:37 > reduce $ deriv (sin + cos) x 20:42:38 1 * cos x + 1 * negate (sin x) 20:42:41 :-( 20:43:00 :t reduce 20:43:01 Expr -> Expr 20:43:17 :t reduce $ x - x 20:43:18 Expr 20:43:27 > reduce $ x - x 20:43:29 x - x 20:43:38 @src reduce 20:43:39 reduce _ 0 = undefined 20:43:39 reduce x y = (x `quot` d) :% (y `quot` d) 20:43:39 where d = gcd x y 20:43:39 @hoogle (a -> a) -> a -> Int -> a 20:43:40 Data.Sequence iterateN :: Int -> (a -> a) -> a -> Seq a 20:43:40 Data.Sequence adjust :: (a -> a) -> Int -> Seq a -> Seq a 20:43:41 Data.IntMap adjust :: (a -> a) -> Key -> IntMap a -> IntMap a 20:43:50 Sgeo: wrong reduce 20:44:04 Huh. 20:44:20 I'd've thought that function would be one of the basic ones. 20:44:44 Phantom_Hoover: To do what? Iterate a function? 20:44:47 The arguments are all the wrong way around. 20:44:53 Int -> (a -> a) -> a -> a would be the right way. 20:44:56 iterate and !!, tada! 20:45:17 elliott, I thought Hoogle was order-blind. 20:45:30 Phantom_Hoover: It doesn't exist in the stdlib. 20:45:33 I'm just saying if it did... 20:47:13 @pl i n f a = iterate f a !! n 20:47:13 i = flip (flip . ((!!) .) . iterate) 20:47:27 :t (n f a = iterate f a !! n 20:47:28 parse error on input `=' 20:47:28 er 20:47:35 :t (\n f a -> iterate f a !! n) 20:47:36 forall a. Int -> (a -> a) -> a -> a 20:47:54 -!- pikhq_ has joined. 20:47:55 -!- pikhq has quit (Ping timeout: 252 seconds). 20:50:40 -!- Phantom_Hoover has quit (Ping timeout: 244 seconds). 20:52:27 > foldr (\x acc -> x:acc) [] [x,y,z] 20:52:28 [x,y,z] 20:52:45 > foldr (:) [] [x,y,z] -- before someone yells at me about the lambda 20:52:46 [x,y,z] 20:53:23 @help quickcheck 20:53:24 help . Ask for help for . Try 'list' for all commands 20:53:28 @quickcheck 20:53:29 Unknown command, try @list 20:53:30 Sgeo: too late. you can't fix it. 20:53:42 shouldn't use lambdas for simple things. 20:54:27 so. I'm kind of bad at quantum mechanics. enlighten me: is there anything in quantum mechanics that disproves determinism? 20:54:32 I think there is. 20:54:49 Well, disproves it assuming you hold to no causal influences exceeding c 20:54:54 Wait, no 20:55:09 Hidden variables are disproved assuming no non-local influences 20:55:31 I think multiple-worlds is considered deterministic without being a local variable theory 20:58:44 I 20:59:22 'm just wondering if my deterministic viewpoint is perhaps unwarranted due to things I don't understand about the universe. 21:11:02 elliott, kallisti update 21:17:04 -!- Ngevd has joined. 21:19:16 Hello! 21:20:16 I found a 29-step wiki surf loop 21:26:18 first link or last link? 21:26:33 It loops 21:26:35 Um 21:26:58 I'm not sure which link you mean 21:28:45 do you follow the first or last link on each page? 21:28:50 Last in the intro 21:29:52 I put the path in an article on our wiki 21:29:59 err, that sounds off-topic 21:30:07 In my userspace 21:30:09 oh 21:30:17 User:Taneb/Wiki surf 21:30:22 "made because I am bored and lonely and have no access to IRC" 21:30:25 Ngevd: http://webchat.freenode.net/ 21:30:30 Blocked in school 21:30:36 lame 21:37:30 Ngevd: i recalled some of the members of your loop from before but not the loop itself, so i followed it and the link Policy studies -> Public administration has already been broken by an edit 21:37:40 !!! 21:38:41 It is possible I made a mistake 21:39:04 Ngevd: no, there was definitely a recent edit prior to which that was correct 21:39:10 Wow 21:39:26 so, these long loops may not be very stable :P 21:41:40 in suspect the entire Public administration -> Policy studies part was included in what we did previously - all of them sound familiar. 21:42:07 tempting to write a bot to try and find these loops 21:42:17 *i suspect 21:42:27 longest path from A to A has to be something CS has optimised to hell by now, right? :) 21:42:36 heh 21:42:48 only need to do it some 2 million times to get the longest one 21:43:19 oerjan: (/is/ there a fast algorithm for that? :P) 21:43:45 well yeah you just need to iterate all pages and for each page follow its path until you hit one you already visited, so it's O(n) in total 21:44:24 and obviously that's as fast as you can hope for 21:44:31 well, OK :P 21:44:45 oerjan: already visited globally, or from the last iteration? 21:44:46 of the pagespace 21:44:51 globally 21:45:04 yeah i guess it's not too bad 21:45:07 unless you want to duplicate work 21:45:27 it should _still_ be O(n*max path length) if you don't, though 21:45:35 and you only have to track the set of seen pages 21:45:38 not all the paths 21:45:42 you can flush out paths to disk 21:45:46 so it won't take much ram either 21:46:14 seen pages and the path lengths of them 21:46:45 oerjan: hm right 21:47:36 and it will be slightly different if you hit a seen page from a previous iteration or a seen page from this one (the latter means a _new_ loop, naturally) 21:48:27 oerjan: um you can't have a new loop with an immutable set can you 21:48:31 because each page has exactly one successor 21:49:10 by definition there is only zero or one cycles involving any given page 21:50:02 elliott: by "new" i mean "not previously discovered" 21:50:11 ah 21:53:59 oerjan: dammit now I want to write this :P 21:54:49 getting the intuitive "last link" detection quite right might be tricky. 21:54:58 especially with your section rule. 21:55:00 -!- copumpkin has quit (Ping timeout: 244 seconds). 21:55:26 oerjan: well things like references and the "citation needed" links don't look like [[...]] in wikicode 21:55:43 well ok 21:55:44 so once you have a section, just scan back for a [[...]] 21:55:56 to isolate the section, just take up to the next line starting with = 21:56:04 or interwiki links need to be ignored too, i've skipped some wiktionary ones 21:56:36 oerjan: yeah 21:57:52 oerjan: ooh now i'm imagining a pretty graph you could draw with this 21:57:59 actually hm would that work 21:58:03 oh no it wouldn't :( 21:58:26 and probably other namespaces, in case you hit an article which has no introduction links other than those top boxes 21:58:46 oh and what about side boxes, i've ignored those. but i guess they are templates anyway. 21:58:49 -!- Patashu has joined. 21:58:51 oerjan: yeah, to both. 21:58:56 oerjan: it doesn't have to be completely perfect :P 21:59:11 oerjan: i doubt the longest chain involves ten non-templated side boxes that link into the Wikipedia namespace 21:59:28 MAYBE 21:59:54 oerjan: oh i thought of a graph that could be drawn. but it's very silly 22:01:03 maybe you could make a chain by following the random page link until the PRNG cycles 22:01:07 there's only one outgoing edge from each page. reminds me of BackFlip's > command 22:01:53 oerjan: given a page p, start with a node of just that, and connect it to all the n-chains of p. the 0-chain of p is following the first link, the 1-chain of p is following the second (at each step, ofc), the (-1)-chain of p is following the last, the (-2)-chain is second-last, etc. 22:02:02 hmm that wouldn't work unless all pages had the same number of links :( 22:02:11 I JUST WANT A PRETTY GRAPH 22:02:27 hm 22:02:29 -!- Jafet has joined. 22:05:52 oerjan: ofc i could just draw a graph of all links but that kind of thing has been done and it isn't related to this game :P 22:06:11 (I wonder how well graphviz deals with such massive graphs...) 22:15:39 -!- oerjan has quit (*.net *.split). 22:16:00 smallest netsplit 22:16:03 netsplit kitten 22:16:08 so adorable 22:17:46 I'm pretty sure that that's just oerjan's quit message 22:18:03 ...no, it's not. 22:18:11 -!- oerjan has joined. 22:18:11 he usually goes for "Good night". 22:18:34 Then he must be unusually susceptible to netsplits? 22:18:45 false 22:18:47 wat 22:18:52 oerjan is up all the time 22:18:56 Or I sort of roll about half the people in this channel to one in my head? 22:19:36 I wonder in which half am I then 22:19:40 oerjan: oh. by the way 22:19:46 oerjan: I found an example of an applicative functor that isn't a monad, IIRC 22:19:48 way the by. 22:19:56 oerjan: on the epigram blog. 22:19:58 weigh the bi 22:20:15 IT DOESN'T COUNT IF IT NEEDS DEPENDENT TYPING 22:20:30 oerjan: um no, in haskell. 22:20:32 oerjan: http://www.e-pig.org/epilogue/?p=186 22:20:40 -!- Phantom_Hoover has joined. 22:20:41 "Structure cops will note that De is another example of an applicative functor which is not a monad — join would bring things from the far future to the near future, and that had better not be possible. However, where applicative functors in general only pull through traversable functors (containers with finitely many elements), De pulls through all containers. So it’s a bit special. I wonder what it is." 22:21:00 -!- derrik has quit (Quit: quitter). 22:22:28 Is there a simple way to tell if a list is finite in Haskell? 22:22:52 "‘NuDe’ is a fixpoint giving co-trees with delayed children." 22:23:02 I SEE 22:23:16 Ngevd: not that halts if it isn't 22:23:58 oerjan: it's mcbride, you are surely used to the puns by now :P 22:24:05 Ngevd: mathematically impossible 22:24:10 hm i may not have read that many of his 22:24:27 oerjan: really? 22:24:31 but he's so cool :( 22:27:13 what are you... ah.. haskell & theory 22:27:33 that's all we ever do 22:28:22 I think I actually understand folds now 22:28:31 you 22:28:32 what 22:28:37 Just sort of think of accum as the rest of the fold 22:28:37 how have you failed to understand folds for this long 22:28:38 hm that argument that De isn't a Monad looks rather like "it isn't a monad because we have disallowed the obvious way of making it one for semantic reasons." 22:28:44 > foldr f z [a,b,c,d] 22:28:45 f a (f b (f c (f d z))) 22:28:53 I think we should make a #esoteric-haskell; there's been far more Haskell chat than Minecraft chat. 22:28:54 @src foldr 22:28:55 foldr f z [] = z 22:28:55 foldr f z (x:xs) = f x (foldr f z xs) 22:29:02 oerjan: um no 22:29:06 oerjan: because the implementation isn't the specification 22:29:12 oerjan: (the specification doesn't talk about unsafeCoerce!) 22:29:12 Phantom_Hoover: +1 22:29:18 Phantom_Hoover: Haskell is the best esoteric language! 22:29:21 Ngevd, quiet, you. 22:29:25 oerjan: like 22:29:32 I actually understand that definition better than the expanded form, I think 22:29:32 oerjan: the implementation could _also_ implement a function that exposed the unsafeCoerceness 22:29:50 oerjan: being able to implement an interface for an implementation doesn't mean that the semantic model can do it, because exposing that interface might /break/ the model 22:29:51 Phantom_Hoover: I though that Minecraft has been forgotten 22:30:15 Sgeo: s/:/`f`/, s/[]/z/ 22:30:18 a : b : c : d : [] 22:30:19 -> 22:30:24 a `f` b `f` c `f` d `f` z 22:30:27 (except right-associative) 22:30:28 Only because of the Bukkit team's lack of appropriate psychostimulants. 22:30:45 infixr 9 `f` 22:31:26 elliott: well, i'm not convinced that it gives an example of an Applicative in _haskell_ which cannot be made into a Monad. 22:31:40 oerjan: because you need unsafeCoerce to implement it? 22:31:59 In dependent typing, is it possible to make a thingy such that it's impossible to implement a Monad thingy that violates the monad laws? 22:32:05 As in, the compiler checks the monad laws? 22:32:33 um the unsafeCoerce isn't even used in the Applicative instance. which is obviously isomorphic to Identity, btw. 22:32:39 Sgeo: it "checks" them because you have to prove them 22:32:48 oerjan: well ok 22:32:50 Ah, cool 22:32:52 elliott, you do? 22:32:57 Oh, dependent typing. 22:33:01 Sgeo: "cool", heh 22:33:14 Sgeo: Spoken like someone who's never tried to prove anything substantial in Coq or Agda before 22:34:39 The, um 22:34:50 The top result for "hardback" on DDG is Memory Beta. 22:34:59 As in, the definition box at the top. 22:35:05 elliott: do those things have unsafeProveAnything? 22:35:19 olsner: well yes 22:35:33 -!- oerjan has quit (Quit: unsafeGoodNight). 22:35:49 They have Axiom unsafeProveAnything : forall x, x. 22:35:58 Remember when we created ABCDEF...G? 22:36:44 OK so I have discovered a cupboard in the school lab which contains, among other things, toluene, nitric acid and sulphuric acid. 22:36:45 FINALLY 22:37:17 -!- GreaseMonkey has quit (Remote host closed the connection). 22:39:26 http://esoteric.voxelperfect.net/wiki/User:Taneb/ABCDEF...G 22:39:38 Someone make sense out of that 22:40:35 -!- copumpkin has joined. 22:40:42 We didn't even implement ABCDEF 22:42:46 @tell oerjan Sgeo needs a swat for abbreviating Adjudicated Blind Collaborative Design Esolang Factory 22:42:46 Consider it noted. 22:43:46 -!- azaq23 has quit (Quit: Leaving.). 22:45:27 I've been swatted for less 22:48:42 -!- hagb4rd has quit (Ping timeout: 248 seconds). 22:50:28 AbstractBeanClassDelegationExceptionFactoryGenerator 22:54:29 @hoogle zipWith5 22:54:29 Data.List zipWith5 :: (a -> b -> c -> d -> e -> f) -> [a] -> [b] -> [c] -> [d] -> [e] -> [f] 22:54:31 yesss 22:56:20 hmm, what's a fast way of doing (last . takeWhile p) 22:58:04 -!- GreaseMonkey has joined. 22:58:04 -!- GreaseMonkey has quit (Changing host). 22:58:04 -!- GreaseMonkey has joined. 23:00:41 last . takeWhile p 23:02:52 foldr1 (\a b -> if p b then b else a), maybe 23:05:03 Jafet: Fast :P 23:05:07 Deewiant: Fair enough 23:05:11 I'm fine if it has a Maybe result 23:06:07 How is that slow? 23:06:51 Jafet: Hmm, I was thinking it'd involve two traversals, but it won't will it 23:06:52 Alright then 23:07:10 It might, but that's still fast 23:07:25 Cons, uncons, cons, uncons 23:07:37 That's what I meant, they're in lock-step 23:07:40 In a strict language it'd be slow 23:07:49 It'd still be fast! 23:07:55 ...unless allocation is slow. 23:08:59 Jafet: I have a fear of traversing lists multiple times 23:09:03 I just don't do it, ever 23:13:17 -!- Ngevd has quit (Ping timeout: 260 seconds). 23:14:01 {-# RULE "warm blanket" last . takeWhile p = my'Faster'LastTakeWhile #-} 23:15:58 :D 23:24:22 -!- Jafet has quit (Quit: Leaving.). 23:27:46 -!- Phantom__Hoover has joined. 23:30:50 -!- Phantom_Hoover has quit (Ping timeout: 248 seconds). 23:56:39 -!- ais523 has quit (Remote host closed the connection). 23:58:19 -!- augur[afk] has changed nick to augur.