2011-12-01: 00:04:55 -!- pikhq has quit (Ping timeout: 244 seconds). 00:04:56 -!- pikhq_ has joined. 00:16:30 -!- pumpkin has joined. 00:19:24 -!- sebbu2 has quit (Quit: updating xchat-wdk). 00:19:56 -!- copumpkin has quit (Ping timeout: 248 seconds). 00:30:30 -!- lambdabot has joined. 00:41:54 The things about Dungeons&Dragons game, is that unlike chess and poker and so on, it is possible to solve situations that are impossible to solve. 00:54:00 -!- pikhq_ has quit (Ping timeout: 244 seconds). 00:59:22 -!- pikhq has joined. 01:02:44 http://hackage.haskell.org/package/barrier-monad 01:08:00 -!- DCliche has joined. 01:11:17 -!- Klisz has quit (Ping timeout: 252 seconds). 01:15:00 -!- pumpkin has changed nick to copumpkin. 01:24:03 -!- BeholdMyGlory has joined. 01:24:05 -!- BeholdMyGlory has left. 01:26:37 -!- sebbu has joined. 01:26:47 -!- kmc has quit (Quit: Leaving). 02:08:49 -!- Jafet has joined. 02:14:52 -!- pikhq_ has joined. 02:15:02 -!- pikhq has quit (Ping timeout: 244 seconds). 02:15:05 -!- copumpkin has quit (Ping timeout: 240 seconds). 02:23:13 -!- Darth_Cliche has joined. 02:25:07 -!- zzo38 has quit (Remote host closed the connection). 02:26:55 -!- DCliche has quit (Ping timeout: 244 seconds). 02:27:10 -!- itidus21 has changed nick to alloca_i32. 02:31:37 -!- alloca_i32 has changed nick to itidus21. 02:36:48 -!- copumpkin has joined. 03:07:18 `log situation 03:07:23 2010-11-15.txt:18:29:06: (I'm aware of the US phone situation) 03:42:16 -!- zzo38 has joined. 04:10:32 I invented the D&D feat "Favored Mercy"; you have to select a creature type same as the ranger's favored enemy list and then there are various bonuses and restrictions that apply. 04:13:39 "Science Made Stupid: How to Discomprehend the World Around Us" by Tom Weller 04:14:26 "Cvltvre Made Stvpid: A Misguided Tour of Illiterature, Fine & Dandy Arts, & the Subhumanities" by Tom Weller 04:18:15 -!- azaq23 has joined. 04:37:47 good morning 04:38:05 does anyone no of a google API where I can grab timezone info? 04:38:13 equivalent to the "time in " searched 04:38:16 *searches 04:40:07 -!- MDude has changed nick to MSleep. 04:59:56 kallisti, update 05:00:07 Sgeo: oZOMG 05:00:27 kallisti: tzinfo? 05:01:57 pikhq_: can I ask tzinfo "time in anywhere, USA" and it will tell me the time? 05:03:04 Erm, zoneinfo 05:03:05 Bleh. 05:03:14 oh, possibly. 05:03:32 I don't think it would work with small town names though 05:03:42 I'll just... do google searches and regex the time. :P 05:03:53 You'd probably need a map for *that*. 05:04:08 (it's an IRC bot so dependence on a network connection isn't a problem) 05:04:27 Also, that's bound to screw up: town name is ambiguous. :) 05:04:45 that's fine. 05:04:56 Well, with state I *think* it might not be? 05:05:05 a reasonable person would provide a town, state combo 05:05:23 or a town, whateverelseyourcountrycallsthisshit, country 05:07:05 wow... boiling peanuts is rather time consuming. 05:07:11 suppose to boil them for like 24 hours. 05:09:12 hmmm, well, Google doesn't really make this easy. 05:09:24 maybe there XML api is better for this. 05:15:34 Do you know the sidereal time? 05:17:29 zzo38: yes it's 04:18 LST here 05:17:36 :D 05:52:50 is that a welsh town? 05:53:10 ? 05:53:19 whateverelseyourcountrycallsthisshit 05:54:09 no town is a whateverelseyourcountrycallsthisshit town. 05:54:15 obviously. 05:55:09 * kallisti has been boiling peanuts for over an hour now. 05:55:26 but then there is a town named Llanfairpwllgwyngyllgogerychwyrndrobwllllantysiliogogogoch 05:56:13 oh look that's an actual thing. 05:56:49 Toponymy is the scientific study of place names (toponyms), their origins, meanings, use and typology. A toponymist is one who studies toponymy. 05:57:57 itidus21: The apple is the pomaceous fruit of the apple tree, species Malus domestica in the rose family (Rosaceae). It is one of the most widely cultivated tree fruits, and the most widely known of the many members of genus Malus that are used by humans. Apple grow on small, deciduous trees that blossom in the spring and produce fruit in the fall. 05:58:02 .. 05:59:19 hmmm, these peanuts are still kind of crunchy. 05:59:26 maybe another hour? :P 06:02:33 A seminal experiment by Karen Wynn in 1992 involving Mickey Mouse dolls manipulated behind a screen demonstrated that five-month-old infants expect 1 + 1 to be 2, and they are comparatively surprised when a physical situation seems to imply that 1 + 1 is either 1 or 3. 06:02:45 ... 06:03:06 `word 50 06:03:10 serate erilinst squcefingrata nridi sche dk feculaza le pres elatardia kan za ar sau rempanissidaroparinsilh tovigisallassa toncippilluce riedaiilloccau tfinan rous affiens feaatherroellyte rumqh sed em jelendcclocwted nut va acistophoroculvaliamangtola disses climan coo ebyted wity baniff hinosele proley widuchissirs forraseek oliterskiitcligitussies kr rapeosendon co pos lornfiernsident unalragewelsiegaus ze beffuringlatismen natschic bareng 06:03:22 after being taught the meanings of the Arabic numerals 0 through 4, one chimpanzee was able to compute the sum of two numerals without further training 06:03:32 feaatherroellyte 06:07:48 kallisti: O, you do know the sidereal time. Do you know the moon declination? 06:09:51 -!- monqy has quit (Read error: Operation timed out). 06:11:44 zzo38: nope 06:12:04 zzo38: I actually just googled for the former. :P 06:12:09 but I now know what it means. 06:12:17 Moon declination is -8 degrees 18 minutes 06:12:25 Sideral time is the right ascension of the zenith. 06:12:41 -!- monqy has joined. 06:12:50 2h33m here 06:13:07 -!- azaq23 has quit (Quit: Leaving.). 06:14:31 for a second that looked like leetspeak.. 06:14:41 some weird way to say "same here" 06:15:00 Actually I meant 2 hour 33 minutes 06:15:06 yes I know. 06:17:28 awwww yeah boiled peanut time. 06:17:31 if you have never had boiled peanuts 06:17:35 I highly recommend that you do. 06:18:21 Do you know what right ascension and declination are? These are equatorial coordinates; do you know ecliptic coordinates? 06:22:44 I'm vaguely familiar with what an ecliptic is. 06:22:55 I can imagine that ecliptic coordinates are based on the ecliptic plane. 06:23:08 Yes, that is what it is. 06:24:32 and I'm guessing equatorial coordinates are based on the equator? 06:24:38 Yes. 06:25:29 Hour angle can be used instead of right ascension. And you can use local hour angle or Greenwich hour angle. 06:26:00 but it's more or less expressing the same thing as right ascension, yes? 06:26:14 Yes, the difference is where the zero will be. 06:26:18 right 06:26:42 is hour angle in different units compared to right ascension? 06:27:12 Usually they are both given in units of hours, although you can use degrees instead. 06:28:38 ah so greenwich hour angle and right ascension are equivalently based on the prime meridian. 06:29:11 Right ascension has zero at the vernal equinox. Greenwich hour angle has zero at Greenwich. 06:29:26 Local hour angle is based on your location. 06:30:18 ah okay 06:30:51 could be useful to know local hour angle if you're looking for celestial bodies in the sky. 06:31:00 is there any notion of local declination? 06:31:33 kallisti: Not as far as I know, but I was thinking about the same thing earlier today; you could have local declination too. 06:31:54 it would just be less convenient without GPS monitoring of some kind 06:32:07 with local hour angle you could go by your time zone instead of the precise longitude. 06:34:23 these poorly made boiled peanuts make me want some actual boiled peanuts. 06:34:38 You could, but timezones are only approximate. Using your precise longitude is better (you could find it in a city list if you have no GPS, and enter it into the computer, together with your latitude as well) 06:35:02 Of course city lists are more accurate than using timezones but still not perfectly accurate because the city is larger than one point. 06:35:24 I basically took some ripe shelled frozen peanuts and boiled them. you're supposed to take unripe peanuts with shells and boil them forever in salt water like peas. 06:35:43 zzo38, is your barrier monad code up yet >.> 06:35:51 Sgeo: Yes. 06:35:58 The package is called "barrier-monad" 06:36:21 ty 06:36:27 I have no peanuts 06:36:48 I don't even know if they sell raw unripe peanuts. 06:37:17 Can you grow peanuts in your garden? 06:37:19 typically you buy boiled peanuts from stands. it's a popular thing in the deep south where peanuts are grown (especially Georgia and South Carolina) 06:37:23 -!- oerjan has joined. 06:37:28 zzo38: doubt it. 06:37:34 well, depending on where you live 06:38:36 typically you buy boiled peanuts from stands. it's a popular thing in the deep south where peanuts are grown (especially Georgia and South Carolina)Peanuts grow best in light, sandy loam soil. They require five months of warm weather, and an annual rainfall of 500 to 1,000 mm (20 to 39 in) or the equivalent in irrigation water. 06:38:55 Peanuts grow best in light, sandy loam soil. They require five months of warm weather, and an annual rainfall of 500 to 1,000 mm (20 to 39 in) or the equivalent in irrigation water. 06:38:59 :P 06:39:21 zzo38: good luck :P 06:41:57 * oerjan recalls his mom grew tomatoes and cucumbers indoors, they needed buckets of water every day 06:42:35 that's because you live in a barren icy tundra. 06:42:36 right? 06:42:37 well i'm sure there were tomatoes, i think there were cucumbers. 06:42:43 kallisti: close enough. 06:43:24 I'm pretty sure tomatos more or less grow themselves here. 06:43:32 i should point out this was still done in the summer, so they did get sunlight through the big glass door. 06:43:38 my parents have a tomato garden and I don't think I've seen them upkeep it very much. 06:44:43 also corn. wow, imagine that! plants that originate from the Americas grow well in the Americas! 06:44:52 well afair it was mostly the water. 06:45:31 the americas _are_ big you know, and especially in the north-south direction which temperatures vary along :P 06:46:09 and i vaguely think i read corn originated in the tropics. 06:46:22 incas or mayas or thereby 06:47:05 yes, but now we have like miles and miles of yellow corn being mass produced in the midwest 06:47:07 but i guess georgia is nearly tropical, isn't that were you were from 06:47:13 yes. it's "sub-tropical" 06:47:48 oerjan: Not to mention we've got a lot of climactic changes from geography. 06:47:54 which means it's really hot in the summer, noticeably cold in the winter, and always humid. 06:47:55 i also guess they've probably bred varieties that need less heat 06:48:08 kallisti: heh 06:48:49 current humidity: 100% (it just rained a few hours ago :P) 06:48:51 oerjan: Such breeding was lost to the mists of time; domesticated corn had already pretty well spread through the Americas. 06:49:07 most of my time the one time i was staying in the US was in Seattle, which probably does not fit that description. Boston did when i was there, though. 06:49:18 the midwest is insane. 06:49:25 literally miles and miles of corn and soybeans. 06:49:29 Yeah. 06:50:03 You've got grazing melding into corn fields... Over the course of several hundred miles. 06:50:20 pikhq_: yeah i just recently read that the original english settlers learned to grow corn 06:50:43 Yup. 06:51:01 Mostly I know all this stuff about right ascension and ecliptic plane and that stuff due to looking at oerjan's "Agora Nomic's Horoscope" and I didn't know what "Node" is or what all these lines and numbers means, or what "Placidus houses" is; and then I downloaded Astrolog (and Daedalus, the author's other program) and it had a bunch of other features that I didn't understand, 06:51:10 oerjan: we learn about that shit in middle school history. :P 06:51:45 kallisti: i figure it is part of the thanksgiving lore 06:51:55 oerjan: but we don't learn any important history in middle school. 06:51:59 oerjan: yes, it is. 06:52:27 and I wondered why the sunrise/sunset times in this program are a bit off (I think it is because of refraction), and I figured out how to use it to calculate the date of Chinese New Year, and so on. 06:52:52 as far as I can tell Thanksgiving is basically "let's eat a bunch of stuff that's native to North America" 06:52:59 zzo38: well you definitely should know more than me already after all your experiments 06:53:16 zzo38, I wrote this code to try to show off your Barrier monad, sorry if it's horrible and ugly and evil 06:53:16 http://hpaste.org/54738 06:54:24 zzo38: i think i saw someone mention a monad essentially identical to the Barrier monad under a different name on some haskell forum recently. i've forgotten what the name was, though. 06:54:38 so it's not completely unknown 06:55:22 Sgeo: At least it works; I don't know if it is horrible and ugly and evil but it is a simple demonstration (simpler than many things you could do with this library) 06:56:11 zzo38: Sgeo: oh yes that is very analagous to Python coroutines. 06:56:16 I'm assuming more could be done though 06:56:24 i come to think of it, shouldn't there be a way to split the Barrier monad into two transformers, one for each part? 06:56:40 kallisti, can you put yield into a function in Python and call that function and have it work sensibly? 06:56:50 Sgeo: yes. 06:56:56 fsvo sensibly 06:56:57 oerjan: Yes, I thought of that someone else might have done similar things, anyways that happens a lot in mathematics (and programming in Haskell involves much about mathematics) 06:57:22 yeah 06:59:12 Sgeo: http://pastebin.com/j732vmzF 06:59:37 it's also possible to throw exceptions into a coroutine from other code. 06:59:43 g = generate(10) 06:59:50 g.throw(SomeException) 06:59:58 Not quite what I meant 07:00:07 oerjan: And yes I suppose I also know more about the Astrolog and what all that stuff means since I have used most of its features (except the biorhythms and the interpretation mode used for Agora; I don't care for those), and so on... I configured the file to use different defaults, such as degrees instead of zodiac signs, Campanus instead of Placidus, and so on 07:00:09 what did you mean then? 07:00:13 As in, can you encapsulate complex yield code and use that in place of the yield keyword? 07:00:21 To make a generator 07:00:59 well, calling the function produces the generator, with some plumbing it's possible but it's not implicit. 07:01:00 -!- Darth_Cliche has quit (Quit: You are now graced with my absence.). 07:01:32 I do know how generator functions work in JavaScript. Any function containing "yield" is a generator function, and it returns a Generator object when called (not doing anything yet). When you call the next or send methods of the generator function, it runs until yield, at which point the next or send method returns the value being yield and send(x) will cause the yield to x 07:01:39 for my MUD I was actually working on a menu system that maintained a stack of coroutines. when the top coroutine is exhausted it would pop off and go back to the previous one. 07:01:47 sheesh my nose tip got all scaly from blowing my nose 07:02:00 despite putting on lots of lotion 07:02:01 zzo38: yes that's how it works in Python 07:02:08 with the addition of a throw method that allows you to signal exceptions. 07:02:10 You could make it yourself without using yield; that is possible too (you simply need to return an object with the correct methods) 07:02:21 kallisti: JavaScript generator functions have that too. 07:03:14 Sgeo: i assume to work properly inside functions, yield needs to encapsulate a continuation 07:03:37 also menu coroutines could do things like manipulate the menu stack or defer to previous menu (without actually being consumed) 07:04:01 but essentially if the courtine yielded a new generate then the system pushed the new generator onto the stack, so it was fairly natural to write nested menu code. 07:04:02 but maybe not a completely arbitrary one 07:04:15 *generator 07:05:12 it was pretty neat, but I never actually finished the MUD codebase 07:05:18 mainly because I was doing pointless stuff like that. 07:06:18 in any case, it would be possible to abstract that sort of nested coroutine system into one coroutine. 07:06:55 the controller coroutine is the outside interface, and delegates input/output to the coroutines in the stack that it maintains. 07:08:32 can barrier monads do anything like that? 07:08:39 05:17:29: zzo38: yes it's 04:18 LST here 07:08:43 I mean, in there current state. 07:08:47 I don't doubt the possibility 07:09:19 apparently tunes also uses sidereal time. 07:09:22 I think the Haskell code using the library that I wrote, which is like the Python code example posted, would be like this: generate i = yield i >>= generate . maybe (succ i) id; 07:09:46 oerjan: Are you sure? 07:10:08 zzo38: it was a joke by the fact it was at almost the same minute, and tunes _does_ have a broken clock 07:10:26 oh wait 07:10:32 scratch that 07:10:38 kallisti: You probably can do something like that in Haskell somehow, using barrier monads, possibly using the BarrierT (the monad transformer for barrier monad) 07:10:53 zzo38: how does generate work? 07:10:54 i was pasting codu :P 07:11:23 kallisti: It is like the Python example code you posted: http://pastebin.com/j732vmzF 07:11:32 right but how does it actually work. :P 07:11:47 Is crosstalk actually useful? >.> 07:11:58 zzo38: oh 07:12:00 I'm blind 07:12:02 zzo38: :P 07:12:04 disregard 07:12:06 Sgeo: I don't know but I think you suggested that to me isn' it? 07:12:13 zzo38: "help what is recursion" 07:12:23 zzo38, I'm just wondering if what I suggested might be completely useless 07:13:01 Sgeo: Well, I don't know; maybe someone will find a use for it, either for computer programming or for mathematical use. 07:13:14 zzo38: I'm thinking an explicit stack is unecessary 07:13:26 but... maybe it is? 07:13:34 05:56:49: Toponymy is the scientific study of place names (toponyms), their origins, meanings, use and typology. A toponymist is one who studies toponymy. 07:13:37 05:57:57: itidus21: The apple is the pomaceous fruit of the apple tree, species Malus domestica in the rose family (Rosaceae). It is one of the most widely cultivated tree fruits, and the most widely known of the many members of genus Malus that are used by humans. Apple grow on small, deciduous trees that blossom in the spring and produce fruit in the fall. 07:14:06 zzo38: maybe it just be handled with simple recursion? 07:14:07 incidentally, the city name Almaty originally means "father of the apple" 07:14:10 iirc 07:14:31 kallisti: Probably it can be done without an explicit stack; recursion probably works OK 07:14:48 zzo38: maybe with >> even 07:15:58 oh wait it's apparently the older Alma-Ata form which means that 07:16:37 http://en.wikipedia.org/wiki/Almaty#Toponymy 07:17:04 f x = yieldSomeStuff >> (if someCondition then (>> f x) else id) barrier2 07:17:07 kallisti: Yes, you can use >> if you don't need the back values. Or whatever other values there are when using BarrierT with other monads too 07:18:33 (Almaty is still related to apples.) 07:18:36 Yes I suppose that is another way, too. 07:18:57 (>> f x)? 07:19:10 Hmm 07:19:11 Sgeo: yes, I'm so cool. 07:19:17 CONDITIONAL FUNCTIONS DUDE 07:19:19 way of the future. 07:19:22 hmmm, these peanuts are still kind of crunchy. <-- WHY WOULD SOMEONE WANT NON-CRUNCHY PEANUTS, IT MAKES NO SENSE 07:19:34 oerjan: because they're boiled and thus soft and salty and delicious. 07:19:48 mmmm boiled pnuts 07:19:54 BUT BUT THEY'RE NOT _CRUNCHY_ SO IT'S ALL MEANINGLESS 07:20:04 quintopia: I misread that in the obvious fashion. 07:20:04 dude boiled > roasted 07:20:07 crazy murricans 07:20:08 any day. 07:20:21 roasted is all dry and gross 07:20:25 oerjan: you are wrong 07:20:28 go eat some actual nut 07:20:37 like cashew (hahaha get it because it's not an actual nut?) 07:20:43 eek i have unleashed the american hordes 07:20:57 no just the georgia hordes 07:21:00 oerjan: boiled peanuts aren't even really a completely American thing. 07:21:01 ah 07:21:18 I could probably tell a New Yorker to eat some boiled peanuts and they'd be like "wat" 07:21:26 but yeah dont knock it til youve tried it man 07:21:53 oerjan: it's just common in places where peanuts are grown. mainly in the south. 07:21:59 georgi is the peanut state. we get to decide what peanuts are best 07:22:20 we actually don't grow the kind of peanuts that are supposedly best for boiling 07:22:30 Valencia is supposed to be better than Runners. we grow Runners. 07:23:11 oerjan: eating boiled peanuts is kind of like... eating some kind of shellfish 07:23:20 but with peanut instead of fish meats. 07:23:21 i dont actually know anything about peanuts 07:23:22 so 07:23:25 you lost me there 07:23:31 oerjan: Roasted is by far the more common thing in America. 07:23:33 oh well it's probably all that crazy mad scientist GWC's fault 07:23:41 yeah man 07:23:45 gwc is the shit 07:24:06 mad peanut scientists... 07:24:12 Peanut butter, fuck yeah. 07:24:18 he'd have invented more but he disappeared in his peanut oil powered time machine 07:24:30 oerjan: peanut oil is awesome btw 07:24:33 but the best mad food scientist is clearly robert c baker 07:25:32 kallisti: lets ship oerjan some boiled peanuts in a can. i know its not as good as fresh, but maybe it would be enough to sway him? 07:25:41 quintopia: it's a shame that oerjan probably doesn't know the joy of deep-fried chicken in peanut oil. 07:25:44 quintopia: sounds like a fowl guy 07:25:45 quintopia: per. haps 07:26:13 ill buy the can if youll cover shipping 07:26:20 asshole 07:26:36 Incidentally, oerjan, "deep-fried *" is as American as you can get. 07:27:33 pikhq_: also scottish, i hear 07:27:44 they borrowed it from us. :P 07:27:44 Yeah. 07:28:07 quintopia: you've had chik-fil-a yes? 07:28:58 apparently they're like... common in many US states now. 07:29:34 Some people have issues with funding anti-gay organisations, though. 07:29:57 pikhq_: I knew they were Christian based but not anti-gay 07:30:00 sometimes you have to think how many things we take for granted were actually invented by someone 07:30:12 (nearly all of them) 07:30:16 oerjan: woah dude 07:30:20 I had never thought of it that way. 07:30:28 * kallisti mind blown. 07:30:51 kallisti: They're *American* Christian based. The only Christians in America that are in any way loud about it hate gay people so much. (and, of course, make regular trips to the nearest gloryhole) 07:31:29 looooooool 07:31:40 * kallisti consults the yellow pages for the nearest gloryhole. 07:32:01 * kallisti googled for: gloryholes near Jasper, GA 07:32:01 sic transit gloria mundi 07:33:04 hmmm "glory hole rock shop" in Jasper, GA 07:33:07 not quite what I wanted. 07:33:16 also what is a "rock shop" 07:33:37 kallisti: yes i have had chik-fil-a 07:33:42 i dont anymore tho 07:34:02 because of what pikhq said 07:37:17 also i hate their marketing dept forever 07:37:41 heh 07:37:52 bbef iz sketchy eh? 07:38:22 fuck no. mechanically separated chicken is 07:47:26 "Sketchy" understates. 07:50:52 kallisti, UPDOOT 08:00:25 anyone else like starcraft2? 08:02:43 -!- zzo38 has quit (Remote host closed the connection). 08:31:05 -!- GreaseMonkey has quit (Quit: The Other Game). 08:34:10 kallisti: just post the question to reddit.com/r/doesanybodyelse >:) 08:54:48 @hoogle forkIO 08:54:49 Control.Concurrent forkIO :: IO () -> IO ThreadId 08:54:49 GHC.Conc.Sync forkIO :: IO () -> IO ThreadId 08:54:49 GHC.Conc forkIO :: IO () -> IO ThreadId 08:58:04 > forever . putStrLn $ "Hello, World!" 08:58:05 Ambiguous type variable `b' in the constraint: 08:58:06 `Data.Typeable.Typeable b... 08:58:22 what's up with this? 09:00:11 :t forever . putStrLn 09:00:14 forall b. String -> IO b 09:00:37 ah right, it's because of the ambiguous result type 09:00:46 oerjan: works fine in ghci though. 09:00:50 > forever . putStrLn $ "Hello, World!" :: IO () 09:00:52 09:01:05 does ghci assume IO () or something? 09:01:13 kallisti: it's because ghci doesn't do a typeclass check on b 09:01:15 i think 09:01:36 because it doesn't have a Show instance for IO 09:01:36 why does lambdabot? 09:01:39 oh. 09:01:49 aaaaaah 09:02:00 while lambdabot uses Typeable b => Show (IO b) in order to print that thing 09:02:29 right 09:03:03 oerjan: is there any standard type that doesn't derive Typeable 09:03:07 ghci just runs the action, and possibly prints the result with the right option set 09:03:11 specifically one that lambdabot exposes? 09:03:22 hm 09:04:00 pretty much any type can derive typeable 09:04:05 :t typeRef 09:04:06 Not in scope: `typeRef' 09:04:07 so it would probably be hard to find. 09:04:28 kallisti: not if it has type arguments of kind not * 09:04:42 but you can still write a custom one then 09:04:49 :t typeRep 09:04:49 @hoogle a -> Int# 09:04:49 Prelude id :: a -> a 09:04:50 Data.Function id :: a -> a 09:04:50 GHC.Exts breakpoint :: a -> a 09:04:50 Not in scope: `typeRep' 09:04:57 argh 09:05:02 @src Typeable 09:05:02 Source not found. My brain just exploded 09:05:05 @hoogle Int -> Int# 09:05:06 Prelude (!!) :: [a] -> Int -> a 09:05:06 Data.List (!!) :: [a] -> Int -> a 09:05:06 Data.Sequence index :: Seq a -> Int -> a 09:05:20 @hoogle Typeable a => a -> b 09:05:21 Control.OldException throwDyn :: Typeable exception => exception -> b 09:05:22 Unsafe.Coerce unsafeCoerce :: a -> b 09:05:22 Data.Dynamic toDyn :: Typeable a => a -> Dynamic 09:06:12 > undefined :: IO (StateT IO Int) 09:06:13 `Control.Monad.Trans.State.Lazy.StateT GHC.Types.IO GHC.Types.Int' is not a... 09:06:27 oops 09:06:32 > undefined :: IO (StateT Int IO Int) 09:06:32 No instance for (Data.Typeable.Typeable1 09:06:33 (Control.Monad... 09:06:36 ah 09:06:40 kallisti: well that's one 09:06:52 um... StateT? 09:07:02 :k StateT 09:07:02 * -> (* -> *) -> * -> * 09:07:18 maybe it just doesn't have an instance? 09:07:25 as you see it has a * -> * argument, so cannot be derived, and nobody presumably bothered to make one 09:08:02 well let me check 09:08:37 > [1..10] 09:08:38 [1,2,3,4,5,6,7,8,9,10] 09:08:40 yeah looks like it 09:09:33 the new polymorphic kind extension will probably make it possible to derive any Typeable eventually 09:09:44 :t for 09:09:45 Not in scope: `for' 09:09:51 heh 09:09:58 seems strange to call it forM 09:10:00 when there's no for 09:10:03 i've been thinking sometimes that for seems to be missing :P 09:10:22 it would just be flip map, presumably 09:10:27 @let for = flip map 09:10:28 Defined. 09:10:29 oerjan: indeed 09:10:47 > for [1..10] (\x -> show x) 09:10:49 ["1","2","3","4","5","6","7","8","9","10"] 09:10:52 I am teh leet Python programmer 09:12:52 :t newIORef 09:12:53 Not in scope: `newIORef' 09:12:58 :t writeIORef 09:12:59 Not in scope: `writeIORef' 09:13:22 lambdabot: "no imperative programming allowed" 09:13:50 well you can use ST, i think 09:13:56 :t newSTRef 09:13:57 forall a s. a -> ST s (STRef s a) 09:14:19 ah good 09:18:27 :t runST 09:18:27 forall a. (forall s. ST s a) -> a 09:22:39 > let var = newSTRef; get = readSTRef; (*=) r n = modifySTRef r (*n); factorial n = runST $ do { x <- var 1; forM [1..n] (\i -> x *= i ); return (get x) } in factorial 5 09:22:39 Inferred type is less polymorphic than expected 09:22:40 Quantified type variable... 09:22:46 huh? 09:24:44 oerjan: help 09:27:51 > let var = newSTRef; get = readSTRef; (*=) r n = modifySTRef r (*n); factorial n = runST $ do { x <- var 1; forM [1..n] (\i -> x *= i ); get x } in factorial 5 09:27:52 120 09:28:59 oh... 09:29:02 :t readSTRef 09:29:03 forall s a. STRef s a -> ST s a 09:29:04 right. :P 09:30:01 > let var = newSTRef; return = readSTRef; (*=) r n = modifySTRef r (*n); factorial n = runST $ do { x <- var 1; forM [1..n] (\i -> x *= i ); returm x } in factorial 5 09:30:01 Not in scope: `returm' 09:30:06 > let var = newSTRef; return = readSTRef; (*=) r n = modifySTRef r (*n); factorial n = runST $ do { x <- var 1; forM [1..n] (\i -> x *= i ); return x } in factorial 5 09:30:07 120 09:30:20 probably the most elegant way to write factorial. 09:31:05 as a Python coder writing Haskell, I find that forM [1..n] (x *=) is a tad unreadable 09:31:11 x *= what exactly? 09:31:14 makes no sense. 09:31:48 As a corollary to "most elegant way to write factorial", 09:31:50 > let var = newSTRef; return = readSTRef; bestIdEver x = runST $ do { y <- var x; return y } in bestIdEver 42 09:31:51 42 09:33:28 yes quite nice. 09:34:04 of course a real Haskell programmer never leaves ST 09:34:16 If only (x *= ◌) were the same thing as (x *=), then it'd make sense; x *= the hole. 09:34:22 so really we should omit the runST and simply pass in STRefs 09:35:37 well, actually just omit the runST 09:35:50 passing STRefs would be if you want pass-by-reference 09:41:44 oerjan: fizzie: would be nice to have a Ref typeclass with the var function 09:41:50 instance Ref IO IORef where var = newIORef 09:42:18 though I think I like the name ref better. 09:42:39 Why are some things called Refs and others called Vars? 09:43:02 variable implies a syntactical feature 09:43:27 x = 2 09:43:46 x is the variable. YOu access via the syntax of the programming language, simply by writing its name. 09:44:10 An MVar is not any more syntactic than an IORef though. 09:44:15 That's great, except it doesn't explain why Haskell has MVars and TVars 09:44:19 oh right 09:44:30 dunno. different people write different code? :P 09:44:37 unless they're in the report 09:44:38 "MRef" sounds too much like a dog barking? 09:45:21 maybe if you're a norseman 09:45:44 Well, I mean, "arf!" 09:46:12 "mref mref mref!" 09:48:09 I wonder if anyone actually uses ST 09:49:26 It's funny how the descriptions of IORef and STRef both use the word "variable" ("A mutable variable in the IO monad", "a mutable variable in state thread") while neither of the descriptions for MVar and TVar do ("mutable location", "Shared memory locations"). 09:49:53 it would be better if MVar and TVar said "reference" 09:55:51 -!- oerjan has quit (Quit: leaving). 10:32:00 > deriv (\x -> x*sin(X^2 + 1)) 5 10:32:00 Not in scope: data constructor `X' 10:32:05 > deriv (\x -> x*sin(x^2 + 1)) 5 10:32:05 33.10852456691162 10:32:23 > deriv (\x -> x*sin(x^2 + 1)) (x :: Expr) 10:32:23 1 * sin (x * x + 1) + x * ((1 * x + x * 1) * cos (x * x + 1)) 10:33:10 if only it reduced properly... 10:33:41 > x + x == 2*x 10:33:42 False 10:33:46 :( 10:40:42 > x == x 10:40:43 True 10:40:46 :/ 10:40:50 > 1 * x == x 10:40:50 False 10:41:11 > 0 * x 10:41:12 0 * x 10:41:15 > x * 0 10:41:16 x * 0 10:41:49 Maybe == should just be undefined 10:41:52 > x > y 10:41:53 False 10:41:59 > x < y 10:41:59 True 10:42:09 Ords of genius. 10:43:36 Sgeo: well it kind of can't make sense unless Expr is demonstrating a particular kind of Num instance. 10:44:03 if all Num instances were fields, you could make a number of reductions that make two Exprs with different textual representations equivalent. 10:44:39 Huh, didn't think about that 10:48:50 but unless you do some pretty complicated symbolic reasoning you're not really going to get an Eq instance that comes anywhere close to basically determine if two arbitrary expressions are equal. 10:49:10 under the assumption that the Num instance that Expr is representing behaves like real numbers. 10:51:23 -!- monqy has quit (Quit: hello). 10:59:44 :t extract 10:59:45 forall source. (Extract source) => (Int, Int) -> source -> source 10:59:52 -!- ais523 has joined. 10:59:53 ..no 10:59:58 :t (=>=) 10:59:59 Not in scope: `=>=' 11:05:28 -!- ais523 has quit (Ping timeout: 258 seconds). 11:06:04 -!- ais523 has joined. 11:06:05 -!- ais523 has quit (Changing host). 11:06:05 -!- ais523 has joined. 11:08:19 > replicateM 3 "<>=" 11:08:20 ["<<<","<<>","<<=","<><","<>>","<>=","<=<","<=>","<==","><<","><>","><=",">... 11:08:24 They should have all of those. 11:09:05 ["<<<","<<>","<<=","<><","<>>","<>=","<=<","<=>","<==","><<","><>","><=",">><",">>>",">>=",">=<",">=>",">==","=<<","=<>","=<=","=><","=>>","=>=","==<","==>","==="] -- that's not such a long list. And I'm sure they can figure out some meanings for everyone. 11:09:21 For example <>< could make some fish swim across the screen. 11:13:11 <=> is compare ala Perl. 11:14:35 ><> makes the fishes go the other way. 11:15:27 :t deriv 11:15:28 forall a b. (Num a, Num b) => (Dif a -> Dif b) -> a -> b 11:15:34 I'm confused as to where this function comes from 11:15:38 I can't find it anywhere on the interwebs 11:18:05 http://hackage.haskell.org/packages/archive/numbers/2009.8.9/doc/html/Data-Number-Dif.html ? 11:22:52 ( http://holumbus.fh-wedel.de/hayoo/hayoo.html?query=%28Dif%20a%20-%3E%20Dif%20b%29%20-%3E%20a%20-%3E%20b ) 11:29:28 <<= and =<< are from Feather 11:29:48 retroactive and proactive assignment, respectively 11:30:03 (proactive assignment does nothing right now, but controls when in time a retroactive assignment happens) 11:31:23 > read "1" :: Dif Int 11:31:24 1~~ 11:32:00 > df $ read "1" :: Dif Int 11:32:00 0~~ 11:32:06 er 11:32:15 > df (read "1" :: Dif Int) 11:32:16 0~~ 11:32:18 okay. 11:34:04 >, ≫, ⋙; greater-than, much greater-than, very much greater-than; sadly I think that's where they gave up. (Though there is ⫸, the triple nested greater-than.) 11:35:17 Certainly there would have been more intensifiers to go with. Really very much greater-than, honestly really very much greater-than, I'm not even kidding how much greater-than, etc. 11:35:22 > iterate df (sin (dVar pi :: Dif Expr)) 11:35:23 [sin pi~~,1 * cos pi~~,1 * (1 * negate (sin pi))~~,1 * (1 * (1 * negate (co... 11:35:40 > map val $ iterate df (sin (dVar pi :: Dif Expr)) 11:35:41 [sin pi,1 * cos pi,1 * (1 * negate (sin pi)),1 * (1 * (1 * negate (cos pi))... 11:36:12 the value, first derivative, second derivative, etc 11:37:15 -!- Phantom_Hoover has joined. 11:39:36 > map val $ iterate df (sin (dVar x)) 11:39:37 [sin x,1 * cos x,1 * (1 * negate (sin x)),1 * (1 * (1 * negate (cos x))),1 ... 11:43:04 > let y = dVar x in map val $ iterate df (x^3 + x^2 + x + 5) 11:43:05 Couldn't match expected type `Data.Number.Dif.Dif a' 11:43:05 against inferr... 11:43:18 It would be better if it printed [sin x,cos x,negate (sin x),negate (cos x),sin x,cos x,even you,should be,able to,figure it,out by,now,...] 11:43:25 > let loly = dVar x in map val $ iterate df (x^3 + x^2 + x + 5) 11:43:26 Couldn't match expected type `Data.Number.Dif.Dif a' 11:43:27 against inferr... 11:43:35 fizzie: asshole :P 11:43:43 but yeah I agree. 11:43:48 I HAVE TALKED ABOUT THIS PREVIOUSLY 11:44:03 > (sin x * sin x) + (cos x * cos x) 11:44:04 sin x * sin x + cos x * cos x 11:44:08 About making the bot more of an asshole? Yes, I think it would fit in better here. 11:44:30 > deriv (\a -> (sin a * sin a) + (cos a * cos a)) x 11:44:31 1 * cos x * sin x + sin x * (1 * cos x) + (1 * negate (sin x) * cos x + cos... 11:44:58 > let y = dVar x in map val $ iterate df (y^3 + y^2 + y + 5) 11:44:59 [x * x * x + x * x + x + 5,(1 * x + x * 1) * x + x * x * 1 + (1 * x + x * 1... 11:45:06 gross/ 11:45:17 > let y = dVar x in map val $ iterate df (y^2 + y + 5) 11:45:18 [x * x + x + 5,1 * x + x * 1 + 1,1 * 1 + 1 * 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,... 11:49:00 All those are so begging for a Mathematica FullSimplify[]. 11:49:09 Or "FoolSimplify", as we tend to call it. 11:49:12 Well, tended. 11:50:03 :t let nDerivs f x = succ . length . takeWhile (/= 0) . iterate df $ (f (dVar x)) = dVar x in nDerivs 11:50:04 parse error on input `=' 11:50:11 :t let nDerivs f x = succ . length . takeWhile (/= 0) . iterate df $ (f (dVar x)) in nDerivs 11:50:12 forall a a1. (Num a, Num a1) => (Dif a -> Dif a1) -> a -> Int 11:50:35 :t let nDerivs f x = succ . length . takeWhile (/= 0) . iterate df $ (f (dVar x)) in nDerivs (\x -> x^2) 11:50:36 forall a. (Num a) => a -> Int 11:50:42 > let nDerivs f x = succ . length . takeWhile (/= 0) . iterate df $ (f (dVar x)) in nDerivs (\x -> x^2) 11:50:45 Overlapping instances for GHC.Show.Show (a -> GHC.Types.Int) 11:50:45 arising fro... 11:50:50 oh... 11:51:03 > let nDerivs f x = succ . length . takeWhile (/= 0) . iterate df $ (f (dVar x)) in nDerivs (\x -> x^2) 5 11:51:04 4 11:51:10 > let nDerivs f x = succ . length . takeWhile (/= 0) . iterate df $ (f (dVar x)) in nDerivs (\x -> x^2) 0 11:51:11 1 11:51:19 so it might not be accurate when you pass 0 :P 11:51:39 > let nDerivs f x = succ . length . takeWhile (/= 0) . iterate df $ (f (dVar x)) in nDerivs (\x -> x^2) 1 11:51:40 4 11:52:17 > (0 :: Expr) == 0 11:52:17 True 11:52:49 > let nDerivs f = succ . length . takeWhile (/= 0) . iterate df $ (f (dVar x)) in nDerivs (\x -> x^2) 11:52:51 4 11:52:54 there we go. 11:53:00 @let nDerivs f = succ . length . takeWhile (/= 0) . iterate df $ (f (dVar x)) 11:53:01 Defined. 11:53:08 > nDerivs (^3) 11:53:09 5 11:53:13 > nDerivs sin 11:53:17 mueval-core: Time limit exceeded 11:54:35 > nDerivs (const 1) 11:54:36 2 11:54:42 erm 11:55:13 > iterate df (const 1 (dVar x)) 11:55:14 [1~~,0~~,0~~,0~~,0~~,0~~,0~~,0~~,0~~,0~~,0~~,0~~,0~~,0~~,0~~,0~~,0~~,0~~,0~... 11:55:25 oh, okay. 11:55:39 right, I want it to count the first 0. 11:58:22 er, no... 11:58:25 not right. 11:58:30 @undefinee 11:58:31 @undefine 11:58:35 @unlet 11:58:36 Defined. 11:58:37 @halp 11:58:37 help . Ask for help for . Try 'list' for all commands 11:58:49 @help undefine 11:58:50 undefine. Reset evaluator local bindings 11:59:15 @let nDerivs f = length . takeWhile (/= 0) . iterate df $ (f (dVar x)) 11:59:16 Defined. 11:59:23 > nDerivs (const 2) 11:59:24 1 11:59:26 much better. 11:59:34 > nDerivs (^2) 11:59:36 3 12:15:00 @let (++) = mappend 12:15:01 :3:0: 12:15:01 Multiple declarations of `L.++' 12:15:01 Declared at: .L.hs:97... 12:15:06 > (++) 12:15:06 Overlapping instances for GHC.Show.Show (m -> m -> m) 12:15:06 arising from a use... 12:15:11 :t (++) 12:15:12 forall m. (Monoid m) => m -> m -> m 12:15:26 :t nDerivs 12:15:27 forall a. (Num a) => (Dif Expr -> Dif a) -> Int 12:17:39 -!- Patashu has quit (Quit: MSN: Patashu@hotmail.com , Gmail: Patashu0@gmail.com , AIM: Patashu0 , YIM: patashu2 , Skype: patashu0 .). 12:24:12 -!- Phantom_Hoover has quit (Ping timeout: 248 seconds). 12:40:12 -!- Phantom_Hoover has joined. 13:02:08 -!- zzo38 has joined. 13:06:44 -!- boily has joined. 13:12:12 -!- Phantom_Hoover has quit (Ping timeout: 248 seconds). 13:13:42 -!- Patashu has joined. 13:13:52 I'm staying up to solve this http://www.canyoucrackit.co.uk/15b436de1f9107f3778aad525e5d0b20.js my life is interesting 13:14:35 -!- Taneb has joined. 13:23:02 -!- Phantom_Hoover has joined. 13:37:14 -!- Patashu has quit (Quit: MSN: Patashu@hotmail.com , Gmail: Patashu0@gmail.com , AIM: Patashu0 , YIM: patashu2 , Skype: patashu0 .). 13:37:24 -!- Phantom_Hoover has quit (Ping timeout: 244 seconds). 13:44:51 Hello 13:48:15 hi! 13:48:27 How are you, boily? 13:50:38 -!- Phantom_Hoover has joined. 13:51:28 Hello, Phantom_Hoover 13:58:18 -!- ais523 has quit (Ping timeout: 244 seconds). 13:58:49 -!- ais523 has joined. 14:08:31 Once, I was in a hotel, they required keycards for the elevator but I didn't have any so I went to the top floor by stairs and knocked on the door (it is my hotel room, but some other people too, and they had the keycard). And if any hotel has elevator that requires a keycard and then you only go to your floor, then it makes it less secure than one that does not require a keycard 14:12:30 Once, I was in a hotel, booked under the name of "random" 14:16:12 -!- Phantom_Hoover has quit (Ping timeout: 248 seconds). 14:24:16 Quite often the doors in the stairwell that lead to the actual floors also require a keycard. 14:26:13 Once I worked at a place where you would get trapped in the stairwell if you forgot your card; the door from the offices to the stairs could be opened with a button from the inside, but the exit door at the bottom required a card always. I have a vague feeling that's against all kinds of emergency exit rules and whatnot. 14:26:54 Normally those things are always constructed so that if you forget the key, you can at least exit the building. 14:27:08 (And then freeze to death outside, but that's not relevant.) 14:27:46 In the place I was in, a keycard was not required to open the doors in the stairwell. 14:29:03 -!- Phantom_Hoover has joined. 14:47:33 Oh dear, I am become join spam. 14:48:19 lambdabot: Any spammy, useless messages for me? 14:49:22 how is it december help 14:49:29 2011, we hardly knew ye. 14:49:53 Dungeons of Dredmor just crashed 14:51:18 Does it print out "Suddenly, the dungeon collapses" too? 15:03:30 Why can I not access this? http://www.freesoftwaremagazine.com/articles/encouraging_next_generation_hackers_part_1_raspberry_pi_25_computer 15:12:08 Taneb: linux? 15:12:14 Taneb: and segfault? 15:12:17 Vorpal, yes 15:12:26 And maybe, what do they look like? 15:12:29 Taneb: if so there is a patch to the data files that might help (helped for me). Let me find the link 15:13:36 Taneb: http://community.gaslampgames.com/threads/statue-of-inconsequentia-crash.1318/ (for me it happened when changing dungeon level) 15:13:59 there is a patch a bit down 15:14:06 (post #4) 15:14:38 Does it print out "Suddenly, the dungeon collapses" too? <-- for me it just plain segfaulted 15:23:39 Suddenly, the dungeon segfaults! 15:30:24 wow I apparently didn't have the network package installed. 15:30:28 shows you how much Haskell I've been programming.. 15:31:08 hmmm, I still get these really weird linker errors from importing Network.Socket 15:31:12 dunno what's up with that. 15:36:24 does anyone else find Network.Socket a little cumbersome? 15:37:55 Taneb: did it work? 15:38:26 Can't find the install directory.. 15:39:28 -!- copumpkin has quit (Quit: Leaving...). 15:39:37 -!- copumpkin has joined. 15:45:14 "Shopping for a Dyson DC25 Ball All-Floors Upright Vacuum Cleaner might not appear like a big deal, however it does require a bit of planning." 15:45:54 aha: "Probably you aspire to realize what is certainly my favourite [http://google.com internet search engine]." 15:46:00 the spambots spamming Google are back again 15:46:33 (as in, advertising Google) 16:03:47 -!- Taneb has quit (Quit: Leaving). 16:12:25 -!- elliott has joined. 16:13:04 22:22:05: Just noticed my email in my account settings was 0.034064395384923 I asume that was the issue. 16:13:06 ais523: context? 16:13:21 elliott: the phpBB gone mad 16:13:28 thought so 16:13:35 * elliott tries to figure out how that could possibly work 16:13:43 where it changed all the posts into md5 hashes, it apparently changed email addresses into (double-precision, by the look of it) floating point numbers 16:14:05 (it's unclear what they're md5 hashes /of/, btw; kind-of hard to reverse them) 16:14:08 :D 16:14:13 did you try googling them? 16:14:19 I picked one at random, no results 16:14:22 I didn't google any others 16:15:32 hrm 16:15:38 why did I get an email sent to all employees 16:15:50 -!- derrik has joined. 16:16:10 perhaps you are an employee 16:16:47 -!- Slereah has joined. 16:18:17 -!- Slereah_ has quit (Ping timeout: 240 seconds). 16:18:27 sending an email to all employees would be impressive 16:18:38 almost like sending an email to every internet user, just slightly less global 16:18:38 elliott: No, I pay them. 16:18:56 presumably sending an email to absolutely everyone would be the easiest way to accomplish an "email-all-employees" requirement 16:19:00 (them being the university) 16:19:30 ais523: that would be fun to try 16:22:29 ais523: You'd also need to get them all email addresses 16:22:47 coppro: that's trivial 16:22:50 MWAHAHAHA, IN HWN AGAIN 16:22:54 sending them their logins would be the hard part 16:23:27 ais523: Why not just make an email address for everyone? 16:23:52 > fix . (++) $ "hi" 16:23:53 "hihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihi... 16:23:54 coppro: that's what I was implying 16:24:05 hmm, github's language detection is rather imperfect 16:24:10 the hard part being, giving everyone access to their account 16:24:21 ais523: just let everyone access every account 16:24:29 #ifdef USE_DIRECT3D 16:24:29 glClear(GL_COLOR_BUFFER_BIT); 16:24:29 #endif 16:24:33 this seems so very wrong 16:24:36 Vorpal: :D 16:24:36 elliott: then how is it an account specific to the person? 16:24:46 Vorpal: awesome, please give more context 16:24:48 ais523: nobody would stop calling personal email just because there's a backdoor! 16:24:56 ais523: can't. Darwinia source code. 16:24:57 ais523: they might claim it's a /bad/ personal email service, though 16:25:03 Vorpal: err, not in the code itself 16:25:13 but as to why that's written 16:25:29 (I'm guessing that there's some sort of OpenGL/Direct3D wrapper that can call either, and is based on OpenGL function names) 16:25:38 elliott: anyway I gave up getting darwinia to compile... Linux implementation files are way out of date with shared headers (like when there is foo_win.cpp and foo_sdl.cpp) 16:25:47 but as to why that's written <-- don't know yet 16:26:02 Vorpal: I bet AII compiles perfectly on Linux. 16:26:14 elliott: give me the source right now then 16:26:27 Vorpal: Nobody can do that; light speed, dude. 16:26:38 elliott: well within 10 minutes 16:26:41 You can't even access Darwinia's code instantly. 16:26:44 > let fixify f = fix . f; repeat = fixify (:); cycle = fixify (++); forever = fixify (>>) in fixify 16:26:45 Overlapping instances for GHC.Show.Show (f (a -> a) -> f a) 16:26:45 arising from... 16:26:49 :t let fixify f = fix . f; repeat = fixify (:); cycle = fixify (++); forever = fixify (>>) in fixify 16:26:50 forall (f :: * -> *) a. (Functor f) => f (a -> a) -> f a 16:26:57 Vorpal: What, so if it's bigger than you can download in 10 minutes it doesn't count? 16:27:23 elliott: no to the start of downloading. I expect the rest within at most a few days 16:27:30 anything more is just silly 16:27:43 Vorpal: I refuse to let my reputation depend on the reliability of your internet connection 16:27:49 @hoogle (Functor f) = 16:27:49 Parse error: 16:27:49 (Functor f) = 16:27:49 ^ 16:27:55 @hoogle (Functor f) => f (a -> a) 16:27:55 Data.Generics.Schemes everywhereBut :: GenericQ Bool -> GenericT -> GenericT 16:27:55 Data.Generics.Aliases unGQ :: GenericQ' r -> GenericQ r 16:27:55 Data.Generics.Twins gzipWithT :: GenericQ (GenericT) -> GenericQ (GenericT) 16:28:00 kallisti: impossible 16:28:09 wat 16:28:14 Functor provides no way to get an f a for any a 16:28:24 without already having an f b and a (b -> a), ofc 16:28:28 :t pure id 16:28:29 forall a (f :: * -> *). (Applicative f) => f (a -> a) 16:29:57 elliott: well obviously it's not unpossible because I just used 3 functions that satisfy that type. I assume you mean it's impossible to generally do that. 16:30:28 ais523: there seem to be no such wrappers 16:30:33 there is no value foo :: (Functor f) => f (a -> a) 16:30:35 I was hoogling for functions I could fixify as above. 16:30:38 ais523: it just makes no sense 16:30:42 Vorpal: they'd probably be in a third-party library 16:30:44 your type was (Functor f) => f (a -> a) -> f a 16:30:50 ais523: well I looked in lib/ 16:30:51 correct 16:30:56 it could be a typo for ifndef, I guess 16:31:01 kallisti: anyway, that's just because lambdabot (.) = fmap 16:31:10 correct. 16:31:17 but I doubt it, or the d3d version wouldn't even compile with the typo in, so it'd have been caught easily 16:31:32 Vorpal: um, maybe the Direct3D version just uses OpenGL for some things? 16:31:53 :t let fixify f = fix Prelude.. f; repeat = fixify (:); cycle = fixify (++); forever = fixify (>>) in fixify 16:31:54 forall a a1. (a -> a1 -> a1) -> a -> a1 16:31:58 ais523: arguable, considering the code doesn't compile on linux in the first place 16:32:01 elliott: maaybe. But I'm pretty sure that mixing them is in general a bad idea and unlikely to work 16:32:16 elliott: it'd have happened on every platform, unless that bit's Linux-specific too 16:32:24 it was shared 16:32:24 @@ @hoogle @type let fixify f = fix Prelude.. f; repeat = fixify (:); cycle = fixify (++); forever = fixify (>>) in fixify 16:32:25 Data.IntMap fold :: (a -> b -> b) -> b -> IntMap a -> b 16:32:26 Data.IntMap foldr :: (a -> b -> b) -> b -> IntMap a -> b 16:32:26 Data.IntMap foldr' :: (a -> b -> b) -> b -> IntMap a -> b 16:32:33 ais523: USE_DIRECT3D would not be set on Linux 16:32:43 elliott: it was in the classical software raytrace loading screen of darwinia 16:32:46 ais523: I'm just saying that the code obviously has errors not in the released binaries for whatever reason 16:32:46 if you remember that one 16:32:57 elliott: ah, OK 16:33:05 @hoogle (a -> a1 -> a1) 16:33:05 Prelude seq :: a -> b -> b 16:33:05 GHC.Conc.Sync par :: a -> b -> b 16:33:05 GHC.Conc par :: a -> b -> b 16:33:20 kallisti: flip const 16:34:07 what does seq do, and is it something incredibly unhaskellish? 16:34:16 you know what seq does 16:34:24 -!- derrik has quit (Quit: reconnect). 16:34:29 ais523: it's kind of unhaskellish? 16:34:33 either that, or are on a campaign to wilfully forget as much Haskell as possible :P 16:34:40 elliott: well, the obvious meaning is "force a and return b" 16:34:41 ais523: seq _|_ a = _|_; seq a b = b 16:34:46 ah, OK 16:34:47 that's not its meaning 16:34:53 (force a and return b) 16:34:57 it does break parametricity a bit though 16:34:59 -!- derrik has joined. 16:35:06 but not unsalvagably 16:35:09 I was thinking "a can't possibly have a side effect, so how would seq be different from flip const" 16:35:20 and the answer is that it's an infinite-loop-checker? 16:35:23 it does have a side effect of sorts. 16:35:31 kallisti: no, it doesn't 16:35:35 _|_ isn't a side-effect 16:35:35 now I'm just trying to work out why it'd be useful 16:35:41 ais523: it's not an infinite loop checker 16:35:45 ais523: it's _|_ if either argument is bottom 16:35:47 else the right argument 16:36:01 elliott: forcing the evaluation of a thunk is pretty side-effecty 16:36:07 well, bottom = infinite loop or exception 16:36:07 kallisti: there are no thunks 16:36:15 elliott: ah, of course. 16:36:16 kallisti: by that definition, beta-reduction is a side-effect 16:36:22 because it mutates the thunk in many implementations 16:37:55 ais523: anyway, it's useful because seq is strict in both of its arguments 16:37:58 elliott: well it forces a in a context where it would not normally be forced. 16:38:04 as opposed to flip const, which is strict in only its latter 16:38:12 kallisti: "not normally"? plenty of functions are strict in both their arguments 16:38:17 seq is just the only polymorphic one 16:38:18 elliott: oh, so in practice it makes the code run faster by being strict? 16:38:22 elliott: yes, those functions do things to their arguments 16:38:26 (strictness doesn't always speed up code, but can do in some contexts) 16:38:26 elliott: seq only "does things" to one of them. 16:38:34 ais523: that's why you would use it, yes 16:38:41 ais523: it's a common misconception that seq must evaluate its first argument first 16:38:44 but that's not guaranteed at all 16:38:47 GHC provides pseq for that purpose 16:39:04 elliott: it can evaluate the second argument, then the first, then return the second, I guess 16:39:06 (some people think it /should/ guarantee that, but that breaks even more properties :)) 16:39:13 and that's the only other possible evaluation order 16:39:13 ais523: indeed. and GHC sometimes _does_ do this. 16:39:21 kallisti: wrong; id is strict in its argument too 16:39:33 elliott: ... -_- 16:39:35 seq "does the same thing| to both its arguments 16:39:36 " 16:39:43 i'm not being purposefully dense, you're just wrong 16:40:13 elliott: under normal Haskell semantics, if you accept two arguments and return the second one, the first one is never evaluated 16:40:16 with seq it is.. 16:40:17 elliott: happy? 16:40:31 elliott: id is irrelevant because it returns its one argument 16:40:42 kallisti: actually no, the first one could be evaluated too. but you are still wrong even ignoring that: 16:40:50 all you are saying is that (\a b -> b) is not strict in its first argument 16:40:56 yes 16:40:58 because that is the only such function that meets your criteria 16:41:00 that is what I'm saying. 16:41:05 but nobody claimed seq was like (\a b -> b) "but special" 16:41:18 elliott: ...is it not? 16:41:22 also, "doing something special" is not a side-effect. 16:42:07 @src seq 16:42:07 Source not found. You untyped fool! 16:43:36 elliott: is there any observable difference between id being strict and id being lazy? 16:43:39 help where's the part where seq only uses un-side-effectful Haskell code to do what it does. 16:43:43 ais523: id can't possibly be lazy 16:43:56 kallisti: similarly, (+) on Int has side-effects, because you can't implement it in Haskell 16:44:01 in fact -- brace yourself 16:44:05 EVERY PRIMITIVE HAS SIDE-EFFECTS! 16:44:11 elliott: well, lazy id would do the say thing as strict id, right down to evaluation order 16:44:12 Turns out Haskell is impure because kallisti is an idiot. 16:44:18 elliott: that is not what I meant. 16:44:21 ais523: no, it wouldn't; there is no lazy id, there are no lazy functions of type (a -> a) 16:44:21 so the two are the same 16:44:25 ais523: it's an incoherent question 16:44:43 elliott: have you seen the hardware implementation of call-by-name id? it is quite undeniably lazy 16:44:57 ais523: no shit, "lazy" changes meanings in different evaluation orders 16:45:06 ah, OK 16:45:07 ais523: but call-by-name is a valid strategy for Haskell too 16:45:11 ais523: id is still strict in it 16:45:23 elliott: side-effects involve modifying state that is not part of the result of the expression. seq does this. clearly (+) does not do that. 16:45:27 you can't /observe/ its supposed "laziness" at all 16:45:34 and it's the semantics that matter, not the operations 16:45:35 elliott: except with a multimeter, right 16:45:46 kallisti: seq DOES NOT MODIFY ANY STATE 16:46:01 you can implement haskell in fucking term rewriting 16:46:04 where there is no 16:46:04 mutable 16:46:05 arguably, I'd say that id is both strict /and/ lazy 16:46:05 state 16:46:11 ais523: id _|_ = _|_ 16:46:13 ais523: Q.E.D. 16:46:27 elliott: seq would still be a side-effect in those circumstances. 16:46:41 kallisti: you do not understand what a side-effect is. 16:47:10 elliott: well, "lazy id" is always forced instantly; that's why it's the same as being strict 16:47:33 ais523: you're bringing details like "force" into it that don't exist at this layer 16:47:33 aren't all unary operators either strict, or ignore their argument, with your definition? 16:47:40 elliott: I think you just have a very weird notion of what a side-effect is. 16:47:43 ais523: of course 16:47:50 ais523: if you don't ignore an argument, you force it 16:47:57 ah, OK 16:48:03 elliott: clearly seq makes an /observable/ difference to the operational semantics of the program that /has nothing to do with its return value/ 16:48:13 anyway, I agree with your definition of "strict", but am not convinced it's the opposite of "lazy" 16:48:18 kallisti: ah! what you mean is that since 16:48:20 seq a b 16:48:21 isn't the same as b 16:48:24 seq has a side-effect 16:48:26 by the same token 16:48:27 a+1 16:48:29 is not the same as a 16:48:32 elliott: uh, what? 16:48:34 therefore, again (+) on Int has a side-effect! 16:48:36 OMG! 16:48:38 no. I'm sorry, but you're stupid. 16:48:47 kallisti: but seriously though, you can stop bothering, because you're... wrong 16:48:57 and have no idea what you're talking about 16:48:58 so 16:48:58 yeah 16:49:10 elliott: nice strawman though. "oh you actually meant this. now I will demonstrate that what I said is wrong." 16:49:22 hey guys, I heard I/O is relevant to the definition of turing completeness 16:49:29 it's not. 16:49:47 reaaaaaaally? I think I'll argue the issue for a few hours with people who know more about the topic than me 16:49:58 elliott: and this is relevant to what we're talking about how? 16:50:09 elliott: it basically just sounds like a personal attack to me. how silly. 16:50:18 kallisti: I think your problem is, that seq a b is designed to calculate a value depending on both a and b; the fact that the value is always the same as b, doesn't change the fact that it depends on a 16:50:25 the relevance is that you should really just drop it before this log becomes more personally embarrassing to you in the future 16:50:28 it wasn't intended as an argument 16:50:30 you could implement seq on integers as seq i j = (i-i) + j 16:50:48 ais523: I've occasionally explained seq as just magically knowing the constructors of every data-type 16:50:49 and looking like 16:50:52 seq (A_ ) x = x 16:50:55 seq (B _ _) x = x 16:50:56 ... 16:51:02 *A _ 16:51:06 and the only reason you think that the generalised seq is side-effecty is that there's no way to get a polymorphic version 16:51:13 that kind of breaks down for functions, but so does seq :) 16:51:25 -!- Phantom_Hoover has quit (Ping timeout: 248 seconds). 16:51:26 (seq lets you distinguish _|_ and (const _|_)) 16:51:34 (another thing kallisti has been confused about, incidentally) 16:51:36 ais523: seq /doesn't/ calculate a value based on a and b though. only b. 16:51:41 kallisti: yes it does 16:51:50 the value depends on a by definition 16:52:03 thus, optimising out the dependency on a, just because the return value isn't affected by it, is wrong 16:52:18 if you're going to call the dependency a side-effect, you have a pretty weird definition of side-effect 16:52:29 it has nothing to do with dependency. 16:52:49 elliott: how strict is the first argument to seq? does it only go as far as the first constructor, or does it figure out the value "all the way"? 16:52:53 kallisti: yes it does 16:52:59 ais523: WHNF, like always 16:53:03 why does (a+b) go into an infinite loop if either a or b are infinite loops? 16:53:12 ais523: (so, to the first constructor or a lambda, basically) 16:53:18 ais523: strictness and laziness has nothing to do with side-effects, first of all. 16:53:20 elliott: ah, OK 16:53:23 kallisti: exactly 16:53:29 that's why seq isn't side-effectful 16:53:43 * elliott is just going to keep stating facts rather than actually trying to engage in futile argument.\ 16:53:44 elliott: it has to do with what is computed and what is returned. 16:53:46 s/\\$// 16:54:02 elliott: I admit that seq still feels a bit non-Haskellish to me, but that's not because of side effects, but because it does weird things to eval order 16:54:13 ais523: a lot of people don't like it 16:54:22 elliott: and in this case, seq returns b and forced a. this is /precisely/ why you can't simply optimize seq away because it performs a side-effect unrelated to just evaluating b and returning that. 16:54:23 ais523: Haskell 1.4 was better 16:54:28 ais523: it had class Eval a where seq :: a -> b -> b 16:54:32 and e.g. functions weren't an instance 16:54:40 and every ADT got an Eval instance for free 16:54:51 that was good because fully polymorphic functions didn't get parametricity fucked up 16:55:06 kallisti: you will never understand why you are wrong until you stop thinking in terms of operations like "forced". 16:55:15 kallisti: do you think that (\a b->(b-b)+a)::(Int -> Int -> Int) can be optimised to const::(Int -> Int -> Int)? 16:55:16 there are two levels: semantics, which do _not_ involve things like "forcing" and "mutation" 16:55:22 and implementation, which SOMETIMES INVOLVES MUTATION 16:55:27 elliott: I like finding misconceptions via binary search 16:55:36 GHC mutates TONS of things in the process of evaluating COMPLETELY PURE (even seq-less, if you think that matters) expressions 16:55:38 whether in someone else's view or mine 16:55:53 that does NOT MEAN THOSE EXPRESSIONS MUTATE, the expressions DO NOT HAVE SIDE-EFFECTS 16:56:04 and that is the last I will say on the matter, unless I decide to be a jerk from the sidelines again 16:56:13 which is, admittedly, fairly likely. 16:56:29 ais523: uh, no? 16:56:31 ais523: I'm not sure that works in the general case 16:56:36 kallisti: why not? 16:56:40 ais523: (binary search, I mean) 16:56:47 sometimes people are just wrong all the way down 16:56:56 elliott: indeed, but you can often narrow it down somewhat 16:57:12 ais523: because they don't do the same thing? you're making the assumption that Num obeys any kind of laws. 16:57:24 such as b-b == fromIntegral 0 16:57:31 kallisti: did you see the ::Int? 16:57:36 oh, no. 16:57:38 I'm blind. 16:57:49 right, in general you couldn't, because of polymorphism 16:58:02 > (\a b->(b-b)+a) x y 16:58:03 y - y + x 16:58:07 ais523: I mean, it /could/ be optimized. it would do the same thing. 16:58:07 as expected 16:58:14 kallisti: no it wouldn't 16:58:20 ais523: er, well, right. 16:58:21 what if a is fix id? 16:58:21 strictness 16:58:31 so, would you say that b-b has side effects? 16:58:35 no? 16:58:45 now, if I flip that expression 16:58:58 to (\a b->(a-a)+b)::(Int->Int->Int) 16:59:03 -!- Phantom_Hoover has joined. 16:59:04 I have seq::(Int->Int->Int) 16:59:08 but I can't optimise it to flip const 16:59:19 based on your arguments 16:59:23 ais523: I have never once claimed that seq can be optimized to flip const 16:59:24 also, no side effects 16:59:29 ah, OK 16:59:40 elliott: and in this case, seq returns b and forced a. this is /precisely/ why you can't simply optimize seq away because it performs a side-effect unrelated to just evaluating b and returning that. 16:59:41 ais523: in fact, the reason it can't is because seq has side-effects... 16:59:45 you claimed that it's because it has side effects 16:59:56 whereas I've given an implementation on the integers that doesn't have side effects 16:59:57 correct. 16:59:59 and yet still can't be optimised away 17:00:02 -!- azaq23 has joined. 17:00:05 ais523: okay? 17:00:12 ais523: there are other reasons things can't be optimized. 17:00:19 kallisti: agreed 17:00:25 and those are the reasons that seq can't be optimised 17:00:49 elliott: hmm, I suppose that this means that in languages like Agda, it's possible for an integer to be lazily positive 17:00:50 ais523: oh I see what you're saying. 17:00:58 as in, forced only so far as being positive, rather than to its actual value 17:01:05 because integers actually have type constructors there 17:01:33 ais523: but I still think seq performs a side-effect, because side-effects are related to computing expressions 17:02:04 hmm, now I'm wondering what seq /does/ do if given a function 17:02:09 > seq id 0 17:02:09 0 17:02:18 presumably just ignores it 17:02:20 > seq (fix id) 0 17:02:24 mueval-core: Time limit exceeded 17:02:28 or, hmm, no 17:02:45 wait, fix id isn't afunction 17:02:49 *a function 17:02:53 :t fix id 17:02:53 forall a. a 17:03:04 elliott: hmm, I suppose that this means that in languages like Agda, it's possible for an integer to be lazily positive 17:03:09 > seq (const $ fix id) 0 17:03:10 ais523: Agda doesn't have _|_ 17:03:10 0 17:03:17 so the concept of laziness/strictness doesn't exist 17:03:23 elliott: indeed, it was a different "this" 17:03:28 and I meant in terms of implementation 17:03:33 it's not user-observable at all 17:03:40 ais523: things are naturally forced in Haskell semantics by being referring to in functions, or being evaluated in some way. so being forced as the result of being used in an expression is not a side-effect. I'm not saying "forcing values is a side-effect" I'm saying "forcing values that you don't use as part of an expression that you return is a side-effect" 17:03:55 hmm, does this mean Agda is sub-TC? 17:04:04 (as in, you can't write a program without a proof it terminates?) 17:04:12 kallisti: nothing is forced in Haskell's semantics. 17:04:22 kallisti: well, the argument a /is/ used, that's the point 17:04:27 it's not used for anything, but it's still used 17:04:31 ais523: Agda is sub-TC, yes. 17:04:36 unless you turn off the termination checker. 17:04:46 imagine it being subtracted from itself via a generic magic subtraction operation, that returns 0 if you subtract anything from itself 17:05:21 ais523: ...it's not relevant to the computed result. in much the same way that the act of writing bytes to a file is irrelevant to the result of writeFile 17:05:27 not true 17:05:32 the result of writeFile is an IO action 17:05:37 and all that action does is write bytes to af ile 17:05:38 *a file 17:05:59 writeFile is also referentially transparent, i.e. returns the same action for the same arguments always 17:06:22 elliott: well, writeFile doesn't have side effects; unsafePerformIO does when given its return value, but writeFile doesn't 17:07:16 one possible implementation of IO actions would be as C programs, wouldn't it? and you could define all the functions returning IO actions, and things like >>= for IO, as operating on those programs 17:07:31 and then unsafePerformIO and the runtime would simply run the programs produced 17:07:32 ais523: yep 17:07:37 (it'd be quite a bad impl, but it'd be possible) 17:08:00 ais523: on that riff: http://conal.net/blog/posts/the-c-language-is-purely-functional (in response to people claiming Haskell is purely-functional) 17:08:19 wait, /another/ elliott? 17:08:28 conal elliott is the more famous elliott 17:08:41 there's him and another two elliotts in #haskell at the best of times 17:08:44 well, not the best of times 17:08:47 because one of them is elliottcable 17:09:39 hmm, it's a little wrong; #undef is a purely functional operation in CPP, because it serves to end a scope, rather than do anything fundamentally side-effecty 17:10:15 ais523: nah, you can use it out of order 17:10:22 really? ouch 17:10:27 of course you can... 17:10:33 ...I think you guys have a weird definition of side-effect. 17:10:36 or well 17:10:38 probably a normal one 17:10:40 but the normal one is weird. 17:10:51 kallisti: your definition is incoherent 17:11:01 and makes Haskell-even-without-seq side-effectful 17:11:10 (you would claim it isn't, but that's because your definition is self-contradictory) 17:11:17 *it doesn't 17:11:28 Haskell-even-without-seq is side-effectful... 17:11:51 *-and-IO 17:11:55 "Having a baby is often a occasion whenever you must be careful because the outcomes of earning a mistake might be serious." 17:12:02 ais523: :D 17:12:20 kallisti: well, "pure Haskell without side-effects" has no side-effects, yes. 17:12:28 erm 17:12:32 s/kallisti/elliott/ 17:12:33 kallisti: did you just nickping yourself? 17:12:38 kallisti: yes 17:12:48 wow, elliott and kallisti must be the same person, it's the only way to explain such a mistake 17:12:54 we are. 17:12:56 kallisti: indeed it doesn't: unfortunately, your definition makes it so 17:13:00 (and the only conclusion from that is, that that person is trolling me really heavily) 17:13:15 you just don't realise it, because you don't know what your definition is, because you don't understand it, because you don't understand purity 17:13:26 elliott: ah, because forcing a value as the result of computing it is a side-effect, under my definition, yes? 17:13:34 (except it's not, but please explain) 17:13:39 with a definition of "same arguments always gives same results", seq is perfectly pure 17:13:45 as its result depends only on its arguments a and b 17:13:54 kallisti: nah, ais523 has taken the torch of actually attempting to explain to you _why_ you're wrong 17:13:57 by which I mean 17:14:00 I gave up 17:14:21 elliott: to be fair, I didn't understand at the start of the conversation, I just figured it out pretty quickly 17:14:22 as I said, my claim is not that "forcing a value is a side-effect" 17:14:39 because values are forced all the time when no side-effects are occuring. 17:14:44 ais523: yes, such wonders tend to happen when you start without assuming you're correct :P 17:14:58 Haskell is something that I don't find very intuitive 17:15:37 although I've occasionally wished for Haskelly monads elsewhere (especially for error handling); you could do it in OCaml but you have to lazify everything by hand, which is irritating 17:16:12 (where lazifying is the easiest way to make statements into what are effectively Either actions) 17:17:21 ...but how is... 17:17:40 "this action is performed, and is completely irrelevant to the output of the expression" 17:17:43 not a side-effect? 17:17:46 "action is performed" 17:18:02 elliott: I disagree, as I disagree with the "completely irrelevant" 17:18:04 evaluating a pure value is not an "action" in the side-effectful sense 17:18:12 clearly, you get an infinite loop if a is an infinite loop 17:18:15 thus, a isn't irrelevant 17:18:21 ais523: pinging the wrong person, dude 17:18:31 elliott: I was disagreeing with where you found the error 17:18:38 well, hmm 17:18:39 ais523: I was just disagreeing with a different part. 17:18:49 -!- MSleep has changed nick to MDude. 17:18:49 I think his statement's wrong even without the "action is performed" part 17:19:04 ais523: Were I trying to actually deconstruct kallisti's argument in its entirety, I would have to start by rejecting everything he says, as it is worded in terms of imperative machine operations, not Haskell's pure, timeless semantics. 17:19:18 He would almost certainly interpret this as me trolling him with stubbornness. 17:19:21 So I don't. 17:19:31 elliott: ah okay so forcing a in a `seq` b is not an action, it's just an observable effect of evaluating the expression that has nothing to do with the return value. got it. 17:19:32 kallisti: hmm, to put it a different way: you seem to think that side-effects are defined in terms of "X happens and is not useful", rather than in terms of "X happens and does something not reflected by the return value Y" 17:19:40 kallisti: It has to do with the return value. 17:19:47 If a is _|_, then the return value is _|_. 17:20:05 ais523: you seem to be thinking that I'm thinking the opposite of what I'm thinking, and then go on to describe exactly what I'm thinking to be the thing I should be thinking. 17:20:08 this has happened twice now. 17:20:40 elliott: hmm, is it sanely possible to add T to a language as well as _|_? 17:20:53 ais523: heh 17:21:04 ais523: well, _|_ is the value of every type, I guess T is the value of no type? 17:21:07 then your values would be lattice elements, I think 17:21:11 * elliott PRO MATHEMATICIAN 17:21:13 ais523: they are 17:21:14 elliott: hmm... 17:21:18 ais523: ordered by well-definedness 17:21:24 ezyang has a long post series about this 17:21:30 yep, that makes sense 17:21:35 well, it's only a semilattice in Haskell 17:21:45 right 17:21:55 elliott: can Haskell talk about _|_ in that way... 17:22:02 _|_ is a suitable value for use in any context; whereas T is a value which, if a context accepts that, it'll accept anything 17:22:05 kallisti: We're not Haskell, we're humans. 17:22:15 Haskell's semantics most definitely involve _|_. 17:22:32 kallisti: in general, _|_ is meaningful, but it's impossible for a computer to always detect its existence 17:22:38 elliott: does haskell's semantics involve side-effects? 17:22:42 (and you get an infinite loop if it's there, but can't) 17:23:06 ais523: right 17:23:15 kallisti: No, although the description of how IO is executed does. 17:23:20 hmmm, okay. 17:23:41 I think ghc can detect a few trivial instances of _|_ existing 17:23:44 > 1 / 0 17:23:44 kallisti: Note that there is a function which causes the evaluation of its first argument when forced, but does _not_ return _|_ when the first argument is _|_. 17:23:45 Infinity 17:23:50 > 1::Int / 0 17:23:51 Only unit numeric type pattern is valid 17:24:00 > (1::Int) / 0 17:24:01 No instance for (GHC.Real.Fractional GHC.Types.Int) 17:24:01 arising from a use o... 17:24:11 > (1::Int) / (0::Int) 17:24:12 No instance for (GHC.Real.Fractional GHC.Types.Int) 17:24:12 arising from a use o... 17:24:13 kallisti: That function is "start evaluating the first argument in another thread, and return the second immediately" (it is only distinguishable from flip const when talking about operations, not semantics). 17:24:16 kallisti: AKA par. 17:24:21 kallisti: It is also completely pure and has no side-effects. 17:24:26 elliott: how about... operational semantics? 17:24:28 > (1::Int) 17:24:29 1 17:24:40 aha, division isn't defined on the integers in Haskell 17:24:45 that… makes a lot of sense, actually 17:24:51 kallisti: So if you think the return value matters as to whether something has a "side-effect", you're wrong. 17:24:54 ais523: `div` 17:24:59 > 1 `div` 0 17:25:00 :t div 17:25:00 *Exception: divide by zero 17:25:00 forall a. (Integral a) => a -> a -> a 17:25:10 elliott: and I was thinking that "integer division" quite possibly was 17:25:18 :t quot 17:25:19 forall a. (Integral a) => a -> a -> a 17:25:22 so yes, that's a _|_ that was caught by the compiler, as it's a pretty easy one to catch 17:25:26 > 1 `quot `0 17:25:26 *Exception: divide by zero 17:25:50 hmm, now I'm wondering what split-complex numbers are used for 17:25:53 ais523: N.B. there are actually semantics given to Haskell's _|_s to explain exceptions 17:26:04 elliott: question: is a guaranteed to evaluate before seq returns? 17:26:20 elliott: you mean exceptions are the reason that _|_ is part of the semantics rather than inferred from it? 17:26:25 kallisti: Mu. 17:26:26 I'm not entirely convinced I've parsed your line correctly 17:26:30 kallisti: You're talking about operations again. 17:26:33 ais523: no 17:26:42 ais523: I just mean that we don't say exceptions work because the compiler magically realised _|_ was there 17:26:45 elliott: operations seem particularly relevant to side-effects. 17:26:54 ais523: OTOH, the semantics for exceptions are really kind of gnarly, so we ignore them when not talking about exceptions :P 17:26:58 heh 17:27:04 kallisti: yep, good thing there are no side-effects nivolved 17:27:05 I take it you can't catch an exception in Haskell? 17:27:13 (I'd be pretty surprised if you could, all things considered) 17:27:17 ais523: of course you can 17:27:18 (but Haskell surprises me a lot) 17:27:19 they'd be useless otherwise 17:27:23 oh, ouch 17:27:30 :t Control.Exception.catch 17:27:31 forall a e. (GHC.Exception.Exception e) => IO a -> (e -> IO a) -> IO a 17:27:32 elliott: in the denotational semantics, sure. but in the operational semantics... yes? 17:27:42 :t Control.Exception.throw 17:27:42 forall e a. (GHC.Exception.Exception e) => e -> a 17:27:43 :t Control.Exception.throwIO 17:27:44 forall e a. (GHC.Exception.Exception e) => e -> IO a 17:27:53 kallisti: haskell has no mandatory operational semantics 17:28:02 implementations can do what they will. 17:28:09 if an implementation proves the first argument to seq always terminates, it can discard it. 17:28:13 elliott: oh, catch is an IO action? that makes a lot of sense too 17:28:37 ais523: *a function taking an IO action and a function taking an exception and returning an IO action, and returning an IO action 17:28:38 but yes 17:28:56 elliott: well, I knew I was going to get a correction like that 17:29:06 I should have said that a given try…catch block is an IO action 17:29:14 elliott: I think I'm done pressing the issue. 17:29:28 kallisti: which is not the same thing as realising you're wrong, I presume? 17:29:37 elliott: this conversation has been enlightening. but no, I don't think I'm wrong on this one. 17:29:45 you are 17:29:52 elliott: but I do understand your perspective now. so cool. 17:30:08 it's not 17:30:09 a perspective 17:30:14 it's literally objectively correct 17:30:25 you won't find a single person who knows their shit who will agree with you 17:30:40 that's fine. 17:31:15 yeah. you alone will be correct in your tower of oh shit, somehow I'm a haskell expert by pure chance 17:31:19 elliott: to be fair, I'm not sure that the concept that kallisti calls "side-effect" is useless, but I'm not sure how easy it is to define 17:31:22 ais523: Prelude Control.Exception> catch (print (1 `div` 0)) (\e -> putStrLn $ "Exception: " ++ show (e::SomeException)) 17:31:22 Exception: divide by zero 17:31:24 and it needs a better name 17:31:49 elliott: the IO action was the bit I missed when thinking through it 17:31:51 ais523: elliott: my concept involves operations. (aka what actually happens when you implement things) 17:31:57 ais523: Haskell exceptions are interesting even then because of laziness and and ambiguity 17:32:03 having it as an IO action means that it makes sense to say when it happens 17:32:11 ais523: (1 `div` 0) + undefined -- which exception does this throw? 17:32:13 divide by 0, or undefined? 17:32:15 which gives enough context to know how to catch it 17:32:25 elliott: depends on the impl, I guess 17:32:35 ais523: nope, it's actually formally ambiguous 17:32:42 I suppose an implementation could give guarantees, but it wouldn't /want/ to 17:32:52 ais523: that's basically the reason exception-catching is in IO 17:32:58 if not for that, it would be pure 17:33:04 elliott: I meant unspecified, not impl-defined 17:33:07 right 17:33:43 ais523: Prelude Control.Exception> catch (evaluate [1,2,undefined] >> return ()) (\e -> putStrLn $ "Exception: " ++ show (e::SomeException)) 17:33:43 Prelude Control.Exception> 17:33:50 also, I think if catch were pure, and just caught the existence of an exception rather than a specific exception, you'd need to be careful with seq and similar things to make sure that the exception happened inside the catch rather than outside 17:33:53 Prelude Control.Exception> catch (evaluate (undefined :: [Int]) >> return ()) (\e -> putStrLn $ "Exception: " ++ show (e::SomeException)) 17:33:53 Exception: Prelude.undefined 17:34:25 aha, evaluate only forced it one level 17:34:31 (evaluate is just (\a -> a `seq` return a), except with some extra magic) 17:34:38 (so that evaluate undefined `seq` () === ()) 17:34:47 so the first case didn't exception because it never cared about the elements of the list, just that it had a head and a tail 17:34:47 (i.e. the evaluation only happens when you /execute/ the action) 17:35:06 elliott: I've basically come to the conclusion that I'm talking about something completely different. So it's not so much that I think I've PROVED EVERYONE WRONG. it's just that those people being right and me being right are irrelative 17:35:15 -!- zzo38 has quit (Remote host closed the connection). 17:35:20 elliott: which is ofc perfectly meaningful as an IO action, because the whole point of IO actions is that they happen at a particular time 17:35:35 kallisti: yoru concept is self-contradictory, so it's gonna need a hell of a lot of reworking to make sense. 17:35:49 ais523: well, the point is that they have side-effects 17:35:56 ais523: the same IO action can execute at ten different times, or none 17:36:07 elliott: yep 17:36:17 but each time it's executed, you can say when 17:36:27 I think the point, even more than having side-effects, is that they execute in order 17:36:36 but the side-effects are useful in practice ;) 17:36:46 IO would be useful even if the universe were pure 17:36:51 elliott: I haven't found the contradiction. If you have it I'd like to see, but I doubt you have the patience to go down that route. 17:37:35 (btw, I still haven't figured out how to do IO-style things meaningfully in Feather; the problem's not evaluation order, as that's trivially defined, but other problems) 17:38:06 (it's possible to create a temporal monad that keeps track of meta-time, and it's probably a useful concept, but I want to avoid it if possible) 17:38:21 (especially as it breaks the purity of the language) 17:41:26 elliott: the problem with seq _|_ b = _|_; seq a b = b is that there's no computer that can actually do that. 17:41:38 which, when you're talking about operational semantics, is relevant. 17:41:39 yes there is 17:41:46 my computer does that when I use seq 17:41:47 and also 17:41:53 you never claimed to be talking about operational semantics at the start of this 17:41:57 you just said seq has side-effects 17:41:59 so really uh 17:42:02 shut up about this, you're wrong 17:43:01 elliott: I didn't realize that's what I was talking about until it became apparent that we were talking about different definitions of side-effect. 17:43:22 right: you didn't find out you were wrong, just right in a way we failed to consider. 17:43:31 if only every wrong person could be so lucky 17:43:46 elliott: correct. 17:45:34 `addquote right: you didn't find out you were wrong, just right in a way we failed to consider. 17:45:34 if only every wrong person could be so lucky 17:45:34 Gregor: You have 1 new message. '/msg lambdabot @messages' to read it. 17:45:36 ... 17:45:38 Damn it 17:45:41 742) right: you didn't find out you were wrong, just right in a way we failed to consider. 17:45:44 `delquote 742 17:45:47 ​*poof* right: you didn't find out you were wrong, just right in a way we failed to consider. 17:45:54 Gregor: I might like it more with just that line 17:45:56 not sure though :P 17:46:08 `addquote right: you didn't find out you were wrong, just right in a way we failed to consider. if only every wrong person could be so lucky 17:46:10 742) right: you didn't find out you were wrong, just right in a way we failed to consider. if only every wrong person could be so lucky 17:46:13 * elliott clap 17:46:18 @messages 17:46:18 fizzie said 2h 56m 28s ago: A spammy, useless message. 17:46:30 @tell fizzie SPAM SPAM SPAM SPAM SPAM SPAM SPAM 17:46:31 Consider it noted. 17:46:35 @tell fizzie FRIED EGGS AND SPAM 17:46:35 Consider it noted. 17:50:16 elliott: does side-effect have a formal definition? 17:50:53 referential transparency is a good one. 17:53:28 It blew up the moon, but no value accessible thru my references has changed. 17:54:02 I don't think they're equivalent (aka referential transparency <-> no side-effects ) 17:54:12 or well, I don't think they're related in that way 17:54:14 not equivalent 17:54:21 -!- Phantom_Hoover has quit (Ping timeout: 248 seconds). 17:54:23 Gregor: Yeah, but eventually you call it so much that the computer explodes. 17:54:27 And THEN it stops giving the same results. 17:54:58 This function, on certain inputs, will take more time than the shelf life of the processor. Therefore it has side effects. 17:55:11 Gregor: TOTESg 17:55:27 (I don't actually think referential transparency by itself = purity, and especially not "referential transparency on some hardware", but it's a start :P) 17:56:10 kallisti: http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.27.7800 This is apparently the most popular definition. 17:56:22 * kallisti loves popular things. 17:56:53 elliott: This paper should have the subtitle "Baby Don't Hurt Me" 17:57:19 Gregor: Stretching things a bit :P 17:57:37 elliott: AND YET IT IS NOW STUCK IN YOUR HEAD 17:57:50 Gregor: What is the point of turning into a tortured What Is Love reference, even if it doesn't fit at all? 17:57:52 BABY DON'T HURT ME 17:57:54 DON'T HURT ME 17:57:55 NO MO' 17:58:01 * elliott wins you're welcome. 17:58:22 X-D 17:59:05 elliott: that reminds me of Dan Ghica doing things like calling fork() in callbacks in order to break other people's proven security properties 17:59:15 haha 17:59:39 because their formal model didn't allow for /that/ sort of side effect 18:01:22 ais523: all programs are the side-effect of me (or my computer) creating them. 18:01:32 therefore: everything is side-effects. 18:02:19 ais523: arguably, IO with concurrency should have a different monad to IO without concurrency 18:02:22 since they're so different 18:02:42 and a lot of things might want to take actions in the latter as arguments 18:02:52 (with ofc sequentially :: IO a -> ConcIO a) 18:02:57 elliott: hmm, indeed 18:03:04 other way round too? 18:03:12 that's also a meaningful operation 18:03:15 no, that defeats the whole point 18:03:23 because it lets you fork from within a sequential callback 18:03:24 does crashing my computer as the result of a memory link count as a side-effect? :3 it's certainly not related to the return value. 18:03:37 elliott: but you'd have to unfork again before returning 18:03:52 anyway, I'm about to miss a bus, so bye everyone; I'll probably be back later 18:03:55 -!- ais523 has quit (Remote host closed the connection). 18:03:59 ais523: err? fork :: ConcIO a -> ConcIO ThreadId was the operation I was imagining ConcIO would have 18:04:09 in addition to standard boring stuff on ThreadIds, and MVars 18:06:05 -!- MDude has quit (Ping timeout: 248 seconds). 18:06:55 -!- Phantom_Hoover has joined. 18:08:04 what, for some reason hackage isn't responding. 18:12:39 -!- Klisz has joined. 18:16:06 -- Laws: 18:16:06 -- pure x = slide (pure x) x 18:16:06 -- slide fs f <*> slide xs x = slide (fs <*> xs) (f x) 18:16:09 what good laws! 18:16:42 the first one is known as the "pure slide pure" law 18:16:51 and the second one is known as the "slide slide slide" law 18:17:10 they also double as dance moves. 18:18:01 @pl \f g x -> f (g x) x 18:18:01 flip flip id . liftM2 18:18:10 @pl \f g h x -> f (g x) (h x) 18:18:11 liftM2 18:18:24 pure = liftM2 slide pure id 18:18:26 I MADE IT BETTER 18:18:32 pure = slide <$> pure <*> id 18:20:14 elliott: obfuscationist! 18:21:28 > f >>= g 18:21:29 No instance for (GHC.Show.Show (m b)) 18:21:29 arising from a use of `M3862060386... 18:21:33 > f >>= g $ x 18:21:34 Ambiguous type variable `a' in the constraints: 18:21:34 `GHC.Show.Show a' 18:21:34 a... 18:21:42 > f >>= g $ x :: Expr 18:21:43 Ambiguous type variable `a' in the constraints: 18:21:43 `GHC.Show.Show a' 18:21:43 a... 18:21:53 > f >>= g $ x y :: Expr 18:21:54 Couldn't match expected type `SimpleReflect.Expr -> a' 18:21:54 against infe... 18:21:57 serpkweroweirowieriowetioweriwet 18:22:26 oh rite 18:23:54 :t f >>= const g 18:23:54 forall (m :: * -> *) a b. (SimpleReflect.FromExpr (m a), SimpleReflect.FromExpr (m b), Monad m) => m b 18:24:06 > f >>= const g $ x 18:24:06 Ambiguous type variable `a' in the constraint: 18:24:07 `SimpleReflect.FromExpr a... 18:25:17 ah 18:25:20 fungot! 18:25:21 Phantom_Hoover: ' only a bit?' more voices were raised. 18:27:42 > (\x -> "(f " ++ x ++ ")") >>= (\x y -> "(g " ++ x ++ " " ++ y ++ ")") $ "x" 18:27:43 "(g (f x) x)" 18:28:12 pure = pure >>= slide 18:28:17 elliott: ^^^ 18:28:26 oh, indeed. 18:31:55 I wish hackage would stop being down. 18:32:46 -- Laws: 18:32:46 -- fromZip . toZip = toZip . fromZip = id 18:32:46 -- fromZip (pure x) = slide (fromZip (pure x)) x 18:32:46 -- fromZip (toZip (slide fs f) <*> toZip slide xs x) 18:32:46 -- = slide (fromZip (toZip fs <*> toZip xs)) (f x) 18:32:49 my laws got even better. 18:33:10 what the hell. 18:33:15 what am I looking at. 18:33:31 fromZip . toZip = toZip . fromZip = id 18:33:35 that's a good one 18:34:31 How does fromZip make sense for arbitrary arguments? 18:34:42 (I'm just going by the name) 18:34:50 class (Applicative (Zip v)) => Space v a | v -> a where 18:34:50 -- Laws: 18:34:50 -- fromZip . toZip = toZip . fromZip = id 18:34:50 -- fromZip (pure x) = slide (fromZip (pure x)) x 18:34:50 -- fromZip (toZip (slide fs f) <*> toZip slide xs x) 18:34:51 -- = slide (fromZip (toZip fs <*> toZip xs)) (f x) 18:34:53 data Zip v :: * -> * 18:34:55 toZip :: v -> Zip v a 18:34:57 fromZip :: Zip v a -> v 18:34:59 slide :: v -> a -> v 18:35:05 used like so: 18:35:06 data Two = Two {-# UNPACK #-} !Double {-# UNPACK #-} !Double deriving (Show) 18:35:06 instance Space Two Double where 18:35:07 data Zip Two a = TwoZ !a !a 18:35:09 toZip (Two x0 x1) = TwoZ x0 x1 18:35:11 fromZip (TwoZ x0 x1) = Two x0 x1 18:35:13 slide (Two _ x1) y = Two x1 y 18:35:15 instance Functor (Zip Two) where 18:35:17 fmap f (TwoZ x0 x1) = TwoZ (f x0) (f x1) 18:35:19 instance Applicative (Zip Two) where 18:35:21 pure x = TwoZ x x 18:35:22 http://www.textfiles.com/uploads/2001.txt I have no idea what this is but it says "Monad Hate Barrier" 18:35:23 TwoZ f0 f1 <*> TwoZ x0 x1 = TwoZ (f0 x0) (f1 x1) 18:35:27 there are also 159 mentions of the word monad 18:35:51 it's the numerical dictionary! 18:35:54 this is amazing 18:36:12 2001.txt 349098 18:36:13 Soren Greenwood's Conspiracy Theory to Explain all Other Conspiracy Theories (January 10, 2001) 18:36:47 Sgeo: hth 18:37:33 elliott: wow I don't even know how to go about this... 18:37:40 about what 18:37:45 about reading this thing. 18:38:04 "*This* is Yammer's official position on the subject: our goal at Yammer is to revolutionize the way modern workers collaborate and we'll use whatever tools will allow us to iterate faster on that goal. If Scala is that tool, we'll use Scala; if Java is that tool, we'll use Java; if INTERCAL is that tool, we'll use INTERCAL. (We don't expect to have to use INTERCAL; don't worry.)" 18:38:09 where's ais when you need him 18:38:14 kallisti: from top to bottom, one presumes 18:39:49 as far as I can tell it's just putting together loose mental associations until everything becomes a conspiracy theory? 18:40:58 if I ever see "monad hate barrier" I know it has something to do with 151... 18:41:11 -!- derrik_ has joined. 18:41:15 -!- derrik_ has quit (Client Quit). 18:41:54 -!- derrik has quit (Ping timeout: 240 seconds). 18:45:22 -!- monqy has joined. 18:46:37 -!- Phantom_Hoover has quit (Ping timeout: 248 seconds). 18:46:55 @let powerOfTwo n = length . nub $ filterM (const [True, False]) [1 .. abs n] 18:46:56 Defined. 18:47:22 > map powerOfTwo [1..10] 18:47:24 [2,4,8,16,32,64,128,256,512,1024] 18:47:34 elliott: behold, the most efficient way to compute powers of two. 18:48:21 I like the abs. 18:48:35 it's essential. 18:49:17 > 2 ^ (-2) 18:49:18 *Exception: Negative exponent 18:49:23 > 2 ** (-2) 18:49:24 0.25 18:49:31 > powerOfTwo -2 18:49:31 Overlapping instances for GHC.Show.Show (a -> GHC.Types.Int) 18:49:31 arising fro... 18:49:35 > powerOfTwo (-2) 18:49:37 4 18:49:40 SO ACCURATE 18:50:23 > powerOfTwo 0 18:50:24 1 18:51:51 07:09:19: apparently tunes also uses sidereal time. 18:51:55 @tell oerjan WHAT DO YOU HAVE AGAINST GLOGBOT 18:51:55 Consider it noted. 18:51:59 *@ask oerjan WHAT DO YOU HAVE AGAINST GLOGBOT 18:52:01 @ask oerjan WHAT DO YOU HAVE AGAINST GLOGBOT 18:52:01 Consider it noted. 18:52:14 > let twoPower n = [recip, id] !! (fromEnum (n < 0)) . length . nub . filterM (const [True, False]) $ [1 .. abs n] in map twoPower [1..10] 18:52:15 Precedence parsing error 18:52:15 cannot mix `GHC.List.!!' [infixl 9] and `L..'... 18:52:27 > let twoPower n = ([recip, id] !! (fromEnum (n < 0))) . length . nub . filterM (const [True, False]) $ [1 .. abs n] in map twoPower [1..10] 18:52:27 No instance for (GHC.Real.Fractional GHC.Types.Int) 18:52:28 arising from a use o... 18:52:34 bah 18:52:54 > let twoPower n = ([recip, id] !! (fromEnum (n < 0))) . genericLength . nub . filterM (const [True, False]) $ [1 .. abs n] in map twoPower [1..10] 18:52:56 [0.5,0.25,0.125,6.25e-2,3.125e-2,1.5625e-2,7.8125e-3,3.90625e-3,1.953125e-3... 18:52:59 ... 18:53:11 > let twoPower n = ([id,recip] !! (fromEnum (n < 0))) . genericLength . nub . filterM (const [True, False]) $ [1 .. abs n] in map twoPower [1..10] 18:53:12 [2.0,4.0,8.0,16.0,32.0,64.0,128.0,256.0,512.0,1024.0] 18:53:23 much better 18:53:42 > let twoPower n = ([id,recip] !! (fromEnum (n < 0))) . genericLength . nub . filterM (const [True, False]) $ [1 .. n] in map twoPower [1..10] 18:53:43 [2.0,4.0,8.0,16.0,32.0,64.0,128.0,256.0,512.0,1024.0] 18:53:44 -!- MSleep has joined. 18:53:46 erm... now even twice as good! 18:53:49 -!- MSleep has changed nick to MDude. 18:54:05 > let twoPower n = ([id,recip] !! (fromEnum (n < 0))) . genericLength . nub . filterM (const [True, False]) $ [1 .. abs n] in map twoPower -2 18:54:05 Overlapping instances for GHC.Show.Show ([a] -> [a1]) 18:54:06 arising from a use... 18:54:10 > let twoPower n = ([id,recip] !! (fromEnum (n < 0))) . genericLength . nub . filterM (const [True, False]) $ [1 .. abs n] in twoPower -2 18:54:11 Overlapping instances for GHC.Show.Show (a -> a1) 18:54:11 arising from a use of ... 18:54:13 jserjgiuweriuwehriuwheriuhdfiuhweruihweiuhweiruhweriuhwetiuweht 18:54:16 too pointy, make it more pointless 18:54:18 -!- ais523 has joined. 18:54:24 > let twoPower n = ([id,recip] !! (fromEnum (n < 0))) . genericLength . nub . filterM (const [True, False]) $ [1 .. abs n] in (twoPower -2) 18:54:24 Overlapping instances for GHC.Show.Show (a -> a1) 18:54:24 arising from a use of ... 18:54:27 olsner: I'm afraid 18:54:32 > let twoPower n = ([id,recip] !! (fromEnum (n < 0))) . genericLength . nub . filterM (const [True, False]) $ [1 .. abs n] in twoPower (-2) 18:54:33 0.25 18:54:37 I swear I can program guys. 18:54:53 @pl (\n -> ([id,recip] !! (fromEnum (n < 0))) . genericLength . nub . filterM (const [True, False]) $ [1 .. abs n]) 18:54:53 ap ((. (genericLength . nub . filterM (const [True, False]))) . ([id, recip] !!) . fromEnum . (< 0)) (enumFromTo 1 . abs) 18:55:25 doing a conditional by indexing a list? how Pythonic 18:55:44 07:29:57: pikhq_: I knew they were Christian based but not anti-gay 18:55:48 kallisti: http://en.wikipedia.org/wiki/Chick-fil-A#Religious_and_political_views 18:55:56 ais523: "*This* is Yammer's official position on the subject: our goal at Yammer is to revolutionize the way modern workers collaborate and we'll use whatever tools will allow us to iterate faster on that goal. If Scala is that tool, we'll use Scala; if Java is that tool, we'll use Java; if INTERCAL is that tool, we'll use INTERCAL. (We don't expect to have to use INTERCAL; don't worry.)" 18:55:56 where's ais when you need him 18:56:20 -!- derrik has joined. 18:56:21 elliott: I don't expect them to have to use INTERCAL either 18:56:38 ais523: I've used that idiom in several languages actually. 18:56:59 kallisti: most languages have a perfectly usable ternary 18:57:07 NOPE LAME 18:57:14 OCaml has if/then/else; I imagine the same works in Haskell 18:57:32 !perl print (("kill self", "stay alive")[int(rand(6)) > 0]) 18:57:33 >deriv powerOfTwo x 18:57:34 stay alive 18:57:38 > deriv powerOfTwo x 18:57:39 Couldn't match expected type `Data.Number.Dif.Dif b' 18:57:39 against inferr... 18:57:56 @undefine 18:58:08 @let powerOfTwo = ap ((. (genericLength . nub . filterM (const [True, False]))) . ([id, recip] !!) . fromEnum . (< 0)) (enumFromTo 1 . abs) 18:58:09 Defined. 18:58:28 > deriv powerOfTwo (x :: Expr) 18:58:28 No instance for (GHC.Enum.Enum 18:58:29 (Data.Number.Dif.Dif Sim... 18:58:43 > deriv powerOfTwo 4 18:58:44 No instance for (GHC.Enum.Enum (Data.Number.Dif.Dif a)) 18:58:44 arising from a u... 18:59:01 wow amazing 18:59:46 > length . filterM (const [True, False] $ replicate 4 0 18:59:47 : parse error (possibly incorrect indentation) 18:59:52 > length . filterM (const [True, False]) $ replicate 4 0 18:59:53 16 19:01:10 -!- Phantom_Hoover has joined. 19:01:26 > let powerOfTwo n = ([id,recip] !! (fromEnum (n < 0))) . genericLength . filterM (const [True, False]) $ replicate (abs n) Nothing] in powerOfTwo 4 19:01:27 : parse error on input `]' 19:01:33 > let powerOfTwo n = ([id,recip] !! (fromEnum (n < 0))) . genericLength . filterM (const [True, False]) $ replicate (abs n) Nothing in powerOfTwo 4 19:01:34 16.0 19:01:38 > let powerOfTwo n = ([id,recip] !! (fromEnum (n < 0))) . genericLength . filterM (const [True, False]) $ replicate (abs n) Nothing in powerOfTwo -4 19:01:38 Overlapping instances for GHC.Show.Show (GHC.Types.Int -> a) 19:01:39 arising fro... 19:01:44 > let powerOfTwo n = ([id,recip] !! (fromEnum (n < 0))) . genericLength . filterM (const [True, False]) $ replicate (abs n) Nothing in powerOfTwo (-4) 19:01:46 6.25e-2 19:01:53 > 1/16 19:01:54 6.25e-2 19:01:56 ...okay. 19:02:08 @let powerOfTwo n = ([id,recip] !! (fromEnum (n < 0))) . genericLength . filterM (const [True, False]) $ replicate (abs n) Nothing 19:02:08 :2:0: 19:02:08 Multiple declarations of `L.powerOfTwo' 19:02:09 Declared at: ... 19:02:12 @undefine 19:02:13 @let powerOfTwo n = ([id,recip] !! (fromEnum (n < 0))) . genericLength . filterM (const [True, False]) $ replicate (abs n) Nothing 19:02:14 Defined. 19:02:23 > deriv powerOfTwo (x :: Expr) 19:02:24 Couldn't match expected type `Data.Number.Dif.Dif a' 19:02:24 against inferr... 19:02:34 :t powerOfTwo 19:02:35 forall a. (Fractional a) => Int -> a 19:02:49 bah 19:03:13 :t abs 19:03:14 forall a. (Num a) => a -> a 19:03:15 :t genericReplicate 19:03:16 forall i a. (Integral i) => i -> a -> [a] 19:03:16 :t repliate . abs 19:03:17 Not in scope: `repliate' 19:03:49 @undefine 19:04:05 @let powerOfTwo n = ([id,recip] !! (fromEnum (n < 0))) . genericLength . filterM (const [True, False]) $ genericReplicate (abs n) Nothing 19:04:06 Defined. 19:04:18 > deriv powerOfTwo (x :: Expr) 19:04:19 No instance for (GHC.Real.Integral 19:04:19 (Data.Number.Dif.Dif... 19:04:31 I'm shocked 19:04:47 @hoogle (Integral a, Num b) => a -> b 19:04:47 Prelude fromIntegral :: (Integral a, Num b) => a -> b 19:04:48 Prelude (^) :: (Num a, Integral b) => a -> b -> a 19:04:48 Data.List genericIndex :: Integral a => [b] -> a -> b 19:05:10 @hoogle (Integral a, Num b) => b -> a 19:05:10 Prelude ceiling :: (RealFrac a, Integral b) => a -> b 19:05:10 Prelude floor :: (RealFrac a, Integral b) => a -> b 19:05:10 Prelude round :: (RealFrac a, Integral b) => a -> b 19:05:24 yeah... no 19:05:31 > deriv powerOfTwo 5 19:05:32 No instance for (GHC.Real.Integral (Data.Number.Dif.Dif a)) 19:05:32 arising from... 19:05:47 aww. 19:06:21 > round 5 19:06:21 5 19:06:30 :t round 5 19:06:30 forall b. (Integral b) => b 19:06:34 .. -_- 19:07:07 @undefine 19:07:17 @let powerOfTwo n = ([id,recip] !! (fromEnum (n < 0))) . genericLength . filterM (const [True, False]) $ genericReplicate (abs . floor $ n) Nothing 19:07:18 Defined. 19:07:22 > deriv powerOfTwo 5 19:07:24 0.0 19:07:38 > deriv powerOfTwo (x :: Expr) -- Expr is /totally/ a RealFrac 19:07:39 No instance for (GHC.Real.RealFrac SimpleReflect.Expr) 19:07:39 arising from a us... 19:07:42 :( 19:08:36 it should be 19:08:57 @info RealFrac 19:08:57 RealFrac 19:09:01 lambdabot: ah, thanks. 19:09:04 > map (deriv powerOfTwo) [-5.5,-5..5] 19:09:06 [0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.... 19:09:19 elliott: I wonder where that's happening 19:09:50 Your function isn't very... nice. 19:09:52 well calculating the length from replicate just gives you a bunch of 1 + 1 + 1 + 1 ... 19:09:53 It has a conditional and all. 19:10:22 so that's probably why it's zero 19:12:38 elliott: what are you talking about this is definitely the best implementation of the base-2 real-except-actually-integer exponential function 19:14:08 > floor (5 :: Int) 19:14:09 No instance for (GHC.Real.RealFrac GHC.Types.Int) 19:14:09 arising from a use of ... 19:14:58 lame 19:20:58 > let multiply x y = genericLength . concatMap ((const .: genericReplicate) x Nothing) $ replicate y Nothing in multiply 2 5 19:20:59 10 19:22:13 > let multiply x y = genericLength . concatMap ((const .: genericReplicate) x undefined) $ replicate y undefined in multiply 2 5 19:22:14 10 19:22:45 fromIntegral = (`genericReplicate` undefined) 19:23:22 er... well 19:23:23 not quite 19:23:27 only works for positive numbers 19:24:04 -!- oerjan has joined. 19:24:53 (+) = (++); (*) = concatMap . const; 19:25:05 haven't quite figured out subtraction. this really only works for positive numbers. 19:25:06 hi oerjan 19:25:21 kallisti: (*) = (>>) too, iirc 19:25:21 oerjan: You have 2 new messages. '/msg lambdabot @messages' to read them. 19:25:54 > length $ replicate 4 undefined >> replicate 5 undefined 19:25:54 20 19:25:59 oerjan: ah, indeed. 19:26:08 this would make sense... 19:26:10 because uh... 19:26:17 (>>) = concatMap . const 19:26:36 :t concatMap . const 19:26:37 forall a b. [b] -> [a] -> [b] 19:26:37 :t (>>) 19:26:38 forall (m :: * -> *) a b. (Monad m) => m a -> m b -> m b 19:26:41 not quite. 19:26:48 elliott: for lists... which is the context here. 19:26:51 not quite. 19:26:55 and (^) = mapM . const 19:26:59 i think 19:27:02 :t mapM . const 19:27:03 forall a (m :: * -> *) b. (Monad m) => m b -> [a] -> m [b] 19:27:20 oh hm no 19:27:38 oerjan: well for powers of two I've been using filterM to compute the power set. 19:27:46 oerjan: concatMapM? 19:28:37 challenge: use this scheme to model negative numbers 19:28:59 :t mapM_ . const 19:29:00 forall a (m :: * -> *) b. (Monad m) => m b -> [a] -> m () 19:29:22 assuming you don't care about the element type 19:29:36 so far the element is undefined 19:29:39 > mapM_ (const [1,2,3]) [1,2] 19:29:40 [(),(),(),(),(),(),(),(),()] 19:29:44 a bunch of undefined 19:30:06 looks good 19:30:06 so that the instance could be made for [a] instead of [()] or something 19:30:27 -!- Klisz has quit (Ping timeout: 244 seconds). 19:30:55 oerjan: I don't think this can work at all with negatives 19:30:58 hm 19:30:59 without drastic changes. 19:31:07 you can construct them with the obvious tuple formation 19:31:09 kallisti: you'd think :P 19:31:11 it may even be elegant 19:32:15 oerjan: oh, you missed the first part. fromIntegral = (`genericReplicate` undefined) 19:33:33 well Either [a] [a] could do negatives... but I don't think it would be very pretty. 19:34:05 also it suffers from negative zero 19:34:11 idea: let n = (replicate n undefined ++) and let -n = drop n 19:34:28 :t drop 19:34:29 forall a. Int -> [a] -> [a] 19:34:36 length n yes 19:34:37 kallisti: ([a],[a]) 19:34:40 (a,b) represents a-b 19:34:50 elliott: oh... nice. 19:34:51 that's the same way you (usually) construct the rationals 19:35:02 :t genericDrop 19:35:03 forall i a. (Integral i) => i -> [a] -> [a] 19:35:07 it has the same problem of infinitely many ways to represent any one given number 19:35:15 but reduction is easy 19:35:32 oerjan: unless we give it an integral instance. you'd want drop (length n) 19:35:50 oerjan: pretty 19:35:55 kallisti: that isn'tw hat he meant 19:35:59 a = b means representation of a is b 19:36:14 negate a = drop (length (a [])) 19:36:22 oh nevermind I see... 19:36:23 except that fails 19:36:27 because it can't negate negatives 19:36:36 oerjan: wouldn't 19:36:39 \a -> (replicate n a ++) 19:36:40 be better 19:36:42 because then you could do like 19:36:46 a False (repeat True) 19:36:51 kallisti: er i was giving the translation from Ints, really 19:36:56 um hmm 19:37:00 a 0 [1..] 19:37:01 rather 19:37:07 > (const (drop 10)) 0 [1..] 19:37:08 [11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35... 19:37:18 > (\a -> (replicate 10 a ++)) 0 [1..] 19:37:20 [0,0,0,0,0,0,0,0,0,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,... 19:37:39 (ofc that cheats by using Integer :P) 19:38:23 you figure out the details ;P 19:38:33 oerjan: well yours _works_ fine. 19:39:00 * oerjan notes that yafgc updates aren't quite as regular as he's used to from his webcomics 19:39:18 if null $ n [undefined] then head $ n LIST_OF_ALL_NATURALS_REPRESENTED_IN_THIS_WAY else drop . length $ n [] 19:39:59 except for oots, which was awful of course 19:40:48 I assume that you're referring to oots's update schedule, and not the content, when you call it "awful" 19:40:57 yes. 19:41:21 * kallisti wasn't aware that there was any reason to read anything other than homestuck. 19:41:54 kallisti: what about #esoteric? 19:42:07 I don't actually read #esoteric 19:42:27 elliott: I /still/ maintain my kallisti = Bjorn comparison 19:42:49 but I wouldn't want to read a book about kallisti 19:42:58 ais523: I don't really get that comparison 19:43:06 kallisti: you wouldn't 19:43:10 nor would Bjorn 19:43:14 elliott: dude I'm super interesting. 19:43:25 -!- Klisz has joined. 19:43:27 a book about me would be amazing 19:43:27 elliott: regarding my anti-glogbot stance, i was actually using it at the time and somehow managed to think i was using tunes because insane timezones were involved 19:43:31 it would be the greatest work of literature. 19:43:35 oerjan: lol 19:44:16 There's already a book about me, at http://codu.org/logs/_esoteric/ 19:44:30 (Note: Jokes aside, I have not in fact told my entire life story here) 19:45:00 indeed, only the embarrassing parts 19:45:02 oh no, there's /more/? 19:45:03 * oerjan runs away 19:45:20 > replicate (-5) undefined 19:45:21 [] 19:45:22 :( 19:45:48 lists should go negative-ways 19:45:54 > drop (-5) [1..] 19:45:55 [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28... 19:46:15 kallisti: it actually works as replicate n undefined . drop (-n) 19:46:27 er 19:46:33 needs a ++ somewhere 19:46:46 hmm 19:47:08 ah okay. 19:47:17 but it's not particularly elegant is it? 19:47:23 the representation: yes. the code: no 19:47:34 feel free to create twosided infinite lists :P 19:47:53 that sounds awesome. 19:48:05 valid operation: flipItTurnWays 19:48:37 not WitherShins? (sp?) 19:48:54 no 19:48:59 that's not a joke I'm aware of 19:49:06 flipItTurnWays is much better. 19:49:29 oh well i misread that as TurnWise anyway 19:51:27 for two-way list things, toInteger = genericLength 19:51:41 as negative lengths would be possible. 19:56:57 kallisti, go read some Discworld 20:11:24 I swear I can program guys. <-- NOOOO, don't program me! 20:14:15 > let x = dVar (var "oerjan") in deriv (\x -> x^2 + 2*x + 1) x 20:14:16 2+oerjan+oerjan~~ 20:14:26 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 20:14:30 > let x = var "oerjan" in deriv (\x -> x^2 + 2*x + 1) x 20:14:31 2+oerjan+oerjan 20:14:33 my bad 20:14:43 :t dVar 20:14:43 forall a. (Num a) => a -> Dif a 20:14:50 elliott: I made a cool thing earlier 20:16:34 > let nDerivs f = genericLength . takeWhile (/=0) . iterate df . f $ dVar (x :: Expr) in nDerivs (^2) 20:16:36 3 20:17:18 > let nDerivs f = genericLength . takeWhile (/=0) . iterate df . f $ dVar (x :: Expr) in nDerivs sin 20:17:22 mueval-core: Time limit exceeded 20:17:23 > let nDerivs f = genericLength . takeWhile (/=0) . iterate df . f $ dVar (x :: Expr) in nDerivs (const 4) 20:17:25 1 20:17:32 Deewiant: Ping 20:18:34 actually just iterate df . f $ dVar x by itself is pretty cool. 20:18:38 hey ais523, set tabstop=4 20:18:59 elliott: 4 spaces = 1 indent, 1 tab = 2 indents? 20:19:06 nope, 1 tab = 4 wide 20:19:11 > iterate df . (^2) $ dVar (x :: Expr) 20:19:13 [x * x~~,1 * x + x * 1~~,1 * 1 + 1 * 1~~,0~~,0~~,0~~,0~~,0~~,0~~,0~~,0~~,0~... 20:19:20 indentation I set separately with sw=4 (although this is a flaw of vim that it's set like this) 20:19:21 elliott: that's just broken 20:19:28 > map val . iterate df . sin $ dVar (x :: Expr) 20:19:30 [sin x,1 * cos x,1 * (1 * negate (sin x)),1 * (1 * (1 * negate (cos x))),1 ... 20:19:35 * elliott continues using his broken editor happily. 20:20:08 why is it a flaw of vim that it can set tabs and indentations differently? 20:20:25 most editors can do that, to read code in the common indent = 2 spaces, 4 indents = 1 tab format 20:20:33 (I know it's common because I've seen it in quite a lot of third-party code) 20:20:42 s/third-party/GNU/ 20:20:45 On Linux, should I use emacs from the console or is a more graphical emacs acceptable? 20:20:47 2-spaces is not common in C outside of GNU code 20:20:55 it is used, but not very commonly 20:21:05 Sgeo: If you use a graphical Emacs, weasels will peck at your face. 20:21:05 Sgeo: only legitimate hackers use nano on console. 20:21:10 And we will consider you inferior. 20:21:14 Weasels, that is. 20:21:19 `quote GNU Tar 20:21:21 665) Real Tar is GNU tar. You just ignore whichever features don't make you feel superior enough. 20:22:43 @let nDerivs f = genericLength . takeWhile (/=0) . iterate df . f $ dVar (x :: Expr) 20:22:44 Defined. 20:22:51 elliott: I think 2-char-widths is the most common indentation I've seen for C 20:22:57 whether via spaces or mixed space/tab 20:23:03 although I see 4 from time to time 20:23:18 and occasionally 8 when someone's used only tabs 20:23:24 8 is horrid 20:23:49 elliott: clearly this is the most useful piece of Haskell code written, yes? (nDerivs) 20:24:02 ais523: It's true that if you fudge the numbers with your unpopular opinions, then you can derive incorrect results, yes 20:24:28 elliott: well, what width would you say code's using if it's indented only with tabs? serious question 20:24:52 I think you either have to count it as 8, or ignore it altogether as if it's not 8, there's no information about what it's intended to be 20:24:58 It's not, it's indentation-width agnostic. But what matters for statistics is whatever the majority of its authors uses. 20:25:15 ooh, a tab-width discussion 20:25:20 elliott: no, what the majority of its readers use 20:25:23 olsner: no, i'm not giong to let it develop that far 20:25:36 olsner: it's an indentation-width discussion, which is not quite the same thing 20:25:41 the width of a tab is the width of a tab. 20:25:47 ais523: oh, ok 20:25:58 actually, I'm ending it here since this is boring 20:25:59 -!- GreaseMonkey has joined. 20:26:06 -!- GreaseMonkey has quit (Changing host). 20:26:06 -!- GreaseMonkey has joined. 20:26:07 the file can specify a tab width through a modeline, thereby indicating its indentation width even if it's all just tabs 20:26:25 > text "\t" 20:26:29 olsner: I was thinking about that 20:26:32 olsner: indeed (although the reader is of course not bound to it, it's just to make the developers' job easier) 20:26:35 > text " " 20:26:36 but modelines are getting increasingly rare nowadays 20:26:42 olsner: actually i think that shoudln't be used at all 20:26:47 because it overrides each developer's individual preference 20:26:50 and arguably, if a file is tab-indented, the modeline should say it's tab-indented but not the size of a tab 20:27:14 > text . fix $ (' ':) 20:27:27 kallisti: text is strict 20:27:30 thread killed 20:27:55 bleh, I was looking for statistics but couldn't find them 20:28:13 I wonder if mixed spaces/tabs, in C, is more common than pure tabs 20:28:17 it must be quite close, I imagine 20:28:28 elliott, ais523: The IOCCC submission page has an "additional authors" option. 20:28:32 So, collab is A-OK. 20:28:33 ais523: That term is ambiguous. 20:28:40 elliott: right, just not public publishing 20:28:44 -!- zzo38 has joined. 20:28:52 ais523: *Gregor: 20:28:59 and nothing in the rules forbids public publishing 20:29:00 err, right 20:29:06 I think mixed spaces and tabs is the most universally disliked indentation 20:29:10 Gregor: They have a page? I thought you were meant to use their tool to generate a file to mail. 20:29:19 elliott: hmm, has it changed? there definitely /was/ a rule about using publicly published stuff in a previous year 20:29:25 elliott: no, there's a submission form nowadys 20:29:25 unless you're just mixing styles haphazardly all around 20:29:29 olsner: it's an ambiguous term; I bet ais523 would label tabs-for-indentation, spaces-for-alignment under that 20:29:35 olsner: but that's the /reasonable/ way to use tabs 20:29:46 elliott: They appear to have a page, although the page may ultimately just say "OK, give these options to the tool", I haven't gone through the whole process yet. 20:29:51 and the only tab-based indentation scheme anyone's advocated for years 20:30:21 elliott: actually, I was planning to count tabs-for-indentation, spaces-for-alignment as pure-tabs 20:31:04 although there are problems, such as if you want comments to line up in a correctly indented version of f(); /* comment */ if(x) { g(); /* comment */ h(); } 20:31:54 -!- lambdabot has quit (Ping timeout: 240 seconds). 20:32:03 bye lambdabot 20:32:17 hmm, I generally dislike alignment 20:33:09 * kallisti likes alignment 20:33:14 * elliott generally doesn't align too, but only because text sucks 20:33:26 I'm pretty OCD about aligning things properly. 20:33:33 I don't want to align multiple lines in ()s unless I can make the parentheses as large as the lines. 20:33:50 kallisti: aligning things like assignments is usually Wrong, because you never want to look at it like a table 20:33:54 I'm talking about things like e.g. 20:33:58 int f(int x, int y, ..., 20:34:03 int z, ...) 20:34:05 for declarations 20:34:06 we need a Unicode character for flexible indentation 20:34:28 ais523: U+??? ELASTIC TABSTOP? 20:34:28 elliott: yep, that's easy to align correctly 20:34:33 elliott: well I usually align assignments based on similarity of purpose... 20:34:38 elliott: yes! 20:34:39 *???? 20:34:48 I just find it easier to read when they're aligned. 20:35:00 ais523: the problem is that they aren't reducible to a character, I think 20:35:05 or, hmm 20:35:06 yes they are 20:35:33 ais523: one problem with elastic tabstops is that they force some visual space 20:35:35 so they can't do 20:35:37 int f(int x, int y, ..., 20:35:38 int z, ...) 20:35:54 I'm tempted to say that tabstops beyond the start of a line should have no space after their previous column 20:36:02 so you use two spaces before eacht abstop if you want to space inline comments out 20:37:46 ais523: but anyway, the tab character works for elastic tabstops as used in code 20:38:01 since alignment should never really be semantically meaningful there, like it would be for a table, it degrades gracefully 20:38:51 elliott: the problem is that the viewer would need to recognise it 20:39:06 ais523: nah; using elastic tabstops to view files with old-style tabs works fine too 20:39:06 and I often view code in things that aren't intended specifically for the purpose 20:39:25 tabs at the beginning of the line still work fine, which is 99% of them 20:39:31 elliott: are you going to change the entire installbase of everything - browsers, email clients, IRC clients, etc - to interpret tabs as elastic? 20:39:38 ais523: you don't have to? 20:39:44 elastic tabstops gracefully degrade 20:39:59 no they don't, they line up the things you're elasticating wrong except at the start of a line 20:40:12 also, are too wide at the start of a line 20:40:33 because believe it or not, the vast majority of software currently interprets tabs as 8 regardless of whether you think that's right or not 20:41:41 ais523: (a) that doesn't matter much; being slightly uglier but still making sense is the /definition/ of graceful degradation (b) troll 20:42:24 elliott: but what I mean is, the vast majority of software in existence has no reason to start interpreting tab as meaning something different 20:42:44 if you added it as a new Unicode character, though, they'd start interpreting it correctly over time 20:42:53 haha! 20:42:56 no they wouldn't 20:43:03 elliott: Unicode support has got better over time, has it not? 20:43:16 elastic tabstops are algorithmically non-trivial 20:43:28 oh no, kerio's just started up with the ssh fanboyism again 20:43:52 and "programmers who have compilers fancy enough to do elastic tabstops" is very niche 20:45:23 elliott: OTOH, the whole thing that drives development of most programs is what programmers want 20:45:33 no it isn't 20:45:43 well, hmm 20:45:46 that's one of the falsest things you've ever said 20:45:50 and that's saying something 20:45:51 counterexample: Windows 20:46:01 something no programmer wants 20:46:15 elliott: hmm, I think I may be right if you don't allow for popularity 20:46:21 most programs are written by programmers 20:46:37 "most" over such a large, varied space without some kind of filtering is ridiculous 20:49:18 -!- elliott has quit (Remote host closed the connection). 20:49:54 -!- elliott has joined. 20:50:30 -!- derrik has quit (Quit: :)). 20:52:00 -!- lambdabot has joined. 20:53:00 * elliott finally blocks Flash. 20:53:43 but then... 20:53:48 HOW WILL YOUTUBE? 20:57:10 through newfangles like html5 video, presumably 20:57:53 YouTube doesn't support HTML5 for all videos, I think 20:58:09 Also, there's a way to enable individual flash elements usually 20:58:21 If I didn't think of that, I'd ask how elliott would Homestuck 21:01:26 kallisti: I use a different browser for YouTube (and other video sites) than I do from everything else 21:01:32 that's the simplest solution 21:01:56 .. 21:02:08 is having flash on by default really that big of a deal? 21:02:08 there are others, of course 21:02:17 (I also have a third browser, for accessing Google-related sites) 21:02:54 ais523 is clearly the reincarnation of rube goldberg 21:02:55 kallisti: well 99% of flash files are just for shitty ads 21:03:06 ah see I fix this by not having ads ever. 21:03:24 privoxy: making google chrome usable. 21:03:47 oerjan: I also have a /fourth/ browser for accessing programming language documentation, but that's more about convenience than privacy 21:03:51 also, IE6, for testing sites in IE6 21:06:18 I use this magical thing called adblock 21:09:04 kallisti: it isn't magical; understanding it will make it better 21:09:11 in particular, I use it to block quite a few things that aren't adverts 21:09:12 elliott 21:09:19 it's a generic annoyance-blocker, for me 21:09:33 for the web 21:10:31 ais523: how and this whole time I thought it was voodoo 21:10:35 s/how/wow/ 21:10:51 `quote elliott 21:10:52 188) elliott: i like scsh's mechanism best: it's most transparent and doesn't really serve a very useful feature. \ 191) elliott: it's hard to debug havoc on your mirror if you accidentally hit r, then a character could be multiple words long, depending on the task. \ 200) elliott: My university has two Poultry Science buildings. Two! \ 209) Vorpal loves the sodomy. 21:11:09 kallisti: it basically blocks images or elements by URLs or URL+rules for locating it on a page (ID, etc) 21:11:25 poor Gregor studying in such a fowl place 21:11:25 but basically, you see something that annoys you (particularly an image), you just right-click on it and tell adblock to get rid of it 21:11:45 (what do you _mean_ i used that pun yesterday too?) 21:11:55 oerjan: hmm, that indirectly reminds me of the day there was an enormous gas odoriser leak 21:12:05 that caused a bit of chaos 21:13:08 * oerjan doesn't know what gas odoriser is, but imagines it's something you add to odorless poisonous gas in order to make it noticable 21:13:19 which would explain the chaos 21:13:32 oerjan: not poisonous, it's added to methane 21:13:41 because leaked methane is a huge fire risk 21:13:45 right, explosive would work too 21:14:48 *+e 21:16:06 ais523: ....WOW REALLY? 21:16:08 I HAD NO IDEA. 21:16:50 this whole time I have been using AdBlock and had no clue how it operates, or the features it sports. 21:17:14 bleh, I'd love this all to be non-sarcastic, but I can't imagine it is 21:18:04 this whole time I have been thinking kallisti only spoke in literally truth 21:18:09 ais523: no I really am just as stupid as you think I am. :P 21:18:15 *-ly 21:19:34 oerjan: I was under the impression that every statement on IRC was truthfully spoken. 21:20:10 yeah me too 21:20:24 shocking, isn't it 21:21:22 I am don't know what think 21:21:44 and also everyone always use perfect grammar 21:21:44 "A new study in the Journal of Sexual Medicine said that men who put their penises in animals have a higher likelihood of penis cancer. " 21:21:49 interesting 21:22:17 but who were the control group 21:22:19 kallisti: cause or effect? 21:22:39 ais523: penis cancer increases the chance of bestiality, yes 21:22:47 ais523: are you suggesting that people who develop penis cancer -- yes 21:22:50 what elliott said 21:22:54 elliott: that's not /obviously/ false, right? 21:23:17 "A member of a pro-zoophilia group told The Huffington Post by email that the results of the study should prompt people to take precautions, like using a condom, when having sex with animals." 21:23:21 loooool 21:23:25 ais523: clearly this must be a proper study so it was obviously double-blind with neither the subject nor the experimenter knowing whether what they were fucking was an animal 21:23:26 X-D 21:23:38 But it doesn't cure penis cancer if you do it that way! 21:23:51 oerjan: hmm, what proportion of each group was female? I think I've noticed a potential skew in the statistics 21:24:14 surely this would have been noticed during peer review 21:24:22 ais523: "men who" 21:24:28 bleh 21:24:29 oerjan: no no, neither the subject nor the experimenter knew whether they had penis cancer or not 21:24:42 "We think that the intense and long-term SWA [sex with animals] practice could produce micro-traumas in the human penile tissue. The genital mucus membranes of animals could have different characteristics from human genitalia, and the animals' secretions are probably different from human fluids. 21:24:48 Perhaps animal tissues are less soft than ours, and non-human secretions would be toxic for us." 21:25:00 pleasant imagery 21:25:00 oerjan: unfortunately many of the experimentors later died of this, having not received treatment 21:25:16 SWA practice 21:25:23 just gotta go 21:25:24 practice my SWAs 21:25:52 "Perhaps animal tissues are less soft than ours" <-- this is false, see: toilet paper advets 21:25:53 adverts 21:25:56 * Sgeo remembers reading about fruit flies, or something, and I forget the exact details, but the male's semen could become toxic to the females 21:26:01 elliott: SWA? 21:26:07 puppies and koalas have soft tissues too 21:26:08 * kallisti googled for: mucus membrane goat vagina chemicals 21:26:11 ais523: "We think that the intense and long-term SWA [sex with animals] practice could produce micro-traumas in the human penile tissue. The genital mucus membranes of animals could have different characteristics from human genitalia, and the animals' secretions are probably different from human fluids. 21:26:17 ah 21:26:29 * Sgeo remembers reading about fruit flies, or something, and I forget the exact details, but the male's semen could become toxic to the females 21:26:36 Sgeo googled for: xxx fruit fly 18 or over 21:26:47 elliott: ................ 21:26:53 elliott: that was such a horrible joke. 21:27:00 in fact 21:27:01 you're such a horrible joke 21:27:07 fruit flies rarely live to 18 21:27:12 it crossed the so-horrible-it's-good coundary 21:27:13 ais523: I was thinking of saying that 21:27:16 yes coundary 21:27:19 i recall that non-human mammals have barbed penises but this would be more a problem for bestial women, obviously 21:27:32 elliott: I was actually going to make a joke along those lines earlier, but didn't have a good opportunity 21:27:35 oerjan: that's not a universal thing 21:27:38 thanks for giving me one 21:27:44 ais523: haha 21:27:49 oerjan: I know cats in particular have those. 21:27:59 kallisti: i vaguely thought nearly all mammals did 21:28:10 whereas snails copulate by stabbing each other in the neck 21:28:46 Also some humans. 21:28:50 oerjan: oh hmmm maybe 21:28:59 hmm, snail bestality doesn't sound like fun 21:29:12 oerjan: I think it's common in mammals anyway 21:29:59 gah, now I have a huge urge to reference the hedgehog song 21:30:05 so I will, and see who catches the reference 21:30:21 ais523: i cannot be bothered at all? 21:30:50 oerjan: hmm, the original was a bit more vulgar, but that's close enough 21:31:04 oerjan: apparently the lack of a certain gene removes barbed penises and results in larger brains? or something? 21:31:19 ais523: was that the reference? 21:31:28 (on another note, I love the way that the standard way to indicate that you get a reference is to make a different obscure reference to the same thing) 21:31:39 ais523: oh, i only know it from some discworld books where it may have been bowdlerized 21:31:44 ah, right 21:32:07 I'm referencing the discworld books too, but it almost certainly /was/ bowdlerized in your version 21:32:14 as that seems more likely than antibowdlerizing it in mine 21:32:26 oerjan: http://www.lspace.org/fandom/songs/hedgehogsong.html 21:32:36 _or_ i may simply have misrembered the words 21:32:43 elliott: I take it you searched rather than having the link mesmerized? 21:32:58 ais523: My brain actually stores everything in URL form. 21:33:02 For instance that previous line was 21:33:13 http://ais523.elliott.i.take.it/you/searched?rather=than&having=the#link,mesmerized 21:33:16 bonus points if you give a link to the logs for that line? 21:33:19 oh, boring 21:33:20 I don't see what mesmerification has to do with it though. 21:33:30 ais523: I never said they were /useful/ URLs 21:35:12 now I'm wondering if that URL is valid, but don't want to click it just in case it is 21:35:15 kallisti: _or_ humans just improved on the bonobo culture by making it less painful 21:35:19 take.it is almost certainly a valid domain 21:35:33 it is 21:35:34 it's a 404 21:35:35 but that doesn't say much about what it does with subdomains it doesn't recognise 21:35:39 404 - Questa pagina non esiste o è stata rinominata 21:35:41 404 seems reasonable 21:35:47 take.it is 403 :( 21:35:54 who 403s their homepage? 21:35:58 *bonobo-style, we're not their descendants... 21:36:04 (besides, how do you log in if the homepage is 403?) 21:36:14 (and you aren't using HTTP auth?) 21:36:21 ais523: log in to /what/? 21:36:28 elliott: whatever causes it to stop 403ing 21:36:36 nothing, one presumes 21:36:42 most common 403 reason is lack of auth, isn't it? 21:36:47 no 21:36:51 and you don't 403 an important page like a homepage unless there's some way to view it 21:36:54 most common 403 reason is someone put 403 there 21:36:58 to stop people viewing it 21:37:03 e.g. a subdirectory that isn't meant to be web-exposed 21:37:13 yep, but that doesn't apply to the homepage itself 21:37:17 like internal files for some web application that exists in the web root 21:38:01 yep, but they're unlikely to be called index.html 21:38:10 elliott: URLS should be graph-based instead of strictly trees. 21:38:21 I don't even know what that means exactly. 21:38:58 ais523: yes that is exactly 1 possibility in a set of infinite possibilities 21:39:03 ais523: so not very likely 21:39:06 * kallisti good math 21:39:25 ABSTRACTION IS HARD 21:39:44 kallisti: if the probability really is 1/infinity, the likelihood can still be quite high 21:39:54 elliott: CONCRETE IS ALSO HARD 21:40:02 (for likelihood, just think probability except that you multiply everything by infinity to get it back into non-infinitesimal units) 21:40:08 (well, it's more complicated than that, but it always is, right?) 21:40:27 ..wat 21:40:47 kallisti: ordinary probabilities add to 1, right? 21:40:48 ais523: elliott isn't asking you to kick me, i'm disappoint 21:40:51 likelihoods integrate to 1 21:41:02 ais523: are you just making stuff up 21:41:02 oerjan: I thought concrete was more tough than hard 21:41:05 or is that an actual thing. 21:41:05 kallisti: no 21:41:14 it's a perfectly plausible thing 21:41:18 for, say, probability distributions 21:41:23 which return reals 21:41:24 right but do people call them likelihoods 21:41:29 the chance of getting any particular real is 0 21:41:30 or is just, a... continuous probability distribution. 21:41:45 and that name is used for them sometimes; I've heard "probability density" too, but it's a boring name 21:42:30 right well it's meaningless to talk about the probability of a single real in a continuous distribution 21:43:02 unless the measure has atoms 21:43:23 s/atoms/discrete units/ 21:43:42 well atom is the term usually used in ergodic theory 21:43:54 and probably measure theory 21:43:59 ........... 21:44:02 ergodic? 21:44:13 lebesgue space ftw 21:44:14 kallisti: http://en.wikipedia.org/wiki/Likelihood_function 21:44:15 seriously you have to making that up. -googles- oh, no. 21:44:18 ... 21:44:32 -!- oklopol has changed nick to mathematician. 21:44:34 [elliott@dinky ~]$ grep -r s2w . 21:44:35 ./.bash_history:grep -r map_s2w . 21:44:35 wrong directory 21:44:44 i hope this clears things up 21:44:58 -!- mathematician has changed nick to flyingdick. 21:45:10 this is better thought 21:45:12 *though 21:45:47 f 21:46:43 f 21:47:34 flf 21:47:41 flyingdick: oh my, I didn't realize your credentials. Excuse me for thinking (read: joking about how) ergodic sounds like a made up thing. 21:47:43 f|f|f 21:47:55 oerjan: haha at whatever font you're using 21:47:56 wait what 21:47:58 unless that was deliberate 21:47:59 you're lucky i didn't kick you out of here 21:48:01 asshole 21:48:04 that was just 21:48:06 wrong 21:48:12 ais523: no i just need glasses, obviously 21:48:12 hmm, why doesn't oklopol have op powers 21:48:13 -!- flyingdick has changed nick to oklopl. 21:48:14 there's no way that could go badly 21:48:17 -!- oklopl has changed nick to oklopol. 21:48:21 sorry i was kind of a dick there 21:48:32 -!- elliott has changed nick to oklopl. 21:48:37 yeah i think i should have op powers 21:48:40 hi 21:48:44 -!- oklopl has changed nick to elliott. 21:48:50 yeah but seriously though give oklopol op powers 21:48:51 i would kick everyone who doesn't blindly accept everything i say 21:49:05 oerjan: /msg chanserv #esoteric op oklopol, thanks 21:49:08 especially if they're right 21:49:08 elliott just likes to find excuses to kick me indirectly. 21:49:15 why would he want to kick you 21:49:21 because that's.... what 21:49:24 is that even a question 21:49:37 yes 21:49:45 BECAUSE THIS IS WHAT ELLIOTT DOES. 21:49:46 -!- Klisz has quit (Read error: Connection reset by peer). 21:49:48 it's like an axiom. 21:49:57 like, if there were a typeclass called WantsKick 21:50:00 kallisti is so paranoid 21:50:01 then it would be like 21:50:10 instance WantsKick Elliott Kallisti 21:50:13 elliott wants to kick us and hear the lamentations of our women, that just goes with the evil overlord thing 21:50:23 you don't _have_ women. 21:50:30 details. 21:50:48 also some here do. 21:51:02 some here are actually _married_, unless they've been lying. 21:52:46 -!- Klisz has joined. 21:52:51 oerjan: I'd say the pairing graph for #esoteric is mostly edgeless. 21:53:56 In the area of graph theory in mathematics, a signed graph is a graph in which each edge has a positive or negative sign. 21:53:59 interesting 21:54:10 sign this graph, please 21:54:25 hmmm... but no zero edge? 21:54:40 MY GRAPHLANG HAS A ZERO SIGN 21:54:45 like... whatever the sign of zero is. 21:54:50 but in graph edge form. 21:55:07 past edge = -, present edge = 0, future edge = + 21:55:09 or something 21:55:31 hmm, w2s can go eventually but we need it for now; s2w is used in multiple cases... 21:55:48 but i don't really want _two_ functions to do the same thing 21:57:23 elliott: I thought the Haskell slogan was "there's more than one function to do it" 21:57:31 not haskell 21:58:14 yeah haskell only has the bare minimum, like map, fmap, (.), liftA, liftM and (<$>). 21:58:26 how is (.) like map/fmap? 21:58:38 ais523: (e ->) instance 21:58:41 :t (.) 21:58:41 forall a b (f :: * -> *). (Functor f) => (a -> b) -> f a -> f b 21:58:51 god bless caleskell 21:59:04 calemeriskell 21:59:45 I thought (.) was function composition; is that a special case of a general definition? 21:59:53 Sgeo: updelskell 22:00:18 kallisti, when have I ever trolled you about updates? 22:00:40 Sgeo: why would you confuse yourself with me? 22:00:44 clearly I am doing the trolling. 22:00:53 eiieojwoiiwoijwoijeoiwjow 22:00:55 :) 22:01:01 I just wish I knew why you were doing it 22:01:18 Sgeo: it's because I love you. :3 22:01:20 ais523: that's cale's idea of letting lambdabot have generalized versions of standard functions 22:01:28 :t (++) 22:01:28 forall m. (Monoid m) => m -> m -> m 22:01:32 :t flip 22:01:32 forall (f :: * -> *) a b. (Functor f) => f (a -> b) -> a -> f b 22:01:46 Sgeo: friendship troll 22:01:52 oerjan: hmm 22:02:06 ++ on Monoids disturbs me 22:02:12 wat 22:02:25 (++) should obviously be generalised to monoids 22:02:26 mostly because the monoid version of ++ is mostly just coincidence that append is the most appropriate operation on lists 22:02:35 elliott: yes, agreed; I just disagree with ++ being the name for that 22:02:43 ...why 22:02:43 ais523: then you disagree, and misread my statement 22:02:44 ais523: that's what it was like in haskell 1.4, i think, or maybe it was MonadPlus. 22:02:44 it's great. 22:02:52 oerjan: it was MonadPlus 22:03:01 * elliott would rather remove (++) and make (<>) the monoid operation 22:03:06 elliott: I'd be fine with that 22:03:23 ++ could be MonadPlus and <> could be Monoid 22:03:31 ais523: really? 22:03:35 ais523: (++) doesn't inherently mean append. 22:03:39 it's just two symbols. 22:03:43 hmm, perhaps 22:03:52 kallisti: MonadPlus needs to go away 22:04:03 OCaml uses @ for list append (and its operators aren't polymorphic), I was interesting that it had a one-char name for something that specific 22:04:09 elliott: I disagree, we should have two more of them, and two more Monoids 22:04:16 although I guess it's nice to have with MonadZero, which is nice because you don't need a constraint per a 22:04:34 ais523: you was interesting? 22:04:38 elliott: also n-parameter monoids, for monoids with two type parameters and more. 22:04:44 elliott: interested 22:04:53 also, *you were interesting? 22:05:02 no, you was definitely interesting 22:05:05 grammar transformations of bad grammar has rules! 22:05:44 grammar of bad grammar 22:07:30 ais523: *have 22:08:06 elliott: yep, I Muphried myself somewhat there 22:08:15 which is strange, as I mostly don't get caught in Muphry's Law 22:08:21 :) 22:09:06 oh, youtube redesigned 22:09:09 everything's so different 22:09:15 `? monoid 22:09:17 Monoids are just categories with a single object. 22:09:20 ais523: oh, oops, i was trying to make it incorrect 22:09:49 elliott: they've... Facebookitized it. 22:09:54 what 22:09:55 elliott: what, /again/? 22:10:17 elliott: they're using a similar layout to what facebookuses 22:10:24 chrome users: is chrome adblock or adblock plus for chrome better? 22:10:28 and can either block youtube video ads? 22:10:44 I believe adblock plus can 22:10:55 I dunno anything about chrome adblock 22:10:57 but adblock plus works fine. 22:11:04 it's just called "adblock" 22:11:04 I sometimes forget the internet has ads. 22:11:15 it's more popular than adblock plus, though probably only because it's older 22:11:31 ofc adblock plus is the most popular extension for any browser 22:11:35 elliott: oh wait... 22:11:36 but the codebase is different for chrome, so :P 22:11:40 elliott: no I'm using Adblock apparently 22:11:54 kallisti: right. not the same thing, it rides on having a similar name to the unrelated Firefox extension... 22:12:02 Adblock Plus is the official port 22:12:07 ah 22:12:25 I wonder which is better. 22:12:32 that's what I just wondered. 22:13:29 -!- Ngevd has joined. 22:14:02 oh hmm 22:14:04 -!- Phantom_Hoover has quit (Ping timeout: 244 seconds). 22:14:07 I never did figure out where to put that patch 22:14:10 looks like adblock plus uses the same filtering engine as the firefox version's 22:14:12 Ngevd: what patch 22:14:19 For Dungeons of Drednor 22:14:47 s/dno/dmo/ 22:15:15 elliott: reviews for Adblock Plus seem to suggest that it is better 22:15:16 imagine that. 22:15:22 howso 22:15:37 "Sorry, but i thinks it works fine. I have NO adds on any site. and it is still much faster than addblock! adblock (that without plus) slows down every webpage i visit. ABP ist still "the same" like adthwart (only the laughing devil i miss :) )" ;; this person seems too stupid to trust 22:15:39 -!- boily has quit (Quit: WeeChat 0.3.6). 22:16:12 meh, it seems better 22:16:13 * elliott installs 22:16:16 lol 22:16:27 elliott: it's a good thing you consulted an expert opinion 22:16:33 better against the adds 22:16:57 "Block ads inside YouTube videos" yay 22:17:27 -!- Jafet has quit (Quit: Leaving.). 22:18:00 they both more or less use the same filters. 22:18:08 though Adblock seems to have more foreign language filters in the checklist 22:18:15 CHAINSAW EVERYONE AND CHAINSAW EVERYTHING 22:18:25 oklopol: i agree, someone op oklopol 22:18:26 oerjan: op oklopol 22:18:29 ais523: op oklopol 22:18:58 well really i deserve ops, i've been here longer than anyone else 22:19:00 elliott: just because someone's stupid doesn't mean they're wrong 22:19:32 ais523: very true, but they don't seem articulate enough about their technical experience to have judged it correctly 22:19:48 yep, so if they're right, it's by chance 22:19:51 and "Sorry, but i thinks it works fine." seems to imply it's a reaction to a negative review, which makes me trust it less 22:21:17 olsner: You use vim, right 22:21:24 elliott: I do indeed 22:21:41 olsner: do you move with vikeys or numpad? 22:21:43 olsner: What indentation style do you use 22:21:51 ais523: vim does numpad? 22:22:04 oh, numpad has arrow keys without numlock 22:22:06 ais523: usually arrow keys :> 22:22:08 you can't go diagonally though 22:22:15 elliott: the discussion came up in #nethack recently, and someone said they used numpad for vim but vikeys for nethack 22:22:31 haha 22:22:35 joking, surely? 22:22:39 olsner: olsner: What indentation style do you use 22:22:53 elliott: I don't think so 22:23:08 elliott: I use tabs as though there spaces. 22:23:10 ais523: what was kerio ssh-fanboying about, btw? 22:23:14 so usually 8 tabs per indent 22:23:18 let's see... sw=4 ts=4 sts=4 noet cinoptions={0,:0,t0,g0,^0,e0,n0,p2s,(2s,f0 cinkeys=0{,0},0),:,0#,!^F,o,O,e 22:23:25 olsner: no, that was a non-vim question :) 22:23:30 I guess that's the relevant part of my vimrc for indentation style 22:23:43 help vim scares me. 22:23:46 vim scares me more than emacs. 22:23:50 I actually know at least one person, probably more, who's a casual vim fanboy (think offhand Emacs-bashing and using vim at every opportunity) yet spends their time moving around with the arrows in insert mode 22:24:11 elliott: and asking if there was an ssh port for the amiga, when the topic came up about how good it was at playing nethack 22:24:19 ais523: I can yell at them for you, if you'd like 22:24:30 topic's changed, unfortunately 22:24:34 you could yell at him on general principles 22:24:35 I meant 22:24:35 I actually know at least one person, probably more, who's a casual vim fanboy (think offhand Emacs-bashing and using vim at every opportunity) yet spends their time moving around with the arrows in insert mode 22:24:40 oh 22:24:42 that's real-life knowing 22:24:47 so you'd have to come to Birmingham 22:24:48 oh 22:24:49 my condolences 22:24:53 ais523: I do quite a bit of arrow-moving in Emacs when I probably could avoid it sometimes. 22:24:56 * elliott adds to "list of reasons to avoid birmingham" 22:25:03 elliott: heh 22:25:05 -!- Phantom_Hoover has joined. 22:25:29 the person I have in mind is my other boss (I have two part-time jobs, he's the boss for half the teaching one rather than Dan who's the boss for the other half + the PhD) 22:25:35 -!- pikhq has joined. 22:25:52 -!- pikhq_ has quit (Read error: Operation timed out). 22:26:02 -!- Ngevd has quit (Quit: dredmor time). 22:26:24 hmm, is Dredmor good enough that I should buy it, I wonder? opinions of the channel? 22:26:26 and how much time is left? 22:26:44 elliott: oh and google has once again changed 22:26:55 elliott: I never learned what the style is called 22:26:59 ais523: I haven't played it yet, but have you played any introversion games? 22:27:03 but the one with braces on their own lines and unindented, tab indented, tabs at 4 spaces (obv. works fine for other tab widths...) 22:27:08 I'm not sure; probably not 22:27:15 olsner: Any alignment? 22:27:17 unless I've played one without mentally noting the developer, which is possible 22:27:17 ais523: Buy it 22:27:18 olsner: gross 22:27:29 elliott: no, I just indent continuations by one or two indents 22:27:35 olsner: I prefer the open brace on the same line as the statement 22:27:41 ais523: Uplink is amazing, Darwinia is meant to be even more amazing but I haven't played it yet, DEFCON is cool 22:27:48 ais523: DID YOU SEND A PAPER TO STACS 22:27:56 oklopol: I don't think so 22:27:58 ais523: 5 days are left 22:28:12 -!- oerjan has quit (Quit: Good night). 22:28:20 do you know stacs? i suppose it might be for more theoretical stuff than yours 22:28:31 elliott: gah, they sent me an email in Markdown, that's almost enough to boycott them 22:28:33 oklopol: I don't 22:28:44 ais523: err, Markdown was intended to be suitable for emails 22:28:48 -!- Patashu has joined. 22:29:03 ais523: but who did? 22:29:08 elliott: Humble Bundle 22:29:15 elliott: it would be cool if df allowed you to have more control over how your soldiers fight 22:29:16 and () around URLs is just so ugly 22:29:19 * elliott receives those as HTML mail 22:29:22 elliott: maybe with like... scripts. 22:29:27 ais523: that's why you use the alternate link syntax 22:29:30 simple declarative scripts 22:29:35 elliott: that one was using []() 22:29:36 elliott: have I answered your question now? :) 22:29:39 that you can turn on and off. like "fighting styles" 22:29:43 is /that/ enough of a reason to hate the email? 22:29:44 olsner: yes, unfortuantely it means you're useless 22:29:51 ais523: no 22:30:23 oh noes! he said I'm useless 22:31:00 olsner you know you alright. 22:31:04 useless sounds fun when you pronounce the use as though it were the verb use 22:31:13 yooze instead of yoose. 22:31:30 also different emphasis 22:31:41 -!- Klisz has quit (Ping timeout: 248 seconds). 22:31:44 wait, I know! 22:31:48 -!- Klisz has joined. 22:31:53 gah, seems that Amazon is memorizing my credit card number too 22:32:04 elliott: what use did you hope to have of me? 22:32:06 in /addition/ to running no security checks on the card number 22:32:09 well isn't that nice, you don't have to give it to them every time 22:32:12 ais523: it just /really/ wants everything to be convenient for you doesn't it? 22:32:20 err, debit card 22:32:28 olsner: if you used tabs-for-indentation-spaces-for-alignment and vim 22:32:45 kallisti: it's reasonable from Amazon's point of view, but not from the bank's 22:32:50 elliott: I use all-spaces, out of habit from my Python days. 22:33:03 ais523: fuck the bank. :P 22:33:05 kallisti: you also don't use vim afaik 22:33:16 elliott: what makes vim important here? 22:33:18 I think I've only seen alignmentism together with fundamentalist spaceism 22:33:29 kallisti: you don't know 22:33:42 elliott: wow you have amazing deduction skills. 22:35:19 oh well, I believe it has become DS9 time again 22:35:25 olsner: is "alignmentism" kind of like "being really OCD about aligning things"? 22:35:28 because I'm that. 22:35:59 I might switch to tabs though. it makes more sense to me. 22:36:15 tab-indents with spaces for alignment 22:36:16 kallisti: something like that yes 22:36:40 elliott: I'm also considering boycotting Introversion for making every single image on their webpage set a cookie 22:37:25 ais523: oh no, not cookies 22:37:43 kallisti: there is no reason to set a cookie in more than one image from the same domain in a page 22:37:57 and it aggravates people who approve/disapprove all cookies manually 22:38:02 I too am really concerned about this common nearly unavoidable feature of modern websites. 22:38:12 ais523: maybe you shouldn't do that. that sounds terrible. 22:38:14 kallisti: cookies can be useful, when they have a reason to exist 22:38:28 like, basically every webpage starts with you clicking a bunch of dialogs right? 22:38:34 the only sensible use of setting a cookie in an image that I've seen is Wikimedia's cross-site logon thing, though 22:38:42 kallisti: far from every, maybe about 5-10% 22:38:53 most of them are well-designed cookie-wise, and only require a couple of allow/deny 22:39:14 quite a lot of sites set two cookies then modify one; I think it's some sort of anti-bot mechanism 22:40:23 elliott: hmm, Uplink's premise seems very mindlessly destructive 22:40:33 all the Introversion advertising just implies to me "this is not the sort of game ais523 would enjoy" 22:40:47 * elliott has never once looked at the advertising. 22:41:07 * kallisti has adblock installed in his brain. 22:41:32 if I go to the mall, then the people trying to advertise stores just disappear when they start talking to me. 22:41:46 I'd say only 99% is mindless destruction 22:41:52 (note: I don't actually go to the mall, but it's happened before) 22:42:01 ais523: anyway, Darwinia is one of the best-reviewed games I've ever heard of, if that means anything 22:42:07 hmm 22:42:07 ais523: best game ever is magicka 22:42:14 I suppose I'd prefer to trust reviewers I trust 22:42:20 elliott, is it safe to say that 1% of Uplink is NOT mindless destruction? 22:42:29 I bought Advance Wars based entirely on the recommendation of Teletext's computer game review column 22:42:35 and then went and bought all its sequels 22:42:37 magicka is 100% careful deliberate mindless destruction 22:42:40 Uplink would be hard to play if you just mindlessly destroyed thinsg. 22:42:47 Generally people who want files stolen don't want you just to trash a machine. 22:42:58 elliott, I'm in particular referring to plot 22:43:01 elliott, is it safe to say that 1% of Uplink is NOT mindless destruction? 22:43:20 Sgeo: Umm, not the Arunmor storyline? 22:43:22 Phantom_Hoover is typing. 22:43:25 It's more than possible to go through the game having never deleted anything, although I think the story does require it. 22:43:31 elliott, I was referring to that in particular 22:43:38 "Half the plot" = 1% of the game 22:44:05 ISTR that the Arunmor storyline requires at least one destructive attack. 22:44:13 elliott: didn't you know that plot is only like 2% of a game? 22:44:34 ais523, there you go. Half the plot, minus a bit, is not mindless destruction 22:44:55 haha 22:45:03 magicka is probably better than uplink 22:45:09 ais523: anyway, even if the /idea/ is mindless destruction, the gameplay isn't 22:45:10 I base this on my extensive knowlege of uplink 22:45:12 (not really) 22:45:16 Oh, wait, no it doesn't. 22:46:02 It requires that you destroy Arunmor's ISM as a false flag operation, but that's hardly mindless destruction. 22:46:13 GAH SPOILERS EVERYTHING IS RUINED 22:46:41 Honestly, hardly any of Uplink is mindless destruction. 22:46:59 It's not like even Andromeda hire you to FUCK SHIT UP. 22:47:38 Yeah they do, they just think the shit is pernicious. 22:48:45 ais523, anyway, Darwinia is extremely good. 22:49:05 I can't even seem to get started with Darwinia 22:49:15 * Sgeo sucks at Darwinia. Can barely do the tutorial 22:49:28 You can't make it through Garden? 22:49:31 Seriously? 22:49:48 The level which consists of "create squad, right click until virii are gone." 22:50:10 Sgeo: don't ever play starcraft. 22:51:51 The virii keep killing my squad 22:52:12 It took a while before I worked out that I needed to make a squad 22:52:22 * Sgeo is easily amused by the Darwinia intros 22:52:28 Sgeo, did you know that there are these things called ranged attacks. 22:52:46 You can use them to pick the virii off before they get near enough to damage your squad. 22:53:42 Phantom_Hoover: real-time strategy? 22:53:57 It's kind of a mixture, I suppose. 22:54:19 Darwinian control is RTS, but I still haven't reached the point where that's meant to come in. 22:54:28 I think I just came up with the worst game idea ever: Mario Party MMO 22:54:53 Otherwise, it's kind of a top-down shooter thing? 22:55:33 * Sgeo decides that playing Darwinia windowed is not feasible 22:56:52 Phantom_Hoover: a mixture with which? 22:57:10 kallisti: there's a game mode in Pokémon HeartGold/SoulSilver which is pretty much exactly that 22:57:11 Yay wireless headphones 22:57:14 but with Pokémon instead 22:57:15 Top-down shooter thing. 22:57:29 Sgeo, I managed fine. 22:57:50 ais523, you directly control squads by left clicking on destinations and right clicking to fire. 22:58:22 hmm, like an RTS except requiring more micromanagement 22:58:27 You control Darwinians by promoting one of them to an officer, and controlling that through a similar method to a squad, except all the commands tell the Darwinians where to go. 22:58:51 Not really; it's designed so you only use one squad at a time. 22:59:16 They have autofire, but it's basically useless. 22:59:41 bleh, my TV Tropes links-clicked-per-page rate is now sufficiently below 1 that I can never stay there very long 23:00:18 ais523, probably the best way to see what the gameplay's like is just to play the first level, which is short and extremely easy if you're not Sgeo. 23:00:27 * Phantom_Hoover → sleep 23:00:27 ais523: which mode is the mario party mmo? 23:00:28 -!- Phantom_Hoover has quit (Quit: Leaving). 23:00:31 but that'd mean downloading and installign and running the game 23:00:40 olsner: is there a way to stop vim from creating the .swp files 23:00:44 coppro: oh, I've forgotten what it's called, but it has Poké Floats in it 23:00:47 i keep getting OMG SWAP FILE when i open a vim 23:00:54 ais523: that's pretty much exactly how starcraft works. left click to move right click to fire. 23:01:13 ais523: that's a smash bros stage 23:01:36 coppro: I know, it's based on the Pokémon game mode (all smash bros stages but final destination are references to /something/) 23:02:11 Hanenbow I don't think is a reference to anything in the Nintendo universe. 23:02:19 but it's kind of a special stage. 23:02:28 also, just to nitpick, Battlefield isn't based on anything. 23:03:14 oh nevermind 23:03:22 Hanenbow (pronounced Hay-nin-bow) is a new unlockable stage in Super Smash Bros. Brawl. It comes from a music-themed Nintendo DS game, which features extensive interactivity with the microphone; called Electroplankton. 23:03:38 coppro: found it: Wi-fi Plaza 23:03:48 http://bulbapedia.bulbagarden.net/wiki/Wi-Fi_Plaza 23:05:03 hmm, I hate booleans 23:05:22 elliott: use Maybe () instead? 23:05:39 elliott: use const and flip const instead. 23:05:40 heh 23:05:43 much better. 23:05:46 those are just church booleans! 23:05:50 EVEN BETTER 23:07:14 elliott: OK, use 1 and 2 then, and make it arbitrary which is true and which is false depending on what you want to use them for 23:07:26 23:07:30 these are all just different representations of booleans ;P 23:07:31 *:P 23:07:48 elliott: OK, then, use 01XLHWU- 23:08:00 hmm, I've probably forgotten a possible value there 23:08:02 elliott: use Maybe Bool instead 23:08:02 "The ulimit -v command can be used with ASan-ified binaries. However, you should remember that ASan consumes 16 terabytes of virtual memory for shadow state and the ulimit -v value should be set accordingly." 23:08:13 elliott: three-value logic ftw 23:08:26 elliott: or use integers for many-valued logic!!! 23:08:29 kallisti: VHDL std_logic beats three-value logic out the water 23:08:45 it models error conditions for booleans as well as the usual values 0 and 1 23:08:54 oh, and Z 23:08:58 01XLHWZU- 23:08:59 there we go 23:09:01 nine-valued booleans 23:09:05 ais523: also unknown 23:09:12 that's U, one presumes 23:09:41 not quite; U means unknown state at power on, - means a value that's being disregarded (i.e. don't know and don't care) 23:09:52 either is a reasonable description of unknown 23:11:11 Are any of them mu? 23:11:18 mu is a !boolean 23:11:34 elliott: if you solve the halting problem you can just use terminate and non-terminate 23:11:48 that's another representation of a boolean! 23:11:55 Well yes, it's not boolean, that's why it's included~ 23:12:03 elliott: I'm not sure I understand what you want to replace booleans with then. 23:12:04 Or should be. 23:12:04 MDude: nope, the problem with mu is that it unasks the question, and the hardware equivalent would be sending electrons in the other direction 23:12:16 except that typically, electrons flow one way for true and the other way for false 23:12:29 ais523: ONLY TYPICALLY!!! 23:12:40 kallisti: I never even said I wanted to, I just said I hate booleans 23:13:42 I thought mu was more just "your question is stupid presumes something that is wrong". 23:13:51 -!- Klisz has quit (Quit: You are now graced with my absence.). 23:13:56 your grammar is stupid presumes something that is wrong :D 23:14:00 The most important thing to remember is: Don't Panic. Or at least, panic at your leisure. 23:14:06 * Sgeo remembers a post on Less Wrong 23:14:46 -!- Klisz has joined. 23:14:52 elliott: dude I just figured out natural language 23:15:00 so basically you use a clever evaluation strategy. 23:15:16 for example: "your mom" evaluates to the value "your mom" 23:15:28 which can then be composed with other expressions 23:15:40 hmm, this is annoying 23:15:54 http://lesswrong.com/lw/po/three_dialogues_on_identity/ 23:16:02 ais523: quick, should I worry about a duplicate hashtable lookup? 23:16:22 elliott: nah it's still O(1) 23:16:25 elliott: if you're not using a cryptosecure hash, yes 23:16:32 (:P) 23:16:35 you're going to get collisions in practice 23:16:45 ais523: err, wait, what? 23:16:47 it's OK to use an inefficient resolution mechanism unless you have a very small hashtable, though 23:17:01 elliott: I don't think anyone uses cryptohashes for hash tables 23:17:07 ... 23:17:10 but, you never know, with enough memory/disk space you /could/ 23:17:33 -!- sebbu has quit (Ping timeout: 248 seconds). 23:17:36 ais523: are you sure you haven't misread my statement? 23:17:36 and for something like git/sg's stores by hash, it makes sense 23:17:39 elliott: no 23:17:46 ais523: try looking at it again 23:17:58 I'm having difficulty parsing "duplicate hashtable lookup" 23:18:23 aka two identical hashtable lookups to do one operation 23:20:41 oh dear, I killed the wrong chromium proecss 23:22:44 it can recover, right? 23:22:57 no, it was the root one 23:23:50 elliott: if Firefox gets accidentally killed, even the whole thing, it can go back to the point it was at upon restart 23:24:02 often with a confirmation in case one of the pages crashes it again 23:24:05 so can chrome 23:24:17 yep, that's what I was referring to, I'd be shocked if Chrome couldn't 23:27:10 -!- sebbu has joined. 23:27:10 -!- sebbu has quit (Changing host). 23:27:11 -!- sebbu has joined. 23:28:20 ais523: pls reassure me that hashtable lookups are fast 23:28:34 elliott: they're almost as fast as array lookups on modern processors 23:29:29 ais523: but that's one, two, three, four, five -- five array lookups in total!! five duplicated array lookups! 23:30:10 elliott: wow, I wouldn't have expected /you/ to reference Sesame Street 23:30:35 Was that even aired in the UK? 23:30:38 (which was recentishly in the news because someone hacked their YouTube channel to show hardcore porn) 23:30:41 pikhq: indeed, on Channel 4 23:30:51 * elliott wasn't doing it intentionally, but I think there was some kind of ... subconscious resonant recognition before he hit enter. 23:31:07 I was actually counting them out. 23:31:19 pikhq: doesn't sesame street air /everywhere/? (also, "was"?) 23:31:39 elliott: I'm not sure if it still airs nowadays in the UK 23:31:42 admittedly, I haven't checked for years 23:32:44 elliott: Eh, could be. I'm not in the habit of monitoring where children's programming is aired. 23:33:19 /* relies on implementation-defined arithmetic shift behaviour */ 23:33:20 I like how I leave comments for things like this but gleefully name new types foo_t 23:35:34 bool world_handle_chunk(jint x0, jint y0, jint z0, jint xs, jint ys, jint zs, struct buffer zb, struct buffer zb_meta, struct buffer zb_light_blocks, struct buffer zb_light_sky, bool update_map); 23:35:40 I can't help but feel this function needs a few more parameters. 23:36:34 bool world_handle_chunk(struct world_handle_chunk_args); There you go. 23:36:34 wait, why is it never called with the last parameter set to false... 23:36:45 pikhq: that's fewer! 23:37:18 And then you can call it with world_handle_chunk((struct world_handle_chunk_args){ ... }) 23:37:30 (pointless unless you want a lot of things to be 0, of course) 23:43:29 -!- MSleep has joined. 23:45:49 -!- ais523 has quit (Ping timeout: 248 seconds). 23:46:53 -!- MDude has quit (Ping timeout: 248 seconds). 2011-12-02: 00:03:06 -!- MDude has joined. 00:06:37 -!- MSleep has quit (Ping timeout: 248 seconds). 00:18:27 -!- pumpkin has joined. 00:20:29 -!- pumpkin has changed nick to copumpkin_. 00:21:10 -!- copumpkin has quit (Ping timeout: 252 seconds). 00:21:15 -!- copumpkin_ has changed nick to copumpkin. 00:31:41 -!- azaq23 has quit (Ping timeout: 248 seconds). 00:39:19 * elliott sends an email that pikhq will see without sending an email to pikhq. 00:42:17 Is it a public mailing list? 00:44:27 Yup. 00:44:34 I saw said email. 00:48:49 -!- azaq23 has joined. 00:48:57 -!- azaq23 has quit (Max SendQ exceeded). 00:49:30 -!- azaq23 has joined. 00:53:32 -!- pikhq_ has joined. 00:53:37 -!- pikhq has quit (Ping timeout: 252 seconds). 00:59:54 pikhq_: ENJOY HAVING YOUR EYEBALLS ACCOSTED WITH WORDS 01:01:19 kallisti: How do I run a subcommand in Perl safely, without running into shell interpolation problems 01:23:52 -!- azaq23 has quit (Quit: Leaving.). 01:26:34 Wow, someone asked to become admin on the wiki who ISN'T Timwi :P 01:52:57 Vorpal: wow, skyrim depends on steam even when bought in-store? 01:54:51 Huh. I thought Valve was the only group that pulled that. 01:54:58 s/group/company/ 02:23:44 http://memegenerator.net/cache/instances/400x/11/11536/11813483.jpg XD (translit: "hajimemasite"tte? NIHONGO JŌZU translat: "Nice to meet you"? *You're good at Japanese!*) 02:30:50 -!- allanpes12 has joined. 02:31:01 -!- allanpes12 has quit (Client Quit). 02:34:20 -!- hagb4rd has joined. 02:34:53 -!- pikhq_ has quit (Quit: Reconnecting). 02:34:59 -!- pikhq has joined. 02:41:41 -!- Gregor has quit (Ping timeout: 260 seconds). 03:31:25 -!- esowiki has joined. 03:31:25 -!- glogbot has joined. 03:31:26 -!- HackEgo has joined. 03:31:28 -!- EgoBot has joined. 03:31:29 -!- esowiki has joined. 03:31:30 -!- esowiki has joined. 03:31:38 -!- Gregor has joined. 03:31:51 @tell Gregor Makes me kinda nervous that glogbackup parts before glogbot joins. 03:31:52 Consider it noted. 03:32:51 elliott: glogbackup parts once glogbot joins #glogbot, which is the first one it joins. 03:32:51 Gregor: You have 1 new message. '/msg lambdabot @messages' to read it. 03:33:12 Gregor: OK, but people could still talk before glogbot rejoins every channel :P 03:33:13 @messages 03:33:14 elliott said 1m 22s ago: Makes me kinda nervous that glogbackup parts before glogbot joins. 03:33:21 elliott: Fair 'nuff *shrugs* 03:34:41 "Let's call the flag -Ewarn, by analogy with -Werror." 03:35:25 Uhhhh, is this some imaginary flag that converts /errors/ into /warnings/ (a concept which doesn't even make sense)? 03:36:09 It also solves the halting problem and summons bacon. 03:36:35 Gregor: Yes. A flag that is actually being implemented in GHC :P 03:36:45 More specifically, it turns certain kinds of type errors into warnings + runtime errors. 03:36:49 For debugging. 03:37:15 I don't think that quote was even a joke, and it was by one of the Simons (I forget which by now), so it might even be called that :P 03:38:59 Ah, I see. 03:39:06 I just assumed GCC due to the "by analogy to -Werror" 03:39:15 It makes more sense in many other contexts. 03:39:26 GHC nabs gcc's -Wall, -W and -Werror. 03:39:28 The only errors there are in C are "I have no clue how to compile this shit, dude" 03:39:39 Except -Wall means "a lot of warnings" and -W means "literally every warning" 03:40:11 Similarly it copies gcc's -On options, where -O0 does nothing, -O does most optimisations, and -O2 slows compilation down massively and doesn't help in the majority of cases. 03:40:15 So... they shifted the numbers a bit :P 03:40:21 Gregor: Not QUITE. 03:40:34 Gregor: You could feasibly bypass C's type checker. 03:40:43 Gregor: Possibly other errors are possible in C as well, such as lack of address space for declared variables 03:41:11 zzo38: Sounds like "I have no clue how to compile this" to me :P 03:41:16 elliott: But virtually any case where the type checker fails, it fails because it doesn't know how to compile it. 03:41:28 elliott: OK, maybe that is what it is, then. 03:41:42 Gregor: Not really? Pointer casting, f'rinstance. 03:41:50 Which is a looooooot of errors in C prorgams. 03:41:58 Well, at least a fair amount :P 03:42:07 Are there even any other type errors?? 03:42:46 I know of no pointer cast that would give you an error (as opposed to a warning) in default GCC. I suppose int x; int y; y = *x; wouldn't compile, but it also doesn't have enough information to. 03:42:59 Cast x to (int *) :P 03:43:06 Then there's no error. 03:43:19 Then it "merely" hits UB. 03:43:33 Gregor: I mean automatically. 03:43:48 *groan* 03:43:56 Gregor: The machine has no notion of a pointer type, soooo :P 03:44:09 elliott: But how do you know it wanted an /int/ * as opposed to a /char/ * or a /wtf/ *? That's the "doesn't know how to compile it" part. 03:44:22 Gregor: Because y is an int. 03:44:24 Duh. 03:44:29 It's like you're not even trying! 03:44:34 Heh, fair 'nuff. 03:44:38 Perhaps you want (int*)(char*) though? 03:44:44 But that's not so much bypassing the type checker as doing nonsense type inference :P 03:44:50 pikhq: Well fuck you, you're compiling an invalid program, be happy it works :P 03:44:55 FSVO work 03:45:10 Gregor: Now I want a list of gcc's errors... 03:45:18 :P 03:45:22 I think in C, it ought to be error to use something that isn't a pointer where a pointer is required unless you have an explicit cast (possibly with some exceptions if it would help to do so) 03:45:40 zzo38: In C, it is. 03:45:50 pikhq: Mmmmm, not quite. 03:46:01 Well, I think except for confusing circumstances. 03:46:03 pikhq: int a(int *x); void foo() { a(42); } 03:46:04 pikhq: In GCC it is usually a warning but not an error when I do that 03:46:16 Most notably, I *think* using an integer literal as a pointer is a warning. 03:46:20 Dear C: WHY DON'T YOU HAVE LAMBDAS 03:46:24 pikhq: 'tis, 'tis. 03:46:29 #define TRANSFORM_RGB(expr) \ 03:46:29 do { \ 03:46:29 uint8_t x; \ 03:46:29 x = rgba.r; rgba.r = (expr); \ 03:46:29 x = rgba.g; rgba.g = (expr); \ 03:46:30 x = rgba.b; rgba.b = (expr); \ 03:46:31 } while (0) 03:46:33 I WANT TO REPLACE THIS HORRIBLE THING 03:46:48 pikhq: But dereferencing an integer literal is a no-go as it doesn't know the pointer type. 03:46:57 elliott: https://github.com/pikhq/clambda-demo/blob/master/lambda.h 03:47:07 Gregor: See, B just only had words. 03:47:09 So there was no problem. 03:47:14 You'd read a word, obviously. 03:47:22 :) 03:47:29 B: better than C? 03:47:33 It is due to the C preprocessor having a few thing missing. Some things I made in Enhanced CWEB allow you to add your own compile-time codes 03:47:53 pikhq: I can't tell you how INTENSELY willing I am to use this. 03:47:57 It's giong into mcmap RIGHT NOW. 03:48:00 *going 03:48:09 There is another programming language BLISS which has far more powerful macro capability and record types than C 03:48:22 pikhq: What happened to town, btw (GITHUB STALKING IS BEST) 03:48:38 elliott: I didn't do much with it? 03:48:47 Bah :P 03:48:51 I've spent the past few months basically doing fuck-all on github. :P 03:49:39 pikhq: And it mixes tabs and spaces too :'( 03:52:15 -!- MDude has quit (Ping timeout: 248 seconds). 03:53:46 The STRUCTURE command in BLISS allows you to do a lot of things; the structure can contain arbitrary commands (it does not have to contain only field declarations) 04:03:33 OWN X; LITERAL MARK = 4; MACRO M = MARK + %UNQUOTE MARK %; BEGIN LITERAL MARK = 5; X = M; END What will the value of X be in this program? It will be 9 04:07:44 int *a = alloca(sizeof(*a)); /* this works, but feels so wrong */ 04:08:36 -!- kmc has quit (Quit: Leaving). 04:09:10 Sure 'nough. 04:09:31 Gregor: Which part of it 04:09:32 It also involves like 20 preprocessor directives to use it "portably". 04:16:50 elliott: The fact that that the definition of a refers to a :P 04:17:02 Gregor: Uhh, but that's a standard idiom with malloc... 04:17:11 To avoid repeating yourself in case you e.g. change a's type. 04:17:32 Oh? I don't think I've seen that ... usually I've seen type a = malloc(sizeof(type)); 04:17:38 Err, type *a of course 04:17:46 Gregor: ...type *a? 04:17:55 Oh, right. 04:18:05 Gregor: Yeah, that's more common, but *a is fairly common too. 04:18:12 Hm *shrugs* 04:18:26 * elliott usually embds type because he finds refactoring the expression to be a more compelling example than retyping a variable. 04:18:30 Long story short, I'm at 2037 code bytes :P 04:18:41 Of course I'd prefer to be able to just omit the "type " on the LHS :P 04:18:46 Bring back auto, dudes! 04:18:54 C++ did it! 04:19:10 Gregor: For what this time? 04:19:30 elliott: ... same as always? 04:19:47 Gregor: Well, OK, you talked about doing something else at one point though :P 04:20:53 I considered it, couldn't think of a way to make it truly obtuse that wasn't also lame. 04:21:52 ALTHOUGH WE COULD DO A COLLAB 04:23:43 Gregor: You mean the MIDI thing? 04:24:21 Yuh 04:24:44 Gregor: I dunno, I don't think it'd have to be very obfuscated if it produced something nice-sounding given untweaked input... 04:25:15 But "nice" is relative, I'm sure the demoscene could synthesise semi-realistic piano and strings within IOCCC limits :P 04:25:15 Exactly. 04:25:41 That was the issue, I couldn't think of a way to make it obtuse. 04:25:50 elliott: ... If they don't already. 04:25:57 Also, piano: Sure. Pianos are easy. Strings: lolno. 04:25:57 Gregor: Are we using different definitions of obtuse? 04:26:13 I don't think obtuseness really matters if the result is impressive... the golfing makes code pretty hard to read to start with :P 04:26:18 Strings was facetious. 04:27:19 Idonno, I just don't feel like the result would be very obfuscated. 04:27:32 Nor do I think it would be sufficiently impressive, though maybe it would be. 04:28:44 I was thinking maybe a MOD player instead... those sound better, but that loses the synthesis element, and I dunno if the effects stuff that MOD players has are hard enough to implement that it'd be impressive :P 04:29:34 Hmmmmmmmmmmmm 04:29:38 Idonno much about MOD. 04:29:57 http://www.scp-wiki.net/clef101 04:30:52 Gregor: All I know is it has samples and channels of notes :P 04:31:39 Sgeo: six paragraphs in and this is the worst writing ever 04:31:51 seven paragraphs and it's worse 04:32:03 wow this is bad i'm not going to read it any more 04:32:34 elliott: That's all I know toooooo 8-D 04:32:37 http://scp-wiki.wikidot.com/skybluesky 04:33:42 Is there any MML compiler to MOD? 04:34:15 Gregor: So there's at least hacky resampling involved (in case /dev/audio doesn't have the right Hz), modifying the tone of samples, and I think applying various effects to a sample. 04:41:18 Hmmers. 04:44:23 Accessing memory-mapped files is just as efficient as accessing ordinary memory, as long as I don't do anything that actually requires disk access. Right? 04:47:02 tswett: Are you asking whether mmap() caches? 04:47:08 Because, yes, your OS has disk caches. 04:47:21 Excellent. 04:47:32 * tswett replaces malloc with mmap. Save all the things. 04:47:45 tswett: malloc is implemented with mmap for large enough allocations in all common libcs. 04:47:48 Something like >4k. 04:48:10 Huh, neat. 04:48:24 @where #haskell 04:48:24 Right here, silly! 04:48:27 Did you know? 04:48:48 @where #esoteric 04:48:49 I know nothing about #esoteric. 04:48:52 @where+ #esoteric Right here, silly! 04:48:53 It is stored. 04:54:27 -!- Jafet has joined. 04:57:47 http://www.scp-wiki.net/scp-1025 04:58:02 elliott, read that completely, don't stop reading just because 04:58:19 But I like stop reading just because! 05:01:52 Sgeo: OK that was amusing. 05:26:41 @tell kallisti By the way, (const undefined) is also strict, but doesn't evaluate its argument. 05:26:41 Consider it noted. 05:27:01 @tell kallisti Proof: const undefined _|_ = undefined = _|_. 05:27:02 Consider it noted. 05:32:36 -!- jix has quit (Ping timeout: 240 seconds). 05:33:18 -!- jix has joined. 05:34:36 -!- Zuu has quit (Read error: Connection reset by peer). 05:39:29 -!- Zuu has joined. 05:53:57 -!- GreaseMonkey has quit (Quit: The Other Game). 06:29:47 @ping 06:29:48 pong 06:32:02 took you a while 06:35:21 -!- elliott has quit (Quit: Leaving). 06:35:25 -!- elliott_ has joined. 06:38:29 What is the way to select a $2n$ by $2n$ matrix of booleans such that there is exactly $n$ true in each row and in each column, from all possible ones, uniformly? 06:40:43 It's impossible. 06:41:07 (Note: I am lying.) 06:45:52 -!- tytythetyty has joined. 06:45:59 hi 06:46:50 hi 06:47:48 i am having trouble with stochastic cellular automata, and i stumbled across this link (http://www.conwaylife.com/forums/viewtopic.php?f=3&t=398) do you guys talk about that in here?? 06:48:21 sure 06:48:27 Ask the question; they sometimes talk about various things in here and possibly someone knows 06:48:38 oh, ##gameoflife, heh 06:48:42 that channel lasted uh... a few days 06:48:51 lol sad 06:48:58 Phantom_Hoover is still a regular here though 06:49:06 I can't say we get CA talk very often but when we do it tends to be lively 06:49:18 although it's quiet hours right now 06:49:25 my question is to design two different stochastic cellular automata: 06:49:36 1. Design a 1D stochastic cellular automata that uses on rules involving two adjacent cells at at time that (with high probability) do the following tasks: 06:49:40 a. If the majority of cells are initially 0, the final state is all zeros. If the majority of cells is initial 1, the final state is 1. 06:49:45 b. Starting with all cells at 0, reach a final state in which one cell is a 1 and the rest are 2. 06:50:11 hmm, cool 06:50:17 this isn't homework, is it? :p 06:50:32 ABSOLUTELY NOT :P 06:51:11 oklopol works in CA, although you may find his answers rather unwantedly vague for a question he considers too trivial :P 06:51:37 and I don't think he's here right now 06:51:45 lol, that is typically the case for IRC channels 06:52:10 not us! we're helpful and cuddly and nice. well... occasionally 06:52:19 haha nice 06:52:30 do you have any idea on this?? 06:52:47 not personally, but there are like three people off the top of my head who might be able to help who aren't here right now :P 06:52:55 sux 06:53:31 ask monqy; you probably won't get an answer but the non-answer might be entertaining 06:53:43 lol kk 06:53:57 wouldn't he just see this?? how should i ask?? 06:54:06 smoke signals 06:54:20 he responds by sending "hi"s in morse code 06:55:06 I SUMMON THY MONQY 06:55:08 .... .. .... .. .... .. 06:55:25 hi 06:55:27 @google majority problem 06:55:29 http://en.wikipedia.org/wiki/Majority_problem_(cellular_automaton) 06:55:29 Title: Majority problem (cellular automaton) - Wikipedia, the free encyclopedia 06:56:47 I don't know enough about cellular automata 06:57:24 me neither :P 06:59:53 Do you know how I could figure out the answer to my question? 07:01:01 ask someone who knows and is willing and able to answer appropriately 07:02:08 lol 07:02:16 -!- DCliche has quit (Quit: You are now graced with my absence.). 07:08:52 elliott_, update 07:44:25 I think I might have figured out what contramonads and contracomonads is supposed to be: contrareturn :: (a -> m ()) -> m a; contrajoin :: m (m a) -> m (a -> m ()); contraextract :: w a -> a -> w (); contraduplicate :: w (a -> w ()) -> w (w a); I don't know how good this is, though. Maybe I made a few mistakes? 08:10:31 elliott_: yes, there's a setting for it 08:12:34 elliott_: :help swapfile 08:35:26 http://www.scp-wiki.net/sandrewswann-s-proposal 08:36:08 Does "But your thoughts are nothing except hallucination!" have anything to do with "greedy reductionism"? 08:39:51 -!- monqy has quit (Quit: hello). 08:47:49 -!- hagb4rd has quit (Quit: Nettalk6 - www.ntalk.de). 08:53:59 I wonder what research on cellular automatons look like 08:54:17 How much is math and how much is just trying stuff on it 08:59:51 -!- zzo38 has quit (Remote host closed the connection). 09:28:08 elliott_: hi 09:28:09 kallisti: You have 2 new messages. '/msg lambdabot @messages' to read them. 09:28:14 qx'blah blah blah' 09:30:46 elliott_: is how you prevent Perl from interpolating in a shell command 09:31:06 if you're using system or whatever else you would just pass a single quoted string obviously. 09:33:35 > (const undefined undefined) `seq` "hi" 09:33:38 "*Exception: Prelude.undefined 09:36:22 elliott_: similarly, using single quotes as a delimiter for any other interpolating quoke-like operator (except for qq, which always interpolates) will turn off interpolation 09:37:29 Slereah: there is a lot of bullshit being done with cellular automata, which is why we're not taken very seriously 09:37:42 s'blah'blah', m'blah', qr'blah' 09:37:51 ...I... don't remember if qw interpolations. 09:38:16 !perl my ($x,$y,$z) = 1..3; print qw($x $y $z) 09:38:19 ​$x$y$z 09:38:21 oklopol: clearly you should work for a prestigious research group like Wolfram 09:38:22 nope 09:38:36 :D 09:38:54 I hear they get great press coverage 09:39:01 !print ?bahahahahaha? 09:39:22 !print $_="hi"; print ?hi? 09:39:32 !print $_="hi"; print /hi/ 09:39:35 actually wolfram invented one of the most important concepts of CA on which i too work every day 09:39:37 the limit set 09:39:43 well he didn't actually define it 09:39:48 because he's a retard 09:40:04 but still, he had quite an influence there 09:40:42 or maybe he actually gave a definition, but you know for the sake of this story. 09:40:59 at least he doesn't have any actual results 09:41:39 Slereah: anyhow, searching for counterexamples is, as in any branch of math, rather ad hoc 09:42:54 otherwise, we use measure theory, compactness arguments, symbolic dynamics and ergodic theory on a daily basis. but any sort of deep results are needed rarely. 09:43:40 just the basic theory 09:44:54 for instance, i've needed a point whose ergodic fibre is the uniform bernoulli measure a few times when studying the besicovitch space, such a point is not that easy to construct, but it follows from ergodic theory that pretty much all points have this property 09:46:48 symbolic dynamics is really where most of the math happens, so if CA wasn't so easy to write, i'd always talk about endomorphisms of the shift just to keep the CA people out 09:47:39 there was this guy in a conference who said he's a computer scientiest but also does a lot of math. he said he's working on cellular automata, and said that HE HAD HEARD THAT YOU CAN GIVE A TOPOLOGY TO THE FULL SHIFT 09:47:43 :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD 09:48:12 oklopol: whoosh 09:48:16 there went the joke 09:48:18 over my head. 09:48:30 kallisti: you can't do anything with CA without the cantor topology on the space 09:48:43 ah. 09:48:54 see I thought you were implying it was impossible or something which... sounded unlikely to me. 09:49:23 he studied something like gliders in elementary CA 09:49:29 what the fuck kind of research is that 09:49:33 ...heh 09:49:36 DUDE THEY LIKE 09:49:37 MOVE 09:49:39 IN A LINE 09:49:46 ITERATING IN A CYCLE 09:49:46 that's so coooool 09:50:10 I guess that's the non-mathematical side of CA research 09:51:09 Slereah: if you want links to the good kind of research, i can show some good representatives of the techniques 09:51:39 if you want to know more about the bad kind, you could always read nkos 09:53:42 > sum . map (\(n,x) -> 2*x / 3^n ) $ zip (cycle [0,1]) [1..] 09:53:46 mueval-core: Time limit exceeded 09:54:14 oklopol: wow shocking 09:55:01 this is a pretty good representative: http://www2.math.umd.edu/~mboyle/papers/automata20oct98.pdf 09:55:42 I wonder how one would convert points in a cantor space to real numbers in Haskell. :> 09:55:47 it seems... difficult. 09:59:59 tytythetyty: that's an easy consequence of http://www.cs.bu.edu/~gacs/papers/long-ca-ms.pdf 10:00:21 sorry, i didn't read any log 10:00:56 kk thanks! i will look at this :) 10:01:34 lol fault tolerant cellular automata 10:02:10 CAs can be used to model networks 10:02:19 So yes, you might ask whether they're fault tolerant 10:02:49 tytythetyty: but apart from being a consequence of that, stochastic automata are very hard to work with, and i don't know if anyone but gacs has really ever succeeded 10:03:09 tytythetyty: err actually 10:03:42 i think if i told someone at work that i just linked gacs to some random guy on irc to read, they would punch me in the face 10:04:06 see, apart from gacs, only one person has ever managed to read all of that 10:04:13 lol i was typing this 10:04:14 phosphoglycerate kinase 10:04:17 dammmit! 10:04:18 nevermind 10:04:35 i was gonna ask if there is a specific section that is applicable?? 10:04:36 in that pdf 10:04:38 why did you ask your question in the first place? 10:05:20 "So there are as many points in the Cantor set as there are in [0, 1], and the Cantor set is uncountable " 10:05:23 well you probably need only a part of the construction. i can link you the reader's guide 10:05:27 * kallisti mind blown 10:05:30 i am doing some work in a Synthetic Biology seminar 10:05:36 and it was a challenge 10:05:44 http://www.cs.bu.edu/~gacs/papers/long-ca-ms.pdf 10:05:50 to people in the seminar 10:05:59 who gave it? 10:06:32 do you know random people in synth bio?? 10:06:33 :P 10:07:09 well no but i mean did they know what they were asking... of course if you just want to have good approximations, you can just try stuff out 10:07:49 oh i see haha 10:07:58 gacs' automaton, afaiu, works with any probability, and simulates any CA you like reliably with high probability 10:08:00 yeah, he likes this stuff 10:08:39 synth bio... is that similar to mathematical biology? 10:08:40 cool, i will look at these, thanks! 10:08:44 errr 10:08:45 not really 10:08:53 i should ask what the exact results are at the university, i'm more into symbolic dynamics myself 10:09:07 so i don't really wank to gacs' paper unlike most CA ppl 10:09:42 since it solved like every problem ever 10:10:06 math bio is more modeling bio systems with math, synth bio is more engineering genetic pathways 10:10:13 well incidentally it didn't solve the problem of finding a uniquely ergodic CA which my colleague did this week, awesome right 10:10:47 i think so :P not sure what a uniquely ergodic CA is 10:17:24 tytythetyty: wow, I didn't realize how far we've come with genetic engineering. 10:17:30 * kallisti is reading about gene networks. 10:18:51 kallisti: if you have access to this somehow (i.e. an academic proxy), or an actual subscription, this is a good overview 10:18:52 http://www.sciencemag.org/site/special/syntheticbio/ 10:19:10 not currently no. 10:19:27 well, hmmm, actually I may be able to. 10:21:18 tytythetyty: uniquely ergodic means there's only one dynamics-invariant measure for your dynamical system (the dynamics being the CA). this measure is then automatically ergodic. 10:21:25 but in the case of CA 10:21:26 kallisti: this is interesting too, this is the undergraudate synth bio team at my school, who recently won the international undergrad competition (http://2011.igem.org/Team:Washington) 10:21:46 it means that in every column, the density of some symbol 0 always gets bigger and bigger 10:21:49 oklopol: ahhh i see 10:23:36 but umm i applied for this grant and they said they'd notify recipients by end of march. i heard rumors that i got it but there's another ville who applied and now no one just knows anything. except that i wasn't notified, so i probably didn't get it. well, today, i got an email that says something like dear recipient, please fucking register for our party already. 10:24:35 and i'm confused, did they just send that to everyone who applied and filter out non-recipients by addressing it to recipients (non-recipients have not been notified) 10:25:38 i should probably go talk to someone at the university... we already changed where i'm getting my next year's funding based on me not getting the grant :D 10:25:52 erm i mean my whole 4 year plan 10:27:15 Go to the party and make so many friends that they can't kick you out 10:27:44 good idea 10:27:46 bye 10:28:12 @source nDerivs 10:28:12 nDerivs not available 10:28:16 :t nDerivs 10:28:17 forall a i. (Num i, Num a) => (Dif Expr -> Dif a) -> i 10:28:24 > nDerivs sin 10:28:28 mueval-core: Time limit exceeded 10:28:31 > nDerivs log 10:28:37 mueval-core: Time limit exceeded 10:29:15 grants are a bitch sometimes :/ 10:29:19 and interviews 10:29:34 i had a microsoft interview today, didn't go as well as it should have 10:35:51 -!- hagb4rd has joined. 10:37:42 kallisti and oklopol: good talking to you guys! thanks for the help 10:37:45 have a good night 10:38:22 night 10:38:36 -!- tytythetyty has quit (Quit: Page closed). 10:57:25 -!- itidus21 has quit (Ping timeout: 240 seconds). 11:17:51 hail eris 11:21:32 hail 11:38:41 -!- oerjan has joined. 12:03:57 http://en.wikipedia.org/wiki/Mystical_Ninja_Starring_Goemon 12:04:01 has anyone else played this game? 12:04:45 -!- ais523 has joined. 12:13:23 -!- Phantom_Hoover has joined. 12:28:42 -!- Patashu has quit (Quit: MSN: Patashu@hotmail.com , Gmail: Patashu0@gmail.com , AIM: Patashu0 , YIM: patashu2 , Skype: patashu0 .). 12:32:55 ais523: hi 12:33:04 hi kallisti 12:33:10 http://en.wikipedia.org/wiki/Mystical_Ninja_Starring_Goemon 12:33:13 have you played this game? 12:33:17 N64 game. 12:33:32 no 12:33:35 I don't own an N64 12:34:04 (I /have/ played a very few N64 games on other people's N64s, but a small selection) 12:34:28 ah 12:34:53 some weird Japanese game I played as a kid. I just rediscovered it and my nostalgia glands kicked in. 12:34:57 Vorpal: wow, skyrim depends on steam even when bought in-store? <-- yes 12:35:33 "A cellular automaton is said to be reversible if for every current configuration of the cellular automaton there is exactly one past configuration (preimage)." 12:35:49 psh, come on. you can totally non-deterministically reverse to multiple past images. 12:35:50 elliott_: I'm surprised that you're surprised at that; it's become more and more common recently 12:35:55 I'm upset by it, but not surprised 12:36:12 what's wrong with requiring Steam? it's free right? 12:36:40 kallisti: assumes you're going to have a network connection when you play the game 12:36:47 this is almost always not the case for me, I typically play games offline 12:37:09 -!- elliott_ has quit (Ping timeout: 245 seconds). 12:37:33 I was under the impression that Steam had an offline mode as well. 12:37:52 * kallisti doesn't actually play PC video games often. 12:38:20 but when I do, I prefer Dos Equis. 12:38:30 Only pirates, criminals and communists play offline 12:38:55 And people who might not live in the first world, but they're mostly pirates, criminals and communists anyway 12:39:09 bleh, I prefer "anarchists, lunatics, and terrorists" 12:39:20 Steam has an "offline mode" if you check the "save login details" box, or something like that. 12:39:37 but you'd still need an Internet connection to install the game 12:39:58 Yes, well, it's a Internet-based delivery system, after all. But not when you play it. 12:39:58 it used to be that you could go to a shop, buy a game, take it home, and install it on a non-networked computer 12:40:15 and the only DRM would be requiring the disk to stay in the drive, together with measures to make the disk harder to copy 12:41:01 ais523: it also used to be that there was this thing called "dial-up" 12:41:04 meanwhile, "Scaffolding" seems like an interesting name for an esolang 12:41:11 kallisti: it still exists, believe it or not 12:41:16 well, yeah.. 12:41:35 at least one ISP gave free dial-up internet access to Egypt when the government cut off all the ISPs 12:41:35 it much the same way that floppy drives still exist. 12:41:45 on the basis that they had all this dial-up capacity that was hardly being used 12:41:50 kallisti: I actually have a USB floppy drive 12:42:00 .......why 12:42:30 are you a digital archeologist? 12:42:31 At one point in time multiple laptops came out bundled with USB floppy drives. 12:42:37 unearthing ancient tombs filled with floppy disks? 12:42:49 kallisti: because I used to back things up to floppy disks, back before CD burners were common 12:43:24 also, because floppy disk is quite a convenient way to quickly transfer files from one computer to another; it's pretty much as fast as doing it via USB stick, just with a lower capacity 12:43:51 I have this thing 12:44:09 where I can put up to 5 GBs of information onto a server probably hundreds of miles away. 12:44:17 and then log into that server on another computer 12:44:23 and download the information 12:44:41 I guess it's not as fast as a floppy 12:44:48 when you're like, physically next to both computers 12:45:09 why would you send data hundreds of miles to transfer it across the room? 12:45:11 According to Wikipedia, "the average sequential read speed is 30–70 kB/s". 12:45:34 -!- elliott_ has joined. 12:45:49 if both computers are on the same network, I'd just use that network to send it 12:46:03 ais523: it's okay it's traveling at light speed. 12:46:15 and yeah 12:46:18 the only time bouncing off an external server would make sense for a same-room transfer would be if there was some sort of firewall between them 12:46:20 it would be silly. 12:46:45 ais523: well I'm referring to Dropbox. if you have it installed on both computers it's even easier. 12:46:50 but it's also possible to login from any computer. 12:46:59 via a web interface 12:47:05 (extreme example: the wireless connection here in my office is outside the department's firewall, the wired connection is inside, so I'm careful not to use both at once; and the wired connection is really heavily monitored, to the extent that Chrome refuses to access Google, because I think it's MITMing the https) 12:47:10 that's ridiculous, i demand heavy speed! 12:47:23 We used to use MageLink for transferring files between the computers at the computer classroom at school. It's the spiffiest-looking IPX file transfer thing there is. 12:47:38 haha, now I remember XPDT 12:47:48 Sadly an image search for 'MageLink' is not being very helpful. 12:48:14 it seems that none of the file-transfer stuff that comes with Windows allows transferring over a serial link from Windows 95 to Windows XP, or the other way round 12:48:14 so I wrote my own program to do that 12:48:54 Do they still bundle a LapLink-like thing in modern Windowses? I suppose not. 12:49:24 The "null-printer" cable, the silliest name. 12:49:54 (By analogy with null modem cables.) 12:53:21 Debian's installation manual has a PLIP-based installation method described. 12:54:43 -!- ais523 has quit (Ping timeout: 252 seconds). 12:56:33 "Windows Vista drops support for the Direct cable connection feature [4] as ethernet, Wi-Fi and Bluetooth have become ubiquitous on current generation computers. To transfer files and settings, Windows Vista includes Windows Easy Transfer, which uses a proprietary USB-to-USB bridge cable known as the Easy Transfer Cable." <- right, they've given it up. 12:59:57 -!- ais523 has joined. 13:02:36 On Talk:Afterparty: This sure doesn't answer anything. Also, it's "after party", not one word. It's also a lame concept. (Wow, I wanted to go on a pro-Communist rant there, but stopped.) More needs to be written, otherwise, it just seems like a myth of some sort. Besides (stopping myself again from going totally anti-suburbs here). Apple8800 (talk) 17:26, 29 March 2011 (UTC) 13:03:43 fucking capitalists and their afterparties (one word) 13:06:47 -!- itidus21 has joined. 13:09:50 itidus21: hi 13:32:10 -!- kallisti has quit (Quit: Lost terminal). 13:36:28 also, because floppy disk is quite a convenient way to quickly transfer files from one computer to another; it's pretty much as fast as doing it via USB stick, just with a lower capacity <-- not really, floppies are really slow 13:36:53 fast enough when you're only transferring a few tens of kilobytes, which is typical 13:37:38 kallisti: I actually have a USB floppy drive <-- I have two of them I think. One pure USB floppy drive and one that doubles as a "ultrabay-for-old-dell floppy device" and USB one 13:38:06 ais523: Hm I seldom transfer less than a mb or so 13:38:21 ais523: and quite often something like 10 GB 13:38:30 you can't fit 10 GB on a floppy 13:38:33 indeed 13:38:47 last time I needed to transfer that sort of data, I put the two computers physically next to each other and connected them with an Ethernet crossover cable 13:38:49 then used rsync 13:38:52 I used to use ethernet over firewire back when my desktop only had 100 mbit connection. Because firewire allowed 400 mbit 13:38:52 *that sort of amount of data 13:39:15 now I have gbit ethernet on both my desktop and laptop 13:39:24 so generally the disk speed in the laptop is the bottleneck 13:40:16 -!- hagb4rd has quit (Quit: Nettalk6 - www.ntalk.de). 13:41:18 hm PSU at the bottom seems to be getting more and more popular in high end chassis these days. 13:41:29 what is actually the point of PSU at the bottom 13:42:16 my computer has that, but it just messes up with the cables as far as I'm concerned (since the PSU uses flat cables with connectors on the side of the cable. And it is designed for mounting at the top. 13:42:54 ais523: maybe you would know what the advantages of PSU at the bottom of the computer case is? 13:42:59 Vorpal: it's so that when YouTube upgrade their video service, it still works if you turn the entire computer case upside-down 13:43:08 ... 13:43:08 which gives even better performance than just inverting the monitor 13:43:11 what? 13:43:26 inverting monitor? I don't get the joke. 13:43:42 it was YouTube's April Fools thing this year (or maybe last year?) 13:43:47 ah 13:43:50 where they turned the entire site layout upside-down, also the videos 13:43:55 ah okay 13:43:59 ais523: but seriously, any idea? 13:44:04 on the basis that they'd discovered that videos looked better if you turned the monitor upside-down 13:44:08 and no, not offhand 13:44:19 it wouldn't surprise me if it was something to do with cooling, but I don't see how it would help offhand 13:44:23 *if it were 13:45:32 ah 13:47:53 1.1.1 The droll business is, whether you be convinced active it, the cares you should get are each familiar meaning! How does it effort? Besides solely, individual moves any earful most you, possibly on-line or conceivably eve via any scrap send that you tossed in the crank without eve trigger-happy it up. 13:49:28 Sounds fungotty. 13:49:28 fizzie: ' cheers,' said lu-tze. 13:50:13 -!- itidus21 has left ("Leaving"). 13:50:26 -!- kallisti has joined. 13:50:28 fungot: go on 13:50:28 ais523: " no we ain't," said esk. " granny always says that to women, for the arms, two twigs. 13:50:38 -!- kallisti has quit (Changing host). 13:50:38 -!- kallisti has joined. 13:50:44 `word 25 13:50:51 eszykkakemed obatleue raieffenisteinges paghters ac gan roleyum appard lvatoulphonicae hendfelletharbrogg ratereur bee tocitz bratous aeurrosly pred pic sten reanclan tlnhek bie un dodus blertrigentmousalgilemanatimend ro 13:51:44 -!- itidus21 has joined. 13:52:16 huh, for some reason youtube is saying "missing plugin" for every video. 13:52:34 kallisti: perhaps you don't have a Flash plugin? 13:52:44 I most definitely do 13:52:46 "bee" is a real word, out of that list 13:52:53 I just restarted after some updates though. 13:53:09 and quite a few of them sound like they could be real words 13:53:11 ais523: it happens. especially with short words. only so many possibilities in a markov model. 13:53:14 ais523: good 13:53:15 indeed 13:53:19 `word 25 13:53:22 fuermarabev as gcommenfer dumallyley wychafr mam zat tb tuproassitara man apitenins jurg autory cler hydrouzhdu aflutz flits ine boni met soirodestsovegeble bolia formagged lopui ch 13:53:52 aflutz :) 13:54:01 * kallisti has flits and aflutz 13:54:08 man 13:54:16 I've seen people seriously attempt to use "boni" as the plural of "bonus" 13:54:22 .. 13:54:22 "as" is also a word, as is "man" 13:54:27 met 13:54:32 "pic" and "pred" out of that first list were also rather common abbreviations. 13:54:36 actually, "formagged" is possibly the best nonword there 13:54:59 no soirodestsovegeble? 13:55:14 ais523: at least boni is correct latin, i think 13:55:33 unlike some other examples 13:55:47 yep, I think so 13:55:59 formagged obviously means turned into cheese 13:56:47 heh 13:57:03 `word 50 13:57:05 monsumizehutand senselees atticheler jnaal tans ber ozamoloupne dovolowx hici unthiries subs auroo zu pribacc obikanba vity iscu lammenleres ken meduratctrae wd troasakic venderpugaryszus alierectracist mesi bouraps bbizosinizaria fandombori obed uienyonoseranottinscrenzy wander rheetess syraibia te tro ruardentiminesta hus sesined thl metion sch brica inuce howmrech narremietty baarimptinfon bnue boletadvaligny cluvra kancr 13:57:18 monsumizehutand -- ancient Aztech ruler 13:57:30 "fandombori" 13:57:37 heh 13:57:56 What a senselees list of words. 13:58:43 Is an 'alierectracist' a person who won't submit to being probed by extraterrestials, or what? 13:58:52 ....... 13:58:55 I think so? 13:59:41 `word 1 13:59:43 urganaidonoropedeechl 14:00:26 :t zip`ap`tail 14:00:29 forall b. [b] -> [(b, b)] 14:01:06 err-gah-nah-ee-doh-noh-ropey-dee-ch-L 14:01:32 yep 14:01:46 god thats difficult 14:01:47 * kallisti has gotten the hang of pronouncing these things. 14:01:56 a little creative discretion is allowed 14:02:09 in english you must remember that pronunciation does not follow from spelling :P 14:02:10 as it's "pseudoEnglish" in nature 14:02:19 which already has a wide variety of different ways to pronounce combinations of letters 14:02:49 itidus21: no it does, it's just based on a wide variety of linguistic influenced 14:03:01 *influences 14:03:20 it seems to me like it simply borrows several pronunciation systems 14:03:45 everything is "borrowed" and slightly reinvented in natural language 14:03:47 and, well, a lot of things. 14:05:12 Speech synthesis thingies often have (in addition to a large pronunciation dictionary) some sort of a rule-based device to generate plausible phonemes for OOV words. 14:05:22 perhaps the idea of english is to acquire the shibbaleths of their eneies 14:05:34 ^enemies 14:05:58 music, art, religions, holidays, sports, mythologies 14:06:17 someones probably already done a phd on that possibility i suggested and found it's a dead-end 14:06:20 echo 'monsumizehutand senselees ... cluvra kancr' | festival --tts # the best babble ever. 14:06:23 if you look at all of these things you'll see a (mostly) linear progression of linear through history. 14:06:38 `run festival --help 14:06:40 bash: festival: command not found 14:06:55 It's so fast I can't make anything out of it, and I don't quite recall how to control speaking speed. 14:07:20 `word 5 14:07:22 parne euwessoly coms coaulanquicolve tra 14:07:25 yes a linear progression of linear. 14:07:32 itidus21: 25 is a good number 14:07:36 bound to find something interesting. 14:07:48 Sometimes it heuristicizes into pronouncing things as lettersims; like "sch" and "wd" it does like that. 14:08:30 The prosody for that "sentence" is... somewhat arbitrary too. 14:08:54 `word 30 14:08:57 imerapposan ccyptyrs strcd plitaspet plation cxlere decocs vie chya schth sap cont eldenernefl chron diss ophyphofe symo imbee hoyoj dro einee dion eouciircloromplam wehenss remed nifteng jeeppertia sa sch dimely 14:09:14 strcd sounds like a string.h function 14:09:14 There's a short break between uienyonoseranottinscrenzy and wander, like a comma, for some reason. 14:09:35 schth -- best word 14:11:05 eldenernefl - el-den-nur-neh-ful 14:11:16 fizzie: unfortunately I believe googles data contains roman numerals 14:11:29 my pseudo-intelligence leads me to say, ("ais523") = "523". ("523") = '5', '2', '3'. ('5') = 5. ('2') = 2. ('3') = 3. 5+2+3 = 10 14:11:29 which sometimes leads to ridiculous things like triple i's 14:11:38 `word 10 14:11:40 tris bayions au minis tolotti ital coneu via tchliplanosleociot exillesta 14:12:19 Festival pronounces eldenernefl with pretty much a silent "den"; el-ner-neh-ful. 14:12:33 i quite like tchliplanosleociot 14:12:33 Sorry, 'de'. 14:12:59 as for exillesta... thats just a kick ass word 14:12:59 itidus21: it's squishy in my mouth 14:13:11 In fact, I can't hear any difference between elnernefl and eldenernefl. Maybe the latter is just archaic spelling for the former? 14:13:29 most likely... 14:14:34 `word 14:14:37 sen 14:14:51 That's valid Finnish. 14:15:13 And I suppose quite a few other languages too. 14:15:30 Japanese and Swedish, at least. 14:15:37 yay i got 23000 euros today 14:15:47 Don't spend it all at once now. 14:15:47 `word 14:15:49 progyribure 14:15:54 oklopol: grant? 14:15:56 yes 14:16:04 but that sounds less cool 14:16:13 oklopol: you have to like spend it a certain way don't you 14:16:17 ? 14:16:26 it's for living expenses 14:16:30 ah cool. 14:16:41 -!- Slereah_ has joined. 14:17:14 -!- Slereah has quit (Ping timeout: 252 seconds). 14:17:14 oklopol: you should buy a nice TV and a PS3 and play Demons' Souls 14:17:27 And maybe some food too. 14:17:37 If there's any money left after the essentials. 14:17:44 Like those mentioned above. 14:17:45 oklopol: my grant comes more gradually 14:17:46 eh 23000 euros is plenty for food. poor American white trash could live off of that for a year at least. 14:17:54 I just look at my bank account and find that there's more money in there than I remember 14:18:09 ais523: mine too, probably. i'm just polishing the facts a bit. 14:18:25 i have to live off it for a year. it's actually just my normal salary. 14:18:35 My grant just somehow goes into some (rather large, I think maybe 80% or so?) percentage of my regular monthly salary. 14:18:38 perhaps even slightly less since i just got a raise. 14:18:40 I don't really know the details. 14:18:50 yeah maybe mine does too 14:18:55 it's from väisälä, you may know it 14:19:01 oklopol: you could probably get like, what, 92 high-class escorts (read: prostitutes)? 14:19:14 i don't know where to get those in finland 14:19:28 Also the rest of the paycheck comes from some place, but I don't know where. Maybe it's the... department? I don't know, the bureaucracy is confusing. 14:19:51 kallisti: I'm amused that you know the price that accurately 14:19:55 all of you guys have grants? weird. 14:20:01 I just get paid. 14:20:13 fizzie: my grant and paycheck are added separately 14:20:18 my paycheck currently comes from the "project" of my supervisor (in math, project just means... nothing) 14:20:18 ais523: well it was an estimate. 14:20:19 i don't have an income. i get 'supported' by my family 14:20:25 amusingly, the paycheck has many times more bureaucracy 14:20:31 not to complain. i do nothing to deserve an income 14:20:43 itidus21: that was the case for me before I got a job, too 14:20:52 and I imagine it's the case for pretty much everyone too young to have a job 14:21:24 * kallisti is currently supported by his family /and/ making money. 14:21:25 im not on a dole either.. and im relatively happy really 14:21:28 kallisti: up to now, i just had a paycheck, but my supervisor asked me to apply for a grant since he ran out of money for next year because he desperately needed to fish a good student for himself. 14:21:33 at least for now. I intend to move out sometime next year. 14:21:46 oklopol: academia is weird. 14:22:08 since the student might have gone with a different professor if he'd waited. 14:22:15 i chat with a lot of people more intelligent than me 14:22:36 it's not good for my relative sense of intelligence :D 14:22:52 itidus21: I think most people do, actually; people tend to gravitate towards people with similar levels of intelligence 14:22:56 ais523: Well... I have a regular salary selected from our salary tables, but I have this four-year "Doctoral Programme" position from http://www.cs.helsinki.fi/hecse/ too, so that money gets somehow funneled in as a "funding source" into whatever percentage of my salary it happens to cover, and the department makes up for the difference from some other project/funding/whatever. 14:23:02 and thus will tend to meet people more intelligent than themselves, no matter how intelligent they are 14:23:08 fizzie: hmm, how complex 14:23:10 ais523: oh.. thats a positive 14:23:22 * kallisti makes terrible web apps for a living. 14:23:24 i gravitated towards #esoteric 14:23:27 (exception: the most intelligent few people in the world) 14:23:52 itidus21: I'm certainly not as intelligent as most people on this channel, but I still consider myself intelligent. do you know why? 14:23:56 because: real world 14:23:58 people are stupid 14:24:05 fizzie: it's much simpler for me; I have a 75% part-time PhD (which I'm being funded by the department to work on, at the suggestion of my supervisor), and am paid directly for a 25% part time teaching job 14:24:29 kallisti: if i had to judge, my question would be, do you realize there are inherent contradictions to such statements? :D 14:24:31 I've considered going getting a Phd at some point, but... I don't know if it's worth it. 14:24:50 itidus21: there aren't 14:25:17 taking oneself too seriously leads to a holistic decrease in intelligence 14:25:25 hm? 14:25:35 * kallisti takes everything SERIOUSLY AAAAAAH 14:25:38 .. :) 14:26:35 i mean... eh.. nevermind.. i need to be in another mood for that silly topic of mine 14:26:43 Also Condor, this "let's use our idle desktops as a computing grid" thingie, has a confusing -help for some commands: 14:26:44 ais523: oklopol: fizzie: the problem with me getting a Ph.D in Computer Science is that I don't really think I will be very /good/ at research. 14:26:44 $ condor_hold -help |& grep addr 14:26:44 -addr Connect directly to the given "sinful string" 14:26:48 or pretending that I'm researching. 14:27:19 What makes an "ip:port" sinful is unclear to me. Maybe it refers to struct sin_addr. 14:27:21 hmm, that could be a problem 14:27:33 it helps to have an obvious thing to be working on already 14:27:38 i thought i might just be a good student and a horrible researcher, but this seems to be going well 14:27:40 like the hardware compiler, in my case 14:27:44 i have something like 50 theorems now 14:27:51 wow 14:27:56 ais523: I work on side projects sure, but nothing that's groundbreaking 14:28:02 meanwhile, I have 3 papers, which contain an average of less than one theorem each 14:28:03 and three publications 14:28:08 I wouldn't write a paper on how I made a program that randomly generates words. :P 14:28:15 indeed, it's known techniques 14:28:21 oklopol: I hope you are naming them with a numbering scheme, so that you can have people referring to "oklopol's 37th theorem". 14:28:25 the general point of PhDs is that you're expanding the boundaries of knowledge 14:28:30 right. 14:28:43 oklopol is proving new results, whereas what I'm doing is basically programming 14:28:52 kallisti: uhhh.... this is a difficult topic. in the end intelligence as a measurement crumbles under it's own weight. 14:28:53 it's coming up with new algorithms, I guess, looked at from the mathematical view 14:29:12 and when we prove theorems, it's either to prove that they produce the right results, or that they always terminate 14:29:12 i don't think many of them will ever be referred to, this is the number of theorems that aren't trivial to prove, the number of useful results is way less. 14:29:21 ais523: maybe as I focus on new side-projects I'll come across something somewhat new. 14:29:26 so i guess what i am saying is there is a mild sarcasm for me whenever i use that word intelligent 14:29:27 *something 14:29:28 Programming can be a research topic 14:29:38 But results tend to become dated 14:29:44 kallisti: we couldn't believe that what we were doing was new, in some cases, but it turned out that it was 14:30:17 we have some computational results, decidability and semidecidability stuff 14:30:25 ais523: maybe I should focus on what interests me outside of computing. I have a pretty strong grasp of signal processing as it relates to music. I could probably find something new there. 14:30:26 kallisti: uhhh.. like.. you know.. theres tangible intelligence and intangible intelligence *pulls hair out* 14:30:40 mainly on zero entropy sofic shifts, since we're trying to get to a CS conference that emphasizes this 14:31:21 itidus21: I generally don't think that the many different kinds of intelligence are truly quantifiable. IQ has statistical importance but there are other ways to think of what intelligence means. 14:31:27 maybe not 50, the number was 37 last i checked, but that was after summer and we have 3 new results this week i think 14:31:34 so it might be about 50 but dunno 14:31:39 "Zero entropy sofic shift" sounds like something straight out of some new age crackpot website. 14:31:40 Phantom_Hoover: You have 12 new messages. '/msg lambdabot @messages' to read them. 14:31:50 ;_; the topic of intelligence itself is indeed one that requires intelligence to traverse 14:31:57 i'm counting mine and my colleague's, there's a couple that he proved and about half are joint work 14:32:07 ais523: in particular I've been considering that there are a number of combinators that you can apply to form rhythmic patterns. It may be under some existing generalization though. 14:32:58 @tell elliott FFS, find a way of messaging me that doesn't overflow so easily. 14:32:59 Consider it noted. 14:33:09 the simplest would be parallel and serial combinations. 14:33:17 but perhaps there are more. 14:33:19 a sofic shift is just a shift space defined by a labeled directed graph, they are the closure under factor maps of subshifts of finite type, which on the other hand are exactly the subshifts defined by a clopen set 14:33:25 in a natural sense 14:33:52 And time has four corners 14:33:55 and zero entropy means the topological entropy of the dynamical system where the left shift is the dynamics 14:34:31 Phantom_Hoover: does lambdabot overflow? 14:34:37 when messaging 14:34:41 but there's a nice characterization for these 14:35:10 i have no idea who i'm talking to 14:35:11 :D 14:35:33 hmm also you can shrink and expand rhythmic patterns. 14:36:03 so you could combine two rhythms serial (basically end to end) and also have the result be the same duration as the originally, basically doubling the speed of both. 14:36:49 but I'm pretty sure these notions of serial and parallel exist elsewhere. If you model rhythms as a linked list, then the serial combinator is just (++) in Haskell. 14:37:16 If you work hard on this, you might successfully get hired by whoever puts those bland pop tunes on the radios 14:37:25 ha 14:37:33 to algorithmically generate pop? sounds... uh... good 14:37:50 * kallisti would change pop forever by NOT USING FUCKING 4/4 TIME SIGNATURE FOR EVERYTHING 14:37:52 Sounds profitable. And Orwellian 14:38:19 yeah why is 4/4 so popular. Nothing wrong with 2/4, 3/4, 2/3 and so on IMO 14:38:27 Taylor Swift's latest single will be 5/4 7/4 5/4 14:38:33 They don't even use time signatures any more! They steal time signatures from older tunes. 14:38:46 (well, just 5-7-5, the denominator is irrelevant to the actual meter) 14:38:47 Look at breakbeats 14:39:26 Fibonacci time. 1-1-2-3-5 14:39:49 well you could have like, i,j-Fibonacci time. 14:40:04 i and j being the interval you want to use. 14:40:19 or something. :P 14:40:43 You could use nothing but concatenated permutations of a set of tones. Oh wait. 14:41:01 oklopol: i think sofic shift spaces are like the two-sided infinite generalization of regular languages 14:41:29 The Tool song "Lateralus" has one part where the syllables in each measure of lyrics follow the pattern: 1 1 2 3 5 8 5 3 14:41:45 you have a finite automaton, but it never stops nor has it ever started 14:42:28 yeah they are exactly the subshifts whose language is regular, and a regular language that's factor closed and extendable gives a sofic shift 14:42:41 Jafet: I think I'll use subsequences selected from an infinite continuum of sinusoids. 14:42:55 oerjan: You mean a duracell-powered finite automaton? 14:42:59 but my definition makes more sense in symbolic dynamics 14:43:02 fizzie: pretty much 14:43:03 imo 14:43:10 that's how it's mostly used 14:43:25 that it's the closure of sft's under factors 14:44:38 Festival pronounces "Phantom_Hoover" as "phantom-underscore-hoover". 14:45:51 isn't that how everyone pronounces Phantom_Hoover? 14:46:01 shockingly, no 14:46:12 I pronounce it as "Wally" 14:46:31 -!- oerjan has quit (Quit: ORLY?). 14:46:36 Jafet: I pronounce "Wally" as "[;[8]]&*]6" 14:46:51 "Some pronounce it 'asshole'." No, I mean, I wouldn't spell out the underscore if someone told me to read these IRC logs out loud. 14:47:12 !perl [;[8]]&*]6 14:47:13 Number found where operator expected at /tmp/input.7581 line 1, near "*]6" 14:47:20 !perl [;[8]]&*] 14:47:20 syntax error at /tmp/input.7641 line 1, near "[;" 14:47:24 !perl [[8]]&*] 14:47:28 there we go. 14:48:24 it was /almost/ valid Perl. :P 14:48:55 !perl print *] 14:48:55 ​*main::] 14:49:20 !perl print *]{SCALAR} 14:49:21 SCALAR(0x7f7155eaebf8) 14:49:28 !perl print ${*]{SCALAR} 14:49:28 Missing right curly or square bracket at /tmp/input.7956 line 1, at end of line 14:49:29 er 14:49:56 !perl print ${*]{SCALAR}} 14:49:56 5.010001 14:50:43 fizzie: ais523: have you ever found a use for typeglobs now that Perl 5 introduced refs? 14:51:11 kallisti: injecting variables into other package's symbol tables; this makes the most sense in a library designed to generate code 14:51:30 !perl print []|*] 14:51:30 ksi::}7f625ec6ed48) 14:51:55 I haven't, but I haven't been doing very "deep" Perl either. 14:51:56 e.g. you write a library which adds extra functions to packages that reference it 14:52:04 fizzie: wait, how does that work? 14:52:17 It just bitwise-ors the bytes. 14:52:19 aha, it's a reference bitwise-ored with a symbol table entry 14:52:30 but, err, what? 14:52:31 Of "*main::]" and "ARRAY(0xwhatever)". 14:52:41 !perl print [[8]]&*] 14:52:48 >_> 14:52:57 !perl print [[8]]|*] 14:52:57 ksi::}7fdd767b69e8) 14:53:12 The anded version starts with a null byte, sadly, so EgoBot won't print it. 14:53:24 stupid C. 14:54:36 -!- copumpkin has quit (Quit: Leaving...). 14:54:57 fizzie: is there anyway to enfroce a bit width of 8 on Perl scalar values? 14:55:16 I'd like to play around with a simple 8-bit synthesis in Perl. I could just use C but.... why not use Perl instead if I can. :P 14:55:46 -!- copumpkin has joined. 14:55:50 Don't know; they *could've* made "use integer" take a bit-width (like "use integer 8;"), but it doesn't. 14:56:02 -!- derdon has joined. 14:56:11 You can just &0xff everywhere, of course. 14:57:24 that's a possibility 14:57:46 What I think is a bit weird is how "use integer" makes the always-integral bitwise things (&, |, ^, ~, <<, >>) use signed integers instead of the unsigned ones they usually use. 14:58:26 !perl $a = ~0; { use integer; $b = ~0; } print "a $a, b $b"; 14:58:26 a 18446744073709551615, b -1 14:58:53 I suppose it makes some amount of sense, I just think unsigned integers are somehow more... integery. 14:59:00 Okay, *that* probably doesn't make any sense. 14:59:03 lol 14:59:19 fizzie and his arbitrary notions of integeriness 14:59:44 mayb "use integer" is like saying "use /all/ the integers" 15:00:22 even those negative ones. 15:00:46 what I find strange about bitwise operators in high-level languages is that normally those languages don't specify anything about the bit composition of values. 15:00:53 it just seems out of place. 15:02:51 negative integers? someone still believes in those?? :D 15:03:05 ..? 15:03:15 by the way, that article that supposedly proved peano axioms are inconsistent, it was retracted and there's no trace of it anywhere :D 15:03:25 heh. 15:03:39 the revelation was simply too shocking 15:03:50 it had to be concealed. 15:03:51 kallisti: if you multiply two negative integers, you get a positive one, that's fucking ridiculous 15:03:57 how can anyone think that's true 15:04:02 ..... 15:04:08 therefore there are no negative integers 15:04:14 bahaha 15:04:24 > bitSize (1 :: Integer) 15:04:25 I mean it would make sense if the result continued to be negative.. 15:04:25 *Exception: Data.Bits.bitSize(Integer) 15:04:29 that was actually an argument used when these were introduced 15:04:29 Aw, it has no size. :/ 15:04:56 but then who knows what would happen when you tried to multiply a negative and a positive.. 15:05:00 if negative * negative = negative 15:05:08 + * - = ..... +-? 15:05:13 there was really no concept of a mathematical object back then 15:05:23 yep 15:05:25 another proof 15:05:29 that they don't exist 15:05:35 well no you could totally do it that way 15:05:42 so that + * - = +- 15:05:44 anyhow, i have to go to a party 8Z 15:05:48 :D 15:05:55 bye 15:05:59 oklopol THE SOCIALITE 15:06:01 bye. 15:06:33 oklopol the SOCIALIST 15:06:50 A "socialite" is the no-sugar version of a "socialist". 15:06:56 fizzie: ais523: conjecture with me what would happen if you made multiplication of a positive number and a negative number have two possible results 15:07:45 + * - * - 15:08:26 anyhow, i have to go to a party 8Z 15:08:27 is 15:08:32 is that a running man smiley 15:08:40 well, it's still commutative I think.. 15:09:14 Can smileys be commutative? 15:09:21 if they're running yes 15:09:23 they're commuting somewhere 15:09:30 but that's not what I was talking about obviously :P 15:10:34 er.... no maybe it's not commutative 15:10:56 2 * -3 * -4 evaluating left to right 15:11:05 +-6 * -4 15:11:18 that's still just... +-24 15:11:44 Are you sure it's not +--24. 15:11:46 even though there are three results two of them are the same 15:12:07 but if you did it that way then it would result in it being non-comutative I think 15:12:11 because then 15:12:20 -4 * -3 * 2 15:12:24 I prefer the Copenhagen interpretation of arithmetic 15:12:37 evaluating left to right, would produce just +-24 15:12:50 instead of +--24 15:12:54 UNLESS 15:12:58 - * - = -- 15:13:03 but... okay nevermind 15:13:09 screw this direction of thought 15:13:17 you can only have +, -, and +- 15:13:18 LO 15:13:22 s/LO/:P/ 15:13:45 Lo, there are many planets in the archipelago of worlds. 15:13:50 Low colon pee 15:14:33 help I affiliate myself with madmen. 15:15:03 s/affiliate myself/confederate/ 15:15:09 AWWW YEAH +1 WORD CHOICE 15:15:45 inb4 "not +-1 word choice" 15:15:50 or something similar 15:15:52 fizzie, and, in turn, many archipelagos on the planets. 15:16:11 Phantom_Hoover: dude what if there are universe archipelagos 15:16:25 Univarchipelagos. 15:16:45 and... like, univunivarchipelago 15:17:03 WHAT IF EVERYTHING SMALL IS A SMALL VERSION OF SOMETHING BIG. 15:17:49 There's an island in the sea around here, on which there's a lake, in which there's a small islet, on which there's a puddle. (Didn't someone make a comic out of this already?) 15:18:23 That island must make great target practice for bomber pilots 15:18:25 kallisti, careful now, too much of that kind of thinking and you're ruining Minecraft's terrain gen. 15:19:07 #esoteric is an peoplarchipelago 15:19:23 and people are CELL ARCHIPELAGOS 15:19:24 zomg 15:19:27 zaaaaah 15:25:26 are there any four-signed number systems out there? 15:28:55 I think a four-signed number would mess up 1 as the multiplicative identity 15:29:01 0 would still be the additive identity though 15:30:48 unless you just kept 1 as the multiplicative identity and made multiplication asymmetric 15:42:34 -!- myndzi has quit (Ping timeout: 245 seconds). 15:46:35 -!- MSleep has joined. 15:56:12 -!- MSleep has changed nick to MDude. 16:05:53 -!- calamari has joined. 16:06:37 Wolfram blog on the fold function: "It shows unusual mastery of functional programming constructs to achieve a beautiful graphic result." 16:09:12 -!- Ngevd has joined. 16:15:04 Hello! 16:17:19 hi 16:17:46 ais523, you're in my top two people who are, or I think are, in Birmingham 16:17:51 Holloo. 16:18:10 Ngevd: there's quite a lot of evidence that I'm usually in Birmingham 16:18:14 Phantom_Hoover, you're my favourite person in Edinburgh. By a long way 16:18:19 although that doesn't imply I'm in Birmingham right now, it makes it quite a bit more likely 16:18:46 I can only conclude that you either a) hate someone else in Edinburgh or b) aren't very good at being pedantic. 16:18:59 I don't know many Edinburghians 16:19:07 Pretty much only you 16:19:57 In fact, only you 16:19:57 And possibly Alexander McCall Smith 16:20:33 I recognise the name, and I'm not entirely sure it's as an author. 16:21:09 It's probably just as an author, actually. 16:21:43 Yes 16:21:44 Did the 44 Scotland Street and Number 1 Lady's Decective Agency books 16:21:47 two of those names are kind-of familiar to me 16:22:17 I would be extremely surprised if neither 'Alexander' nor 'Smith' were familiar to you. 16:23:21 -!- itidus21 has quit (Ping timeout: 252 seconds). 16:23:36 My mum met him once when he came to Hexham 16:23:36 ais523, the other person who lives in Birmingham who I have heard of is possibly the author of Gunnerkrigg Court 16:23:50 hmm 16:24:01 I think there are quite a lot of famous people from Birmingham, because it's quite large 16:24:11 on the other hand, they're not generally famous /for/ being from Birmingham 16:24:42 hmmm, I'm confused. 16:24:53 I change the source of mueval to import some modules 16:24:59 and then I run the build script to install it 16:25:04 and.... nothing changed? 16:25:22 oh possibly the wrong mueval. 16:26:49 hmmm, no 16:28:31 -!- Ngevd has quit (Ping timeout: 248 seconds). 16:28:40 ah there we go 16:28:46 had to do Setup copy instead of install for some reason? 16:35:18 -!- Ngevd has joined. 17:00:36 -!- Klisz has joined. 17:04:52 -!- Ngevd has quit (Quit: Leaving). 17:25:56 -!- monqy has joined. 17:28:46 -!- elliott_ has changed nick to elliott. 17:28:49 -!- elliott has quit (Changing host). 17:28:49 -!- elliott has joined. 17:36:48 09:30:46: elliott_: is how you prevent Perl from interpolating in a shell command 17:36:48 09:31:06: if you're using system or whatever else you would just pass a single quoted string obviously. 17:36:51 kallisti: that is not the problem 17:37:01 kallisti: how do i pass args in a list like python subprocess 17:38:34 @ping 17:38:35 pong 17:39:18 elliott: um... 17:39:26 like how? 17:39:28 I don't remember subprocess. 17:39:39 but 17:39:39 what is the hardest language to debug? 17:39:44 'ls', '-l', 'filename with spaces' 17:39:50 this is necessary to avoid shell injection 17:39:55 I think you want system? 17:40:01 or exec, depending on if you want to wait or not. 17:40:11 system waits for the child to finish, exec doesn't 17:40:17 quintopia: Malbolge? 17:40:29 yes i guess i agree 17:40:29 a good IDE would help, though 17:40:33 yeah 17:40:46 ais523: how do I do perl's `...` but with an argv instead of a string or do i have to emulaet it myself 17:40:46 showing both original and normalized views of memory at once, and probably encryption chains too 17:40:51 kallisti: it's not system 17:41:02 it can be done with exec but that's a painfully low-level interface 17:41:09 elliott: there's no operator for doing that straight off, I don't think 17:41:16 there's almost certainly a library, probably a standard one 17:41:24 or, hmm, what about piped open? 17:41:32 I've never used it, but I think that's what you need 17:41:33 doesn't that look like '|foo bar' 17:41:37 which is not an argv 17:41:57 elliott: there's a four-or-more arg version of open 17:42:09 which does take an argv as the extra arguments at the end 17:42:33 ah 17:42:35 oh you want to pass the argv directly.... 17:42:39 open my $fh, '-|', 'somecommand', @argv; 17:42:52 then $fh is its stdout and you can just read it via the normal means 17:42:57 right 17:43:01 that sounds doable 17:45:06 * elliott does the regular Chrome restart 17:45:26 hmmm, when would you use CReal? 17:45:40 when you want computable reals 17:45:51 if you don't know whether you do or not, you don't 17:46:04 so it would basically be to avoid floating point errors? 17:46:09 no 17:46:13 that's Rational 17:46:37 so it would basically be to avoid floating point errors when you're not dealing with rational numbers? 17:46:48 you are dealing with rational numbers 17:46:51 floats are an approximation of rationals 17:46:55 kallisti: if it's referring to all computable reals, it only work properly on irrational numbers 17:46:58 *works 17:47:07 ais523: huh? 17:47:10 computable reals that happen to be equal to integers can't actually be converted to decimal expansion 17:47:17 you can still compute with them 17:47:24 ais523: err, I don't know what you're talking about 17:47:27 but you can't do < or > on computable reals unless the numbers happen to actually be different 17:47:29 CReal can output approximate decimals just fine 17:47:33 elliott: what about pi? 17:47:37 that's got nothing to do with decimal expansion 17:47:39 kallisti: if your question involves "avoid", "errors", you don't want CReal 17:47:40 that's irrational and approximated by float. 17:47:47 kallisti: unless you're a mathematician, you don't want CReal 17:47:48 elliott: I'm thinking of infinite-precision real numbres 17:47:52 *numbers 17:47:54 or a theoretical CSist 17:48:02 can I pretend to be one of those? 17:48:09 ais523: nobody uses the infinite-digit representation 17:48:10 kallisti: no. 17:48:10 I mean 17:48:14 I actually have no use case at the moment. 17:48:19 kallisti: here's some things CReal can't do: 17:48:19 I was merely curious 17:48:22 kallisti: terminate when you do (a == a) 17:48:30 kallisti: terminate when you do (a > a) 17:48:34 elliott: I've been to seminars where infinite-digit representation was involved 17:48:35 kallisti: terminate when you do (a < a) 17:48:49 and the main difficulty, as you're mentioning there, is comparing two numbers that happen to be equal 17:48:55 ais523: the main difficulty is arithmetic 17:48:57 elliott: you mean /always/ terminate right? 17:49:01 that's just a property of the computable reals 17:49:01 > let a = 1.23 :: CReal in a == a 17:49:01 kallisti: no 17:49:02 True 17:49:06 Deewiant: that's a cheat 17:49:09 kallisti: no, you get an infinite loop whenever you compare a number to itself 17:49:14 CReal's (==) instance just does it to an approximation 17:49:20 also 17:49:27 elliott: oh, I guess it's approximating with the decimal expansions too? 17:49:28 I'm not sure that's Few Digits' CReal 17:49:34 as in, there's always a chance that the last digit is wrong? 17:49:37 that makes sense 17:50:03 ais523: well, um, you can always take a CReal to within a given precision 17:50:07 i.e. "pi to 0.0000001" 17:50:28 elliott: yes, and your result will have more digits than you asked for, with the last potentially being wrong 17:50:36 you can't say "pi to 8 decimal places", though 17:50:52 elliott: they should be renamed to "undecidably equal reals" 17:51:00 well, you can because pi is irrational, but you couldn't if there was a chance that the number was actually accurate to 8 decimal places 17:51:10 kallisti: you act like you were expecting computable reals to be useful for computation 17:51:35 yeah.. 17:51:41 > pi ::CReal 17:51:42 3.1415926535897932384626433832795028841972 17:51:45 delicious cereal 17:52:07 http://sourcereal.com/ 17:52:15 elliott: such a good site 17:52:40 elliott: so CReal isn't good for like... high precision math because it doesn't terminate often? 17:52:56 kallisti: even if computable reals were useful for computation, Few Digits is incredibly slow 17:53:02 as are all the implementatinos, because... they're not useful for computation 17:53:13 it's theory. unless you're a theorist, you don't care. 17:53:22 "Few Digits is not fast. Few Digits is part of my Ph. D. research. My goal is to implement an exact real arithmetic package in Coq that is proven correct (with respect to C-CoRN) and is sufficiently fast. The goal is to be fast enough to prove the inequalities required by Hales’s proof of Kepler’s Conjecture." 17:54:03 so I only want to use CReal if I'm proving the inequalities required by Hale's proof of Kepler's Conjecture 17:54:07 got it. 17:54:27 elliott: I've been to a seminar that was using computable reals to calculate pi to infinitely many decimal places 17:54:34 and we've been using the resulting program as a test of the hardware compiler 17:54:46 on the basis that it's the sort of program that makes no sense to typical hardware compilers 17:54:48 ais523: that's, err, noteworthy enough for a seminar? 17:54:55 I can do that in five lines of Haskell 17:55:07 elliott: it was about computable reals, and just an example 17:55:11 fair enough 17:55:43 I ran the resulting VHDL for almost a week in a simulator on my laptop, it output the first 4 balanced binary digits 17:55:53 @quote pi 17:55:54 quicksilver says: overlapping actually shatters the language into tiny inconsistent pieces, and incoherent files off the edges of the pieces so they don't even fit together any more. 17:55:56 erm 17:55:58 `quote pi 17:56:00 9) Lil`Cube: you had cavity searches? not yet trying to thou, just so I can check it off on my list of things to expirence \ 14) First, invent the direct mind-computer interface. Second, you know the rest. \ 15) IN AN ALTERNATE UNIVERSE: First, invent the direct mind-computer interface. Second, learn the rest with your NEW MIND-COMPUTER INTERFACE. \ 30) 17:56:02 gah 17:56:04 `quote digit 17:56:06 427) meanwhile, I've been running a program for over 24 hours (getting close to 48 now) which is calculating digits of pi, in binary so far, it has found four digits I hope it will find the fifth some time this week \ 513) I actually had a Neopets account. I later gained a second digit in my age. \ 643) sadhu: it's been said that boole is the crowning jewel perched 17:56:09 427 17:56:18 yep 17:56:22 I knew it was in there somewhere 17:57:03 part of the slowness is all the interpretation between paradigms 17:58:10 simulating FPGA behaviour on a CPU is slow, as they're rather different arches; doing single-threaded recursion on an FPGA isn't really faster than doing it on a CPU; and there was no memoization, in a program designed to run in a call-by-need language 17:58:22 lol, this spam is from "Google Incorporation. (info.google@msn.com)" 17:58:29 (OK, so Haskell isn't /technically required/ call-by-need, but what sane interp doesn't implement it like that?) 17:58:36 Gregor: that's pretty good 17:58:54 (OK, so Haskell isn't /technically required/ call-by-need, but what sane interp doesn't implement it like that?) 17:59:00 ais523: speculative evaluation is pretty sane! 17:59:25 elliott: hmm, what's that, and how is it different from call-by-need? 17:59:43 ais523: it isn't a complete strategy itself, it just refers to evaluating thunks even when they're not demanded 17:59:56 and looking away sheepishly and pretending nothing happened if it ends up _|_ 18:00:09 the idea is that you predict which thunks are going to be used in the future and evaluate them ahead of time in another thread 18:00:11 thus saving time later on 18:00:21 ah, I see 18:00:55 presumably that ends up somewhat concurrent if done well? 18:01:15 well, you could even not do it in a separate thread 18:01:20 you'd just have to bound the number of steps you take 18:01:34 to make sure you don't accidentally make a terminating program with a non-terminating subterm less terminating than you'd like 18:02:23 elliott: if it's not in a separate thread, there's no benefit to doing it out of order, is there? 18:03:44 elliott: what was your Perl question about, btw? 18:03:56 ais523: well, you could change [high activity][long pause][result] into [halved activity][result] 18:04:07 by using every other cycle to reduce another complicated thunk 18:04:13 ah, hmm 18:04:14 that will be forced afterwards 18:04:20 you don't get the result any faster, but it might look nicer to the user? 18:04:29 ais523: well, incremental results are a useful thing :) 18:04:40 ais523: you wouldn't have wanted to get no output until the program found every digit of pi, right? 18:04:58 but it wouldn't give you any output any earlier 18:05:06 it'd just delay some of the outputs 18:05:11 ais523: well, you could change [high activity][long pause][result] into [halved activity][result] 18:05:15 the high activity outputs constantly 18:05:15 and you can do that just as easily with a postprocessor 18:05:17 as does the result 18:05:37 elliott: yep, so you can get a postprocessor that just hides the results until it's ready to feed one to the user and make it look like they're coming constantly 18:05:50 heh 18:05:53 well, OK 18:06:07 ais523: your argument seems to imply threads are useless on a uniprocessor 18:06:11 I imagine most people wouldn't find that useful, but in case it's required… 18:06:19 -!- Klisz has quit (Ping timeout: 244 seconds). 18:06:28 ais523: his question was about why Perl is so awesome and why he hasn't been using it since he was 8. 18:06:35 elliott: no, we were specifically discussing the single-threaded case 18:06:51 I can agree with a concurrent but uniprocessor case, potentially, although I think any performance gains will be marginal 18:10:27 it would be nice if strictness analysis worked perfectly always. 18:10:55 I guess it can't because doing so would be uncomputable? 18:11:18 ais523: but, umm, what's the difference between doing A, B, A, B, and doing A and B in threads on a uniprocessor machine? 18:12:17 because doing A and B in threads can just do "A then B", or it can interleave if necessary to do something like benefit from pipeline stalls 18:12:26 ais523: I think you can get pretty close to perfect.. 18:12:48 ais523: that's a microoptimisation 18:12:50 kallisti: no you can't 18:12:52 kallisti: indeed; you can write infinite loop checkers in practice that catch the majority of accidental infinite loops 18:13:04 strictness analysis is harder than detecting infinite loops imo 18:13:10 yeah.. 18:13:11 but you're not going to be able to use them for solving the world's big fundamental problems 18:13:17 it's incredibly easy to change semantics 18:13:57 elliott: this sort of thing's what my PhD is about, transforming programs without changing their semantics 18:14:14 as long as you have a really good type system for the transformation (which needn't be the same as that of the underlying language), it's not too bad 18:14:20 ais523: "this sort of thing" -- you took a large leap in generality there :P 18:14:28 elliott: indeed :) 18:14:37 strictness analysis results in rather simple transformations, they're just really tricky to find 18:17:08 12:35:49: psh, come on. you can totally non-deterministically reverse to multiple past images. 18:17:08 12:35:50: elliott_: I'm surprised that you're surprised at that; it's become more and more common recently 18:17:09 12:35:55: I'm upset by it, but not surprised 18:17:11 I don't keep up with PC gaming 18:17:14 12:36:12: what's wrong with requiring Steam? it's free right? 18:17:28 kallisti: must be running to play the game, requires network connection to play the game, forced updates 18:17:32 kallisti: DRM 18:18:15 Network connection isn't required 18:18:34 Deewiant: I haven't heard good things about the "offline mode" 18:18:35 Nor, in all cases, is keeping Steam running; you can often run the game exe directly 18:18:43 (Mostly what I've heard is "it doesn't work") 18:18:43 elliott: It's worked for me the few times I've used it 18:19:22 Deewiant: Well, my other objections are still relevant :P 18:19:37 Forced updates is the only relevant one 18:19:55 existence of DRM is often relevant 18:20:12 I took "DRM" as a summary of the previous points 18:20:38 nah, the fundamental concept of DRM is that it prevents you copying the game to a different system 18:20:46 the previous points are consistent with that, but don't imply it 18:20:48 Which Steam doesn't 18:20:57 it does if you don't own it 18:21:24 Deewiant: It was a summary, yes 18:21:30 Another objection: You're not allowed to sell your copy of the game 18:21:36 (Or, more generally, share it) 18:22:14 True enough 18:22:35 I don't think is an objection to "Steam has DRM" as much as it is "games are copyrighted and closed source" 18:22:47 Deewiant: Even more generally, I object to buying a physical box containing what is essentially a right to rent the game out :P 18:22:58 kallisti: Uhh, no. 18:23:02 kallisti: Selling games is not illegal. 18:23:17 I can buy a non-Steam game box and sell it and the recipient can play the game. 18:23:19 elliott: well, I did just that in the case of Neverwinter Nights; went to a shop and bought the Windows version for a license to download the Linux version (from the manufacturers) 18:23:22 I can buy a non-Steam game box and give it to someone else and the recipient can play the game. 18:23:30 None of these things are possible with a Steam box. 18:24:07 ais523: At least you could move those bits around and have them still work without them being tied to an account 18:24:10 I see. 18:24:19 ais523: Although selling them would be illegal because [copyright law] 18:24:28 elliott: indeed 18:24:51 kallisti: It's pretty impressive that copyright has managed to convince people that wanting to sell something you bought is unreasonable because it's INFRINGEMENT, though 18:25:07 I liked Borland's licenses; they were pretty much "please treat this software as a physical object; it's just fine for you to give or sell it to someone else but you must delete all your copies in the process" 18:25:45 ais523: well, it's more reasonable than most licenses, but it smells of lawyers demanding that bits be coerced into being like boxes 18:25:59 although they generally had a clause that you couldn't use the product to make another product that competed with itself 18:26:14 * elliott wonders what would happen if you just gave people a license to do absolutely anything with the downloaded binaries 18:26:15 so, say, you couldn't produce a commercial C compiler using Borland C 18:26:20 sure, it'd make it legal to put it up on a torrent site 18:26:24 but it'll end up on a torrent site /anyway/ 18:26:37 so if it doesn't noticeably increase piracy and the like, it sounds like a good idea 18:26:44 because of all the hassle it eliminates 18:26:45 elliott: I'm upset that game companies don't sell legal ROMs 18:26:53 I know quite a few people who'd buy them; I probably would 18:27:01 (that is, console game companies) 18:27:08 heh 18:27:21 unfortunately that runs into the problem that ROMs have tons of formats 18:27:24 ais523: many years ago atari licensed some of their arcade roms to a company called star roms.. I bought a few of them 18:27:24 the ROM is going to get dumped anyway, so why not give a legal access route for it rather than force people who want it to get it illegally? 18:27:30 and many of them are bad (= can't accurately represent the source media) 18:27:41 and the chances of the game company picking the right one are very small :P 18:27:48 *games 18:27:49 people would write converters 18:27:58 ais523: you can't write a converter from a broken format to a working one 18:28:04 well, OK 18:28:06 yeah that's what happened.. star roms handled the formatting of it for mame or whatever 18:28:17 I'd assume they'd pick a format that contained all necessary info 18:28:20 elliott: for modern roms you just need a memory dump. Much harder for snes era and older of course. 18:28:23 ais523: consider that the vastly most common SNES ROM format is broken 18:28:27 well, *formats 18:28:38 to my understanding 18:28:42 elliott: hmm, what info does it miss? 18:28:42 indeed 18:28:51 ais523: ask pikhq for details 18:29:09 http://bos.github.com/criterion/ oh my god this is so pretty 18:29:43 Valve Corporation President Gabe Newell also stated "most DRM strategies are just dumb" because they only decrease the value of a game in the consumer's eyes. 18:29:46 heh 18:30:00 wow, is that using something like 200-space indents? 18:30:10 ais523: ? 18:30:20 let me take a screenshot 18:31:06 Nuance's "Dragon Dictation" for iPhone has funny license terms: "You may not: -- (i) use the Service for purposes of comparison with or benchmarking against products or services made available by third parties." So you can't compare it with other iDevice speech recognition things in order to pick one of them to use. 18:31:29 fizzie: ... wtf 18:31:30 elliott: what's up with all the letters blending together at the bottom... 18:31:42 kallisti: where? 18:31:46 kallisti: that's a standard linux/chromium font rendering problem 18:31:53 try Ctrl + Ctrl - 18:32:00 kallisti: the link? works fine in firefox 18:32:14 elliott: oh weird. 18:32:24 elliott: I thought that was going to do... nothing, but it fixed it. 18:32:29 And the "no reverse engineering" clause is particularly broad too: "You may not -- decompile, disassemble, reverse engineer or otherwise attempt to derive, reconstruct, identify or discover any source code, underlying ideas, or algorithms, of the Software or Service by any means". If you're literal enough, you can't even just idly wonder what they've done, because it would be "identifying underlying ideas". 18:32:34 bleh, imgur got stuck at 79% 18:32:37 speaking of linux.. I switched to lubuntu (lxde) and I like it 18:32:40 ais523: ompldr.org? 18:32:43 fizzie: Identifying would be getting it correct 18:32:47 elliott: what's that site about? 18:32:57 fizzie: You can wonder as long as you wonder about the wrong things 18:32:57 Deewiant: Okay, "attempting to identify". 18:33:01 ais523: hardcore pornography and warez, obviously 18:33:10 fizzie: Oh, true. Heh. 18:33:12 hmm 18:33:16 I'll just describe it 18:33:22 also, file hosting 18:33:28 and not hardcore pornography and warez 18:33:31 but close enough 18:33:55 it looks like JavaScript, or a similar language; it starts beyond the left edge of the screen, and the first line is ','","");this.element_.insertAdjacentHTML("BeforeEnd",AU.join(""))};M.stroke=function(AM){var m=10;var AN=10;var AE=5000;var AG={x:null,y:null};var AL={x:null,y:null};for(var AH=0;AHAL.x){AL.x 18:33:58 Deewiant: Someone at work had tried to use it (they added the Finnish option just recently), got some bad results for complicated words with lots of suffixes, and wondered about the language model; felt tempted to say "no, stop! you're attempting to identify ideas!" 18:34:07 ais523: where is that from? 18:34:07 haha top files.. 2 are ponies 18:34:08 then the second line, and all the lines on the first screen, start level with the H in AHAL 18:34:12 Vorpal: elliott's link 18:34:15 ais523: no? 18:34:21 ais523: what browser are you using 18:34:22 ais523: s.getCoords_(AH+AJ,AF+AV);AS.x=z.max(AS.x,AR.x,AP.x,AL.x);AS.y=z.max(AS.y,AR.y,AP.y,AL.y);AU.push("padding:0 ",K(AS.x/D),"px ",K(AS.y/D),"px 0;filter:progid:DXImageTransform.Microsoft.Matrix(",p.join(""),", sizingmethod='clip');")}else{AU.push("top:",K(AW.y/D),"px;left:",K(AW.x/D),"px;")}AU.push(' ">',' G-AM-AQ)/AG,'"',' cropbottom="',(AT-AK-AX)/AT,'"'," />","");this.element_.insertAdjacentHTML(" 18:34:28 ais523: looks like your browser misparses html 18:34:29 Vorpal: Firefox 18:34:44 ais523: that stuff doesn't show up in my firefox window. Nor in view source 18:34:50 function t(Z){switch(Z){case"butt":return"flat";case"round":return"round";case"square":default:return"square"}} 18:34:52 elliott: then a screenful down from that, it starts even /further/ to the right, about one and a half screenfuls of horizontal scorlling 18:34:52 what a good function 18:35:01 ais523: run it in a non-broken browser 18:35:05 ais523: the whole page is a script though 18:35:07 *load 18:35:13 Vorpal: no it's not 18:35:18 well, the chart-drawing is 18:35:29 The Chromium "let's mangle letters together" thing is slightly annoying. (I've been using Chromium lately because my Firefox got so full of tabs I haven't dared to restore-session it, and I don't want to be all ineiros about it.) 18:35:30 right, I just right clicked and went "view source" 18:35:37 below that, about two screenfulls scrolling to the right, are the words "criterion performance measurements" in really large font 18:35:44 ais523: you can stop describing 18:35:56 and then various information, with a rather worrying amount of vertical spacing 18:36:01 elliott: I'm just amused that you found it all beautiful 18:36:02 ais523: which firefox version? 18:36:04 fizzie: it never used to happen to me before i switched to arch; I think Chrome might not have that problem somehow 18:36:08 ais523: because it doesn't look like that 18:36:10 Vorpal: 3.6 18:36:20 ais523: ha ha, I'm seeing something different to you and I think it looks nice 18:36:20 ais523: that is ancient! 18:36:24 amusing! 18:36:25 ais523: I'm on 8.0.1 18:36:25 elliott: in that case, why won't you believe me when I say github is broken? 18:36:28 seemed to look okay for me.. ff 8 in linux 18:36:33 -!- elliott has left ("ragepat"). 18:36:36 -!- elliott has joined. 18:36:37 -!- elliott has left ("ragepart"). 18:36:50 ais523: let me try on whatever luicd has 18:37:16 @tell elliott fuckfacer 18:37:16 Consider it noted. 18:37:20 -!- hagb4rd has joined. 18:37:35 @ignore kallisti 18:37:35 Not enough privileges 18:37:39 hmm 18:37:45 how do I tell it not to let kallisti @tell me? 18:37:49 @help tell 18:37:50 tell . When shows activity, tell them . 18:37:59 @help commands 18:38:00 help . Ask for help for . Try 'list' for all commands 18:38:03 @tell elliott -shooshpap- 18:38:04 Consider it noted. 18:38:05 @list 18:38:05 http://code.haskell.org/lambdabot/COMMANDS 18:38:07 what elliott just did reminds me of when I am trying to get off the phone with someone and saying the usual crap and the phone disconnects 18:38:09 ais523: yeah it is broken on firefox 3.6 18:38:19 do I call back to say "bye", or just leave it at that? 18:38:20 ais523: just upgrade already 18:38:28 hm html5 gepaart mit ein wenig krimineller energie.. enjoy ;) 18:38:32 http://homepage.alice.de/hagbard/disintegration.html 18:38:38 never call to say bye 18:39:12 yeah I don't,, it's just awkward .. so rejoining irc to correct your /quit typo seems weird lol 18:39:13 ais523: in a modern browser it really has a very nice design 18:39:25 Vorpal: isn't being broken on a reasonably recent browser (Firefox 3.6 is reasonably recent, even if the version numbers have been going stratospheric recently to hide it) a sign of a badly-designed website? 18:39:59 I can't think of a clever way to format my code for my IOCCC entry. 18:40:00 Firefox 3.6 is two years old 18:40:02 ais523: maybe. But then it might be a bug in firefox 3.6 18:40:13 Deewiant: right, it's only two years old 18:40:14 didn't work in ie 6 18:40:14 I'm thinking I'll just indent it nicely and say "look: even indented nicely it's incomprehensible" 18:40:18 (kidding, didn't test that) 18:40:20 ais523: I don't think you should design for anything but the official specs. 18:40:30 -!- elliott has joined. 18:40:31 ais523: if a browser is buggy is it not the problem of the web designer 18:40:33 calamari: It was a /part typo! 18:40:34 elliott: You have 2 new messages. '/msg lambdabot @messages' to read them. 18:40:43 -!- elliott has quit (Quit: this is a quit typo!). 18:40:55 ais523: it is the problem of the browser programmers 18:40:57 Deewiant: But latest 3.6.x is less than a month old. 18:41:05 ais523: do you disagree about that? 18:41:07 (3.6.24, Nov 08.) 18:41:13 Gregor: I've had the best indentation idea ever for my entry 18:41:14 it's managed to confuse every prettypogram I've tried yet 18:41:17 Vorpal: perhaps; I'm not convinced that the website is following the specs, though 18:41:32 fizzie: Since < 3.6.10 they've all been only security updates 18:41:36 ais523: I could throw it into the w3c validator. Not sure it does js 18:41:56 well, it shouldn't be displaying scripts it doesn't understand 18:42:04 -!- elliott has joined. 18:42:04 well, it isn't 18:42:05 ais523: It is; your browser misparses comments. 18:42:08 Deewiant: An update is an update is an update. 18:42:09 and it should gracefully degrade for people with scripts turned off (I have scripts turned off) 18:42:16 elliott: glad you found my analysis amusing tho 18:42:19 elliott: hmm, aha, I think I might know what the problem is 18:42:23 "118 Errors, 5 warning(s) " 18:42:38 does the page have a "comment" starting 14:59:38 --visible text on [[Bitonic sorter]] 14:59:48 lol 14:59:59 let's push it for featured article status. 15:00:27 elliott: that /is/ correct comment syntax in Wikipedia, so presumably someone escaped it, perhaps by accident 15:00:44 ais523: it's in a code block 15:01:34 aha, that probably explains it 15:01:40 http://28.media.tumblr.com/tumblr_lrbca4gZCE1qdtcgvo1_500.jpg 15:01:48 you don't want to know how MediaWiki parses extension tags (such as GeSHi's ) 15:02:05 and I can easily imagine that it would pass comments literally to the extension without parsing them 15:04:18 ais523: it should, is valid code in many languages 15:04:24 such as HTML 15:04:36 agreed 15:05:00 it's a syntax error in INTERCAL, though 15:06:50 hmm, it's valid, and potentially even useful, brainfuck, though 15:11:25 > let so it = isn't in 1 3 15:11:26 2 15:16:26 oerjan: I'd call that valid but not potentially useful 15:18:58 A lot of au pairs, especially those who are new to the role, don't know what to expect when they get started do the job with a new host household. Even though your principal duty would be to care for the little ones, there are also a array of other household tasks you could be asked to do. The aim of this article is to give you a fast insight into the forms of tasks you might be anticipated or asked to do. 15:19:08 ais523: --> is a perfectly plausible operator name 15:19:19 yep, but ) 15:19:24 parse error (possibly incorrect indentation) 15:19:29 ? 15:19:42 I didn't expect a parse error from that; is it the starting with - that matters? 15:19:50 :t \a b -> a --> b 15:19:52 forall t t1. t -> t1 -> t 15:19:56 that _should_ be legal 15:20:06 :t (--+test) 15:20:08 parse error (possibly incorrect indentation) 15:20:11 yep, and that verifies that there's an --> operator already, which doesn't surprise me 15:20:25 It's just lambdabot failing 15:20:26 :t (-*) 15:20:27 Not in scope: `-*' 15:20:32 … 15:20:35 GHCi handles it correctly 15:20:38 :t (--test) 15:20:39 parse error (possibly incorrect indentation) 15:20:48 :t (-+-test) 15:20:49 Not in scope: `-+-' 15:20:49 Not in scope: `test' 15:21:02 i think it is breaking the comment parsing rules 15:21:15 that _shouldn't_ be a comment 15:21:20 (--test) is supposed to be a parse error 15:21:22 yep, it seems to get confused by -- 15:21:24 (--+test) and (-->) aren't 15:22:14 which given that that's comment syntax, is a plausible thing for it to be confused by 15:22:58 personally, I think that for a language with -- comments, the correct comment introducer should be "-- " with the space 15:23:04 otherwise you get too many clashes 15:23:11 :t (--) 15:23:13 parse error (possibly incorrect indentation) 15:23:19 yep, but 22:37:24 Deewiant: Uhh, no 22:37:28 Deewiant: That won't handle slowdown 22:38:00 I'm not releasing until I'm faster than CCBI on all the programs I can find that don't run in less than half a millisecond :P 22:39:21 vaporware by design 22:39:34 I'm not going to stop until I can search through the logs for me saying "I may" and can say, "I did!" 22:39:38 Honestly 22:39:53 Stop what, do I hear you ask? 22:40:04 `log Ngevd> .*I may 22:40:06 Saying "I may"? 22:40:10 oerjan: Taneb too 22:40:18 2011-12-11.txt:15:58:15: During that, I think I may have worked out a way to do rudimentary arithmetic 22:40:21 `log Taneb> .*I may 22:40:27 2011-07-11.txt:15:27:10: I may make an esolang based on football (soccer) 22:40:46 The first one was in my fervent bytepusher dream 22:40:55 Which was... yesterday 22:41:08 The second one, I don't remember 22:41:12 But was in... 22:41:18 July!? 22:41:20 I can't believe you have to scan a document with a phone number to contribute to tup. 22:50:01 Well, my awful code is almost ready to be posted in here for... 22:50:06 Help 22:50:27 hi 22:50:32 I just need to save it and see if it works 22:50:35 Hi, monqy 22:51:04 In other news, tiffany is now my strongest Pokmon 22:51:29 After she defeated the Mauville and Lavaridge gym leaders singlehandedly 22:51:40 And just like that, tiffany's existence was given some justification. 22:52:51 Hey, I found Gregor on Spokeo. He's a married black male in his late 50s who lives in an apartment worth about $37,000. He did not go to college and works in sales. 22:52:58 He lives in Detroit. 22:53:18 `log Ngevd> .*I may 22:53:23 2011-12-12.txt:22:40:04: `log Ngevd> .*I may 22:53:28 `log Ngevd> .*I may 22:53:34 2011-10-04.txt:20:37:46: I may try to write a Fibonacci numbers thing in Brook 22:53:42 `addquote Hey, I found Gregor on Spokeo. He's a married black male in his late 50s who lives in an apartment worth about $37,000. He did not go to college and works in sales. He lives in Detroit. 22:53:45 761) Hey, I found Gregor on Spokeo. He's a married black male in his late 50s who lives in an apartment worth about $37,000. He did not go to college and works in sales. He lives in Detroit. 22:53:46 Okay, I did try to do that 22:53:47 I... think we might have found the wrong one. 22:53:50 Didn't get very far 22:53:54 `delquote 761 22:53:57 ​*poof* Hey, I found Gregor on Spokeo. He's a married black male in his late 50s who lives in an apartment worth about $37,000. He did not go to college and works in sales. He lives in Detroit. 22:54:00 `addquote Hey, I found Gregor on Spokeo. He's a married black male in his late 50s who lives in an apartment worth about $37,000. He did not go to college and works in sales. He lives in Detroit. I... think we might have found the wrong one. 22:54:02 761) Hey, I found Gregor on Spokeo. He's a married black male in his late 50s who lives in an apartment worth about $37,000. He did not go to college and works in sales. He lives in Detroit. I... think we might have found the wrong one. 22:54:28 And, of course, it says "To see all of Gregor Richards's personal information » Click Here". 22:54:37 I just love how everyone's personal information is up for sale now. 22:56:03 nah Gregor cannot be black, he looks nothing like Michael Jackson. 22:57:49 Are you saying all black people look alike? Michael Jackson looks nothing like Eminem. 22:58:15 well, just the skin color, of course 22:58:38 I'm beginning to doubt that everything in this channel is completely true and unmisleading. 22:58:54 :o 22:59:08 tswett: well we do occasionally get trolls, like that guy earlier 22:59:24 -!- pikhq has quit (Ping timeout: 240 seconds). 22:59:36 -!- pikhq has joined. 23:04:46 -!- Ngevd has quit (Ping timeout: 276 seconds). 23:13:54 * Phantom__Hoover → sleep 23:13:56 -!- Phantom__Hoover has quit (Quit: Leaving). 23:19:24 Gregor: I like how your hostname is still "foobar". 23:19:27 *username 23:25:21 -!- hagb4rd has joined. 23:26:22 elliott: It's a good'n. 23:34:28 listen and enjoy.. berlin! http://homepage.alice.de/hagbard/stadtkind_(barbara_morgenstern_remix).mp3 23:38:57 -!- pikhq has quit (Ping timeout: 245 seconds). 23:39:02 -!- pikhq has joined. 23:48:03 -!- zzo38 has joined. 23:54:57 If the DVD recorder is connected to itself, it allows to record a Macrovisioned VHS tape to DVD. 2011-12-13: 00:07:28 -!- elliott has quit (Quit: doop). 00:14:16 -!- kmc has quit (Quit: Leaving). 00:19:00 -!- pikhq_ has joined. 00:19:15 -!- hagb4rd has quit (Ping timeout: 240 seconds). 00:19:16 -!- pikhq has quit (Ping timeout: 248 seconds). 00:27:29 -!- copumpkin has quit (Quit: Computer has gone to sleep.). 00:29:25 -!- pikhq has joined. 00:29:48 -!- pikhq_ has quit (Ping timeout: 252 seconds). 00:37:11 finish this analogy 00:37:24 Christianity:Windows::Wicca:? 00:40:52 Christianity has many distros 00:42:18 -!- DCliche has joined. 00:45:54 -!- Klisz has quit (Ping timeout: 252 seconds). 00:46:27 -!- DCliche has changed nick to Klisz. 00:51:33 -!- copumpkin has joined. 00:52:34 -!- calamari has joined. 00:53:50 -!- hagb4rd has joined. 00:57:57 Jafet: yes, true, but ignore that for now. is has the property that (a) the majority of religion-users in the western world use it and (b) it is very much targeted at the lowest common denominator, although there is latent potential for power users as well. 01:04:16 Shame you didn't go with Scientology. 01:04:21 Then I could finish it so easily. 01:04:39 ::Scientology:LoseThos 01:05:54 i want to know which OS is so esoteric and obscure that only paganism suits it 01:06:18 I'm inclined to go with OS/2. 01:06:32 Or perhaps FreeDOS. 01:07:16 but but, it needs to be an os which claims to be the modern revival of an os which windows brutally crushed 01:07:45 An OS/2 remake? 01:07:55 OS/2 is still maintained. 01:08:57 Modern Christianity has as many pagan elements as Christian elements 01:09:28 -!- Jafet has quit (Quit: Leaving.). 01:18:13 eek, reddit won't load, i haven't seen that in a while 01:36:25 How about that BeOS remake? 01:38:56 Not that BeOS really counts as "brutally crushed" in the "existed earlier but then" sense, more in the "tried to get going but then" one. 01:39:58 Jafet: Yes, I can understand. The religions are based on older traditions so that includes Christian as well as pagan (for various reasons; you might learn on Wikipedia) 01:40:36 I use FreeDOS at a Roman Catholic education center. 01:47:35 -!- elliott has joined. 01:47:51 01:05:54: i want to know which OS is so esoteric and obscure that only paganism suits it 01:47:54 paganism is "so esoteric and obscure"? 01:48:35 IT TOTALLY IS 01:49:24 01:06:18: I'm inclined to go with OS/2. 01:49:31 pikhq: For some reason I want to say that OS/2 is Zoroastrianism. 01:49:34 I know little about both. 01:49:54 01:36:25: How about that BeOS remake? 01:50:15 fizzie: It's called Haiku, dude, there's pretty much no chance it's not Buddhism? 01:55:32 A quick look as WIikipedia ways that Wicca is a specific form of paganism related to witchcraft. 01:56:42 That agrees with what I know from that Scoobie Doo movie with the wiccans in it. 01:56:50 `addquoet A quick look as WIikipedia ways that Wicca is a specific form of paganism related to witchcraft. That agrees with what I know from that Scoobie Doo movie with the wiccans in it. 01:56:52 ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: addquoet: not found 01:56:56 `addquote A quick look as WIikipedia ways that Wicca is a specific form of paganism related to witchcraft. That agrees with what I know from that Scoobie Doo movie with the wiccans in it. 01:56:58 762) A quick look as WIikipedia ways that Wicca is a specific form of paganism related to witchcraft. That agrees with what I know from that Scoobie Doo movie with the wiccans in it. 01:57:05 Haiku - "I can't believe it's not but.. Buddha". 01:57:12 MDude: You should write a book and call it Everything I Know About Wicca I Learned From Scooby Doo. 01:58:04 -!- cheater has joined. 01:59:23 Is there any operating system connected to to some earlier system that was hunted down in a manner similar to a witch hunt? 02:00:04 MDude: All I can think of is if SCO suceeded in DESTROYING LINUX and then someone started developing it again decades later. 02:00:10 That didn't happen though. (YET?) 02:00:21 Also, I heard about wiccans form other places, but figured it was mostly generic pagan stuff. 02:00:28 I don't think operating systems are hunted a lot. 02:00:45 Though I guess I thought a lot of pagan stuff was connected to witches. 02:00:50 They're too boring, and there's a huge barrier to entry so obviously illegal stuff doesn't tend to happen. 02:01:05 MDude: Isn't "witch" just generic pagan stuff these days? :p 02:01:36 I don't really know, it's not the kind of tihng I keep up with. 02:01:49 There is actually a witchcraft-themed linix, though. 02:02:50 I found it by looking up "Linux grimoire". 02:03:54 That just brings up Source Mage for me. 02:04:00 I suppose that counts as "witchcraft-themed". 02:04:04 -!- thatmentat has joined. 02:04:14 Greetings friends. 02:04:28 `welcome thatmentat 02:04:31 thatmentat: Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page 02:04:43 i should point out that in some muslim states you can _still_ get executed for presumed witchcraft, i saw one mention from saudi arabia in a paper today 02:04:45 * elliott is a `welcoming machine of ruthless efficiency 02:05:05 oerjan: We sure are unifying the two definitions of esoteric here. 02:05:05 Well it doens't seem like it's themed after ancient Persian scholars. 02:05:19 oerjan: And apparently in Canada it is illegal to charge money for "witchcraft" stuff or something like that..... 02:05:53 elliott: In that case, you can probably unify a lot of stuff in certain ways for certain purposes 02:05:55 This is a chat room for programming languages? 02:05:55 http://esoteric.voxelperfect.net/w/index.php?title=1_Chat_Line&curid=4885&diff=26035&oldid=26034 one of our spambots just tweaked the colours it's using 02:06:03 "naw, i think red is better here" 02:06:06 zzo38: wrt that i read in britain (until recently?) it was not illegal to _be_ a witch but it was illegal to _pretend_ to be one 02:06:12 thatmentat: Yes. Even if it doesn't seem like it right now. 02:06:16 (Are you here for that, or the other kind of esoteric?) 02:06:19 *-that 02:06:25 er 02:06:28 *-*-that 02:06:31 oerjan: well they might burn someone by mistake 02:06:45 thatmentat: Yes, it is a chat room for esoteric programming but we discuss a lot of things here anyways 02:06:45 I came for the second. I haven't the patience to learn programming. 02:06:59 thatmentat: you probably won't find it on freenode, then 02:07:02 it's mostly technology-oriented 02:07:52 What is mostly tech oriented? 02:07:58 freenode, the IRC network you are on 02:08:07 -!- cheater has quit (Ping timeout: 245 seconds). 02:08:23 But if you have a specific question (regardless of topic), you might ask. And then quit if you do not get an answer (unless it is a question about esoteric programming in which case stay) 02:09:17 thatmentat: alas we have never learned of a good irc channel to recommend for those who come here expecting the other interpretation of esoteric 02:09:44 oerjan: we should just make one and let them all trickle in, it'll be more active than this place within a year :P 02:09:52 that 02:09:52 heh 02:09:54 do that thing 02:10:01 I could use recommendations of other irc places though, even if not specifically esoterical. 02:10:07 I realized that if you define a monad transformer and/or comonad transformer then you can easily define return and extract as well the definition will always the be same: return = lift . return; extract = extract . lower; 02:10:16 elliott: well those guys who started #philosophy tried to do that, didn't they? how is it working? 02:10:23 send people to irc.dal.net #esoteric 02:10:26 ^ 02:10:29 it's not #philosophy, is it? 02:10:33 thatmentat: Oh, is that active? 02:10:41 it was a year ago i think 02:10:44 elliott: i thought it was _something_ like that... 02:10:45 more than not existing 02:10:53 * Users on #Esoteric: elliott thatmentat QueenAqua @^roshi marduk666 @Venus666 VenusSatanas_ Trollfood ami- Cocytus hippl^ 02:10:55 Cocytus again! 02:11:03 did that guy just join #esoteric on every server everywhere 02:11:16 -!- derdon has quit (Remote host closed the connection). 02:11:22 elliott: that list looks promising, at least :P 02:11:23 I have an IRC server too, however it has no channels what you want probably and hardly anyone is in there 02:11:29 thatmentat: well, glad you've found somewhere 02:11:36 oerjan: <^roshi> thing is there are several streams of alchemy 02:11:38 oerjan: looks good :P 02:11:52 * elliott lurks. 02:12:08 What about alchemy? 02:12:10 let us know if anything above and beyond the usual pale of ridiculousness falls out 02:13:10 quintopia: thatmentat is still here, you know! :P 02:13:47 What are you talking about alchemy? 02:14:21 elliott: what's your point? 02:14:44 -!- oerjan has set topic: Zeroth to prove spontaneous human combustion wins | This is a programming channel; if you are looking for the other kind of esoteric you might try #esoteric on irc.dal.net | Logs: http://codu.org/logs/_esoteric/. 02:15:05 oerjan: hey i was going to _ask_ them first 02:15:14 -!- elliott has set topic: Zeroth to prove spontaneous human combustion wins | http://codu.org/logs/_esoteric/. 02:15:15 elliott: well we can remove it again 02:15:33 oerjan: OK that is good. But still we discuss a various a lot of things in here. 02:15:52 I just joined ones that looked like they had people in them. 02:15:55 So, figure out, should that message be there or not? Maybe it makes too long? Or other reason? 02:16:07 * elliott asks them 02:16:08 I was curious. 02:17:05 Interesting response. I didn't think he would reject the idea elliott. 02:17:19 yeah that was out of left field :P 02:17:20 But note, once someone accessed this channel, and then quit, and then I had something about astrology and then they could not have their question answered because they missed it. But still, notice that we have more mathematical points of view so they might not have understood the answer anyways (maybe). 02:17:47 What are you talking about alchemy? <-- elliott was quoting an example message from the other #esoteric channel at dalnet 02:18:25 they refused? 02:18:33 quintopia: no, the guy misunderstood what i said 02:18:35 oh 02:18:57 What does "several streams of alchemy" mean anyways? Alchemy is what they did before they had proper science, they could do it like that they did not know things better or have better equipment to know better. Now we have chemistry 02:19:35 The idea is that there are several basic models for Alchemy I believe. 02:20:07 Alchemy as was being discussed goes beyond simply trying to manipulate materials. 02:21:01 `run echo "This channel is about programming -- for the other kind of esoterica, try #esoteric on irc.dalnet.net." >wisdom/esoteric 02:21:03 No output. 02:21:07 `? esoteric 02:21:10 This channel is about programming -- for the other kind of esoterica, try #esoteric on irc.dalnet.net. 02:21:44 elliott: Yes that way might be good idea instead of topic message, I supppose. 02:22:04 And then you can make a shortcut for those kinds of informations message. 02:22:12 the only thing that can successfully survive our constant topic changes is the log link :P 02:22:32 zzo38: as i understand, alchemy sometimes has a strong spiritual component aside from the chemistry - basically you are supposed to transform yourself at the same time as you are learning how to transform materials 02:23:10 when put like that, it sounds like you could possibly even make a modern version based on actual chemistry 02:23:21 oerjan: i'm afraid not: "It must never be supposed that the practice of alchemy consists only in the exercise of the mind, will, and imagination, or that the products obtained are imaginary and intangible or invisible to mortal eyes." 02:23:31 from a link posted in #esoteric while i was there :P 02:23:42 apparently you still need the physical materials, though. 02:23:57 elliott: "only" does not mean that it doesn't also involve that 02:24:02 oerjan: Yes, sometimes they did do spiritual things based on some ideas of alchemy. 02:24:06 oh, wait 02:24:08 must never be supposed 02:24:14 i completely negated that meaning 02:24:19 But I think it is "spiritual alchemy" instead of real alchemy. 02:24:55 hi gaiz 02:25:13 oh right. 02:25:15 -!- xxDarkProphetxx has changed nick to kallisti. 02:25:39 Now we have science so we don't need alchemy (except for the purpose of making up new alloys, sometimes, at least according to some opinions). 02:25:40 (that's /too/ much irony. I can't handle it) 02:27:11 zzo38: okay so I'm working on an IRC bot that is intended to assist tabletop RPGing over IRC. 02:27:12 Whatever the discussion in here, it often involves some scientific and mathematical stuff, sometimes. Because this is how the people in this channel are, in general. 02:27:33 kallisti: Yes I was doing so, too. I think one IRC server has a GS command to do that too 02:27:57 zzo38: should I use my native WoD terminology for concepts, or should I use D&D, or is there some standard terminology that isn't D&D? 02:28:13 most people say "gamemaster" and "campaign" where I would say "storyteller" and "chronicle" I think. 02:28:25 kallisti: I say "referee" in my opinion, at least. 02:28:36 D&D uses dungeon master sometimes, doesn't it? 02:28:38 that... no I don't like that. :P 02:28:38 For dice, just use 1d6+2 or whatever. 02:28:39 oerjan: yes 02:28:50 oerjan: game or dungeon master works. I think gamemaster is typically preferred. 02:29:00 oerjan: D&D usually calls "dungeon master" but you could use different terms. I prefer "referee" but use whatever you prefer. 02:29:01 but I honestly don't know much about D&D culture 02:29:13 because I don't play that game. 02:29:24 * kallisti likes "storyteller" 02:29:25 -!- thatmentat has left. 02:30:04 kallisti: Read the D&D recordings I wrote and learn about how I play the game, at least. 02:30:11 with a single game being a story, and a set of stories with recurring characters and themes being a chronicle. 02:31:02 kallisti: Yes, that is a sensible view. I consider the game (story) consisting of several sessions, which have both session breaks and chapter breaks, which might or might not coincide. 02:31:23 I think some IRC server, if you use the command "GS ROLL 1d6" for 1d6 roll dice, and so on. You can optionally include a channel afterward to copy the results to the named channel 02:31:39 * kallisti plans to incorporate a little bit more than a simple dice roller, since he already has that. 02:31:54 I plan on implementing dice rollers for each system, perhaps with the ability to track stats. 02:32:43 so that you can say: !roll Dexterity+Acrobatics+2 diff 6 02:32:44 @dice 3d6 + 1d20 02:32:44 3d6 + 1d20 => 27 02:32:45 for example 02:33:04 O, lambdabot already has 02:33:21 that doesn't work well with shadowrun and WoD systems 02:33:27 where you roll a large number of dice against a target number 02:33:37 @dice 1000d6 02:33:38 1000d6 => 3527 02:34:37 I have thought of a different system: referee rolls all the dice by hand; players don't, however some common text adventure abbreviations should be understood by the referee 02:34:56 zzo38: well yes I was planning to have options to allow the referee to roll everything 02:35:12 !roll with 02:35:13 for example 02:35:30 I don't know if the complexity is warranted though, for the average tabletop gamer. 02:35:31 kallisti: No, I mean by hand. Like, not on the IRC. 02:35:58 @dice 8d8 02:35:58 8d8 => 28 02:36:12 Do it slightly similar to a text adventure game. (Text adventure game are the closest kind of computer games to a role playing games, in my opinion) 02:37:10 zzo38: oh yes, I play that way as well. 02:42:31 Have a program that runs on the referee's computer, with a separate window and the IRC as well; it is connected to the IRC server so that someone can use PRIVMSG whatever :HELP and so on, and make file transfer of the data if wanted, in the computer data format, and then possibly to DVI to print as well 02:43:16 (Commands other than HELP and STATUS would not be accepted if you are not currently in a game session, I guess) 02:44:01 And everyone makes synchronized local copy of game data, with the main data on the referee's computer 02:44:19 While private data does not have to go into the program at all 02:45:57 I do have a channel in my IRC server for RPG sessions, and I might be able to add server scripts for a few of things you do in there, if I want to do so. 02:47:41 zzo38: I was going to make the entire thing public, but with access restrictions. 02:48:00 of course rolls can be done in private via privmsg 02:48:07 also entering stats 02:48:19 but a storyteller for a certain chronicle would have full access to every characters information. 02:49:00 Just do all commands by private; results can be copied to the channel if the game is in session. And then have data files access 02:49:05 * kallisti would also need to implement an authentication system to make sure that nicks are identified. 02:49:15 I haven't figured out how to do that with the bot framework I'm using in Perl. 02:49:21 kallisti: That is, for IRC servers that have that. 02:49:23 so I might have to rewrite the low-level bits. 02:49:58 And there are some differences between servers too. 02:50:44 * kallisti wishes he was still coding for that WoD MUD 02:50:50 I was going to do so many awesome things with their dice roller. 02:51:33 like having a huge weapon table to automatically handle damage rolls on firearms and melee weapons 02:52:09 The server scripting language for my IRC is called "Cthulhu.194" and this is an example file: http://sprunge.us/SNPD 02:52:11 you'd basically have to know even less about the system than you already did in order to play. 02:52:22 oh god what is this. lol 02:53:33 I assume it's called Cthulhu for a reason 02:53:51 (The WEBIRC command was originally built in to the server program. I removed that feature and then added a script to implement it instead. A script can have multiple command names to access it; this is defined in the configuration file) 02:53:56 I... can't tell if it's postfix or prefix. 02:53:58 it seems to change. 02:54:27 Sgeo: Yes, it is because I implemented the SUMMON command that no other IRC has. And then someone in this channel mentioned SUMMON CTHULHU and they don't like that or whatever, so I called it that. 02:56:29 kallisti: Actually it is all prefix, although a few things act like they are postfix. 03:00:15 Here is another script (currently active in my server; however you do not have permission to access it): http://sprunge.us/RAjB 03:00:20 The memory manager I wrote for class has O(n) access time :( 03:01:13 pro 03:03:59 at first I thought creating a weapons table for a dice roller would be a huge pain, BUT 03:04:27 now that I've got a little better at scraping stuff with perl, I can just steal something online and convert it into a desired format. 03:05:16 instead of manually writing "Colt Anaconda difficulty 6, damage 6, rate 2, clip 6, range 35, Colt Detective Special difficulty 6, damage 4, rate 4, ..." 03:05:24 and then eventually killing myself 03:05:54 Just write the numbers separated by commas and a semicolon at the end of each record, is another way 03:05:58 as I go through common models of revolvers, shotguns, semi-automatic pistols, machine guns, machine pistols, rifles, assault rifles, battle rifles, ... 03:08:00 there's even weapon data on fun stuff like jackhammers, industrial drills, war hammers, tridents, chainsaws, and crossbows 03:08:15 because.. I'm totally going to bring a trident to a gun fight. that's my character's preference. 03:08:36 kallisti: O, OK. But then it is not a proper gun fight, isn't it? 03:08:41 guess not. 03:09:06 actually, if you're playing as vampires, the rules actually make melee weapons feasible, as bullets are nowhere near as effective against vampires. 03:10:35 so, vampire+chainsaw could be a viable option against a squishy mortal + small pistol 03:11:28 Attention self: It is NOT ok for the starting address of each partition to be the number of the partition 03:11:58 .. 03:13:46 Sgeo, why did you 03:14:17 Read the character data that I recorded for D&D games if you want to see some information about it in case it helps you to write a program to store these kind of data (mine is D&D 3.5 edition; but make the program acceptable for many systems including but not limited to this one) 03:14:19 Madoka-Kaname, I didn't deliberately. It's a bug that I somehow didn't notice when testing yesterday 03:14:29 And if you have other questions about the system you can ask that too 03:14:53 zzo38! 03:15:13 hagb4rd: ? 03:15:18 zzo38: I'm going to work on shadowrun and world of darkness first as these are the systems I primarily enjoy, though it's difficult to find anyone who has an interest in those things. 03:15:20 what kind of "information"? 03:15:59 zzo38: basically each system will have mostly unique rules so I'm not going to generalize anything. Each dice roller will use its own special syntax. 03:16:20 each system will have different kinds of data in character tables, etc 03:16:30 kallisti: OK, do that first, then. But see what I have afterward, you might be able to make a more generalized system if necessary. I can also give a little bit of information about the Icosahedral RPG system since it uses a few special requirements for character data storage 03:16:33 I had .Count() instead of .Sum() 03:16:53 hey may i see your ad&d work zzo38? 03:16:57 zzo38: well some of the library code will be generalized. 03:17:07 kallisti: Yes, that is what I was about to suggest. 03:17:17 zzo38: to avoid tedium. The idea is that you could specify what a character sheet contains and the "create character" command would just refer to that in order to generate a blank sheet. 03:17:41 hagb4rd: http://zzo38computer.cjb.net/dnd/recording/level20.tex 03:17:41 zzo38: and since it's all Perl I just let dynamic typing do its thing. 03:17:53 thank you 03:18:25 hagb4rd: It is a game story. If you want spells/feats/whatever I invented, I can show you those things too 03:18:57 kallisti: That was my idea with the Icochash program I wrote; however, I abandoned that and might later rewrite it, but not in PHP next time! Same thing with Icoruma, I might rewrite it in a faster programming language than PHP next time. 03:19:11 zzo38: why would you even consider PHP 03:19:23 yea.. actally yes.. i'm planning to write a irc-bot as a supporting device for pen & paper games over the net 03:19:23 zzo38: also why is performance important? 03:19:29 ...lol 03:19:35 SO MUCH CODE DUPLICATION 03:20:06 but the idea is you still need a game master and a story teller 03:20:12 and real roleplaying 03:20:14 kallisti: PHP is not very good but I have used it before. Next time I will use C or Haskell. And performance is good because when there are a large number of files it becomes slow 03:20:37 not if you just load everything into memory. 03:21:01 but zzo38 your link doesnt resolve in chrome 03:21:03 kallisti: Even if loading everything into memory, it is slow because it still has to load the files and parse them. 03:21:29 is tex like text in (la)tex? 03:21:30 at startup sure. or is this a web thing? 03:21:33 hagb4rd: Try adding "view-source:" to the front; that might work (I know it works in Mozilla; I don't know whether Chrome does or not) 03:21:48 kallisti: No, it is a standalone program, actually. 03:22:07 oh, well then parsing only adds to startup overhead. 03:22:11 and then everything is fine? 03:22:11 k lets do it that way then.. one need them all these days..*dumidum 03:22:12 hagb4rd: LaTeX is a format for TeX; this file is Plain TeX. 03:22:17 k 03:22:19 hagb4rd: what language do you want to use? 03:22:24 kallisti, elliott update 03:22:38 kallisti: Yes but it must reload every time you modify the input files in order to recompile them, and that makes it very slow 03:22:51 php or c# or sth in betwenn.. maybe all.. -> web services 03:22:53 -!- Nisstyre has quit (Ping timeout: 244 seconds). 03:22:53 dunno 03:22:56 Sgeo: I feel this intermission is a bit rushed, but nonetheless awesome to read. 03:23:13 hagb4rd: I thought it was an IRC bot and not a web-thing? 03:23:27 irc just as endpoint 03:23:33 to players 03:23:48 hagb4rd: oh, okay. 03:23:54 that's not a bad approach actually. 03:24:16 I'm used to MUDs though so I have absolutely no problems with a marginally complicated command interface. 03:24:20 a web interface would be convenient though. 03:24:37 im really not that far into how to implement things..and implementation will be trivial at all 03:24:48 I think it should not be a web interface; it should be MUD. But possibly add a Java web interface as an alternative. 03:24:50 +not (?) 03:24:59 (Some systems, such as FICS, do this) 03:25:14 its kind of operation research 03:25:25 -!- Vorpal has quit (Ping timeout: 276 seconds). 03:25:27 commands simplify things for the implementation. Normal people will be scared though because OH MY GOD I HAVE TO LEARN SYNTAX. 03:25:54 -!- Nisstyre has joined. 03:26:06 it would be nice if players could extend the world its actors actions and stuff by writing some kind of easy readable xmlcode 03:26:08 kallisti: Then do what I specified; use MUD and then make a Java frontend as an alternative interface to use? 03:26:20 hagb4rd: It doesn't have to be XML, necessarily. 03:26:28 no it doesnt 03:26:32 as i mentioned 03:26:55 hagb4rd: are you familiar with MOO? 03:27:07 * Sgeo goes to make random access in his memory manager O(1) 03:27:23 im into designing the game itself.. + try to invent something revolutionary new and motivational 03:27:24 hagb4rd: Do you like the document I posted, now? Can you read it now? (You could just download it and open in a text editor, if necessary) 03:27:25 Sgeo: isn't that kind of redundant? 03:27:33 random access typically implies O(1) I thought. 03:27:34 yes exactly 03:27:35 :) 03:27:41 if it's O(n) or anything like that it's no longer random access. 03:28:08 I had the idea Icosahedral RPG too, is the new game; however, it is not a computer game. 03:28:45 * kallisti wishes MUDs were not quickly dying out 03:28:55 they are a good medium for multiplayer roleplaying games I feel. 03:29:17 Here are two examples of Icoruma input files: http://zzo38computer.cjb.net/icosahedral/icoruma/intro.irm http://zzo38computer.cjb.net/icosahedral/icoruma/spells.irm 03:29:21 I definitely think they could use a modern interface, while still retaining the text-based medium. 03:29:24 there was a mud years ago which I believe still exists.. it had a huge map of middle earth and various towns and quests 03:29:29 but incorporating some mixed media. 03:29:41 kallisti: Then use MUDs if you like that way. I think just use the same protocol as the old way 03:29:52 http://esoteric.voxelperfect.net/w/index.php?title=1_Chat_Line&curid=4885&diff=26035&oldid=26034 03:30:03 zzo38: I'm kind of talking about a separate project 03:30:06 You don't need to incorporate some mixed media, I think. 03:30:07 anyways I almost got banned because I made a program that gave me a graphical map and could automatically navigate between towns 03:30:09 zzo38: my IRC bot is much simpler than a MUD 03:30:27 oh already bene noted 03:30:29 ;_; 03:30:37 calamari: those are fairly common in MUD clients. You don't even need to make one. 03:30:47 kallisti: this was a long time ago 03:30:53 kallisti: OK. Still, I think a MUD should be made the same way as the old way, possibly support alternative front-ends if they would help but allow any MUD client to continue working 03:30:59 calamari: also it's generally impossible to detect if you put a reasonable delay between moves. 03:31:06 Even a simple dumb MUD client should be acceptable. 03:31:19 kallisti: that's what I did lol 03:31:29 yes zzo38 at least i can grab it..will examine things later..im far behind tired 03:31:32 zzo38: I was thinking from the perspective of refreshing the community with new people. 03:31:33 need to sleep 03:31:57 kallisti: Well, add on new signals that are turned on when the client indicates support 03:32:00 far beyond 03:32:04 zzo38: though even with interface improvements most people are so attached to their big budget graphical games that they probably wouldn't adjust well to the text-based format. 03:32:10 kallisti: it added features too, where I could have virtual parties that existed.. the game didn't handle them, but we could track each other on the map via special private messages 03:32:16 zzo38: yes that's generally how it would work. 03:32:24 kallisti: was a lot of fun 03:33:00 zzo38: plenty of existing custom MUD clients are implemented over telnet and allow general clients. 03:33:04 But a dumb client supporting no signals other than text receive and command send, should still be acceptable. But also make the new clients with many new options and so on 03:33:42 one occasionaly problem is that many MUD clients are not actually legitimate telnet clients 03:33:54 I implemented this as a modem program actually... had to dial up to my unix shell account in order to telnet 03:34:15 in ms-dos of course, lol 03:34:17 but it's not a huge problem. You just send them something telnety and if they don't respond with something telnety then you just treat them like a basic socket and dump text (maybe with ANSI codes if the option is turned on since most clients support those) 03:34:48 so it was actually layers of hacks.. oh well.. it worked and it was fun 03:34:49 kallisti: Well, yes, if it is a telnet then you should handle backspacing and those things at the server too. 03:34:55 -!- GreaseMonkey has quit (Quit: The Other Game). 03:34:57 zzo38: there are actually some "mud protocols" that exist that allow mixed media and the like, but they're generally bad and not well supported. 03:35:04 But if it is a dumb linemode client, then use that. 03:35:41 kallisti: I remember back in the day that some bbses supported extra codes where if you had the right client you'd get a graphical gui 03:35:51 it was lame overall tho 03:36:16 just made it slower and didn't really add much since it was just showing the same info 03:36:52 well let's see how xfce compares against lxde.. bbl 03:37:22 -!- calamari has quit (Quit: Leaving). 03:45:27 -!- calamari has joined. 03:52:43 I have two lists of words 03:53:16 A and B, split by newlines. what's the fastest way in bash to display the words in A that aren't in B? 03:57:27 My memory manager is demented! Yay! 03:57:37 Probably due to the hastily conceived "random access" idea 03:57:43 * kallisti found the solution to his problem as well: use perl instead of bash 03:57:51 Or, well, poor implementation thereof 03:57:53 was gonna say that :p 03:58:11 quintopia: sometimes I wonder why I even try to use bash. 03:58:24 I get the misguided notion that I'm going to be faster with it if I get the hang of it. 03:58:27 but I'M NEVER GOING TO UNDERSTAND BASH 03:58:53 kallisti: probably bad elliott influence ;P 03:59:09 wat 03:59:10 faster to write? or faster computed? 03:59:13 to write. 03:59:29 yeah I'm all about the BREAKNECK SPEED of my simple automated tasks. 03:59:55 I want them to be UNNOTICEABLE FRACTIONS OF SECONDS FASTER 04:00:09 Icoruma has a few features I would like to see in other programming languages, such as wildcard includes. I don't know of other programming languages that have that. 04:00:23 show 04:00:31 oerjan: wat 04:01:53 elliott: see: certain HackEgo commands i rewrote 04:02:42 >_> 04:03:58 The idea of what exactly a "mana" is in Icosahedral RPG could also be used in other games too if you want to. 04:06:59 (Among other things, it is a commutative monoid, with five primes.) 04:14:29 I think, in the XOR monoid, True is prime. Is it? 04:18:39 .... I think, my professor's default fixed partition memory manager allocates an unneeded partition 04:33:27 elliott, kallisti, update 04:33:46 oh. 04:35:53 -!- calamari has quit (Quit: Leaving). 04:47:40 -!- Jafet has joined. 05:12:38 -!- hagb4rd has quit (Quit: Nettalk6 - www.ntalk.de). 05:13:06 -!- oerjan has quit (Quit: Good night). 05:14:25 -!- pikhq_ has joined. 05:15:01 -!- pikhq has quit (Ping timeout: 268 seconds). 05:33:10 What is the property of applicatives for which this applies: () <$ x = pure () for any x of this applicative type 05:34:24 zzo38: sounds like the equivalent of commutative monads 05:34:40 possibly equivalent to (f <$> a <*> b) = (flip f <$> b <*> a), I think 05:37:02 O, is that what commutative monads means? Your condition seems to me like commutative applicative? 05:37:46 -!- Jafet has quit (Quit: Leaving.). 05:38:05 something like that, yes :P 05:38:15 commutative monad is stronger i think 05:38:22 a >>= \x -> b >>= \y -> f x y = b >>= \y -> a >>= \x -> f x y 05:38:23 apparently 05:38:31 oh 05:38:35 do { a <- mb; b <- mb; f a b } 05:38:35 = 05:38:39 do { b <- mb; a <- ma; f a b } 05:38:43 that's easier to read :P 05:41:08 Is that similar but after join? 05:43:03 right 05:53:57 `style 05:54:00 ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: style: not found 05:54:01 ^style 05:54:01 Available: agora* alice c64 ct darwin discworld europarl ff7 fisher fungot homestuck ic irc iwcs jargon lovecraft nethack pa qwantz sms speeches ss wp youtube 05:54:04 ^celebrate 05:54:04 \o| |o| |o/ \m/ \m/ |o/ \o/ \o| \m/ \m/ \o| |o| |o/ 05:54:05 | | | `\o/´ | | | `\o/´ | | | 05:54:05 |\ /| /| | |\ /`\ /| | /< >\ /'\ 05:54:05 (_|¯´¯|_) /´\ 05:54:05 (_| |_) 06:50:51 -!- Klisz has quit (Quit: You are now graced with my absence.). 06:59:09 so can a single string draw the edge of a mobius strip? 06:59:19 it seems kind of wild to imagine 06:59:44 i guess it just has to float in space a bit 07:00:42 elliott, did you intend to do mb twice in your first part of the equation? 07:00:56 no 07:01:11 x <- mx was the intent 07:01:11 for all x 07:01:33 I should go food 07:02:16 -!- MDude has changed nick to MSleep. 07:05:42 -!- sebbu2 has joined. 07:05:42 -!- sebbu2 has quit (Changing host). 07:05:42 -!- sebbu2 has joined. 07:06:36 -!- sebbu has quit (Ping timeout: 240 seconds). 07:08:37 disregard 07:08:53 especially you, over-zealous log-reader 07:09:00 hi 07:09:51 i watched the tintin movie today 07:17:58 Is this a proper monad? newtype ReadthisT f x = ReadthisT { runReadthisT :: f () -> f x }; lift = ReadthisT . const; fmap f = ReadthisT . (fmap f .) . runReadthisT; join (ReadthisT x) = ReadthisT (\y -> x y >>= ($ (() <$ (y >> x y))) . runReadthisT); 07:31:58 -!- zzo38 has quit (Remote host closed the connection). 07:38:41 > let collatz = takeWhile (/=1) . iterate c; c n = if even n then n `div` 2 else 3*n+1 in collatz 150 07:38:42 [150,75,226,113,340,170,85,256,128,64,32,16,8,4,2] 07:40:11 > map (succ . head . tail) . iterate (drop 2) . map length . group . fix $ show 07:40:16 mueval-core: Time limit exceeded 07:40:22 > take 5 . map (succ . head . tail) . iterate (drop 2) . map length . group . fix $ show 07:40:25 [2,4,8,16,32] 07:40:32 congrats 07:40:37 thank you 07:40:55 I do think it's the best way to compute the powers of 2 07:41:10 no obviously my powerset construction is the best. :P 07:41:18 lengths of powersets. 07:41:34 though really that's probably way better because there's a fix and I have no clue what it's doing as a result. 07:41:42 because fix still kind of baffles me sometimes. 07:41:49 yeah, I'm fixing show 07:41:53 :P 07:42:07 so infinite string of... something. 07:42:11 > fix show 07:42:12 "\"\\\"\\\\\\\"\\\\\\\\\\\\\\\"\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"\\\\\\\\\\\\... 07:42:15 ah right 07:42:16 :P 07:42:17 quotes 07:45:36 > let twood = length . filterM (const [True, False]) . flip replicate undefined in map twood [1..10] 07:45:37 [2,4,8,16,32,64,128,256,512,1024] 07:46:39 copumpkin: you can't deny its elegance. 07:46:51 :) 07:47:00 yeah, but look how much faster yours is than mine 07:47:09 an added benefit! 07:47:13 I can't even get up to 10 07:47:14 avoid speed at all costs 07:47:18 haskell motto 07:47:19 before lambdabot craps out on me 07:47:22 elliott: exactly 07:47:33 copumpkin: well what can we expect from an agda programmer like you 07:47:36 OHHHHHHHHHHHHHHHHHHHHHHHHHBURGNRJKGNR 07:47:46 you want a geometric series? you can't expect it to be fast 07:47:51 once this agda guy tried to burn me 07:47:52 but 07:47:58 copumpkin: what's the runtime on mine... O(2^n)??? 07:48:02 * copumpkin burns elliott 07:48:02 I think that's forgetting something 07:48:04 his irc client froze up calculating the natural number representing his irc line 07:48:14 because he tried to type more than 10 characters 07:48:14 kallisti: nah, that should be it 07:48:15 the joke is 07:48:15 haha 07:48:16 agda is slow 07:48:25 orly? 07:48:26 copumpkin: see look the runtime is the same as the function. how elegant. 07:48:50 > take 10 . map (succ . head . tail) . iterate (drop 2) . map length . group . fix $ show 07:48:51 [2,4,8,16,32,64,128,256,512,1024] 07:48:55 oh I can get to 10 07:49:00 they're probably the same time complexity actually 07:49:46 > let f = length . flip replicate undefined in map f [1..] 07:49:48 [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28... 07:49:59 oh look! a linear function that runs in linear time 07:50:00 YESSSSSSS 07:50:41 i like functions that describe their own complexity 07:50:42 like fib 07:50:58 I think that may be a characteristic of any function that uses the list representation of natural numbers? 07:51:05 unary 07:52:15 no nevermind what am I saying. 07:53:00 wat 07:53:02 oops 07:53:03 wrong window 07:54:54 o.O 07:55:00 what 07:55:11 The thing where numbers came out of fix show 07:55:12 hi 07:55:19 > fix show 07:55:20 "\"\\\"\\\\\\\"\\\\\\\\\\\\\\\"\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"\\\\\\\\\\\\... 07:55:21 numbers 07:55:55 1 3 7 15 07:57:36 I didn't see the > fix show, just copumpkin's take 10 . map etc thing 07:59:36 Why am I still reading Station V3 08:00:03 because you have a history of reading things that are terrible 08:00:06 whats that is it good hi sgeo 08:00:10 like that cliparty universe 08:00:18 i love clip art 08:00:19 monqy, even I think it's stale. 08:00:27 (not the cliparty universe. Station V3) 08:00:48 http://www.stationv3.com/comics/20111213sv3.gif 08:00:49 hilarious 08:01:20 .. 08:01:24 i dont 08:01:25 get it 08:01:40 i vaguely see how it might be gotten 08:01:41 but 08:01:42 nope 08:01:47 http://www.stationv3.com/comics/20111212sv3.gif 08:01:49 hilarious 08:01:58 http://www.stationv3.com/comics/20111211sv3.gif 08:01:59 hilarious 08:02:11 ...................... 08:02:23 these might be the least funny gifs i have viewed with my eyes in like 08:02:24 years 08:02:24 huh 08:02:28 it's like 08:02:32 a picture of wooden flooring 08:02:38 it elicits absolutely no reaction 08:02:39 at all 08:02:55 There are some funny ones 08:02:56 * kallisti actually laughed because of how terribly impossibly bad it was. 08:03:01 They're all in the past 08:03:07 i laughed, possibly for the same reason as kallisti 08:03:41 Sgeo: whats the worst webcomic 08:03:42 in your 08:03:43 opinion 08:03:52 oh man there are so many bad webcomics i dont even know about 08:04:04 excitement 08:04:15 elliott, is it allowed to be in the Station V3 family? 08:04:21 there's a family 08:04:27 Yes, there is a family. 08:04:31 why 08:05:03 is it a happy family 08:05:09 are they frends 08:05:21 http://silenceinthedarknessonq16.comicostrich.com/ 08:05:34 this is a good comic 08:05:50 silence in the darkness on q16 08:05:57 Start at the beginning, it's actually not that bad 08:05:58 http://silenceinthedarknessonq16.comicostrich.com/comic.php?cdate=20111211 08:05:59 wow 08:06:00 this is 08:06:03 are they all like this 08:06:11 this is amazing 08:06:16 Sgeo: i went to the beginning 08:06:18 it's still bad 08:06:22 please advise 08:06:38 Sgeo: how old is 08:06:39 the author of this 08:06:43 they've spent uh 08:06:47 8 years 08:06:47 http://z7.comicostrich.com/ 08:06:48 of their life 08:06:49 writing these things 08:06:57 so they must be like 08:07:05 i don't even know 08:07:12 Linton (on V3) is humorous 08:07:31 sorry sgeo i do not trust your opinions 08:07:48 you read v3 08:07:54 http://forum.comicostrich.com/viewtopic.php?t=418&sid=ceaf354a4066a147d94ca3c93d76ce27 08:08:00 i dont know what htis is but why does it have 21 pages 08:08:14 http://www.stationv3.com/d/20030616.html 08:08:23 * elliott reads 08:08:23 elliott: what would happen if randall munroe and andrew hussie met 08:08:25 today's dinosaur comic 08:08:26 it is therapy 08:08:30 for reading station v3 08:08:31 you are all 08:08:33 welcome to join me 08:08:39 dinosaur comic is bad too 08:08:42 The rumormongers are the blue things 08:08:43 Usually 08:08:47 kallisti.................... 08:08:49 monqy: look at kallisti's wrong opinions 08:08:52 look at him just 08:08:53 casually having them 08:09:18 elliott: I think dinosaur comics is too fast-paced. The scenery changes too rapidly. 08:09:34 it's hard to tell what's going on. 08:09:35 your jokes cannot 08:09:36 make you a good person 08:10:04 beyond redemption 08:10:10 the kallisti way of life 08:10:25 http://www.stationv3.com/d/20050319.html 08:10:30 That one's almost good 08:10:39 Actually, I'm laughing at these. I'm finding them funny 08:10:43 n 08:10:43 o 08:10:45 no sgeo ni 08:10:45 its not 08:10:46 almost good 08:10:48 no, I mean 08:10:48 its not even 08:10:59 Sgeo 08:11:00 its not 08:11:01 healthy 08:11:03 not even remotely anywhere near something resembling good 08:11:03 to laugh at this stuff 08:11:09 i accept 08:11:10 that tastes 08:11:11 are subjective 08:11:15 but i think you are permanently 08:11:17 damaging 08:11:19 your soul 08:11:35 It gave me a soul?!? 08:11:36 Yay! 08:11:40 yay 08:11:44 n;o 08:11:53 elliott: though in its defense dinosaur comics makes excellent use of foreshadowing 08:12:07 that moment when you realize the previous panel hinted at the events of the next 08:12:09 I wonder if T-Rex canonically crushes a new house every single day. 08:12:14 somewhat rewarding. 08:12:51 the many joys of dinosaur comics 08:12:52 the many joys of life 08:13:04 http://www.stationv3.com/d/20050328.html 08:13:42 actually 08:13:47 these comics remind me of you, sgeo 08:13:55 o.O 08:14:06 elliott: well, it's either that or it continually goes back in time 08:14:08 they have your personality 08:14:10 or it's a glimpse of different universes. 08:14:10 or perhaps 08:14:12 you have theirs 08:14:29 have you considered you and stationv3 may be soulmates 08:14:44 kallisti: there's chronology 08:14:54 monqy: yeah these comics are very Sgeo 08:15:05 elliott: so then... he has to crush a house every time. 08:15:11 CONSISTENCY 08:15:21 kallisti: well there's no conclusive PROOF he crushes the house 08:15:28 true. 08:15:38 http://www.qwantz.com/index.php?comic=1 08:15:43 here we see that he doesn't stomp on the girl at least in comic 1 08:15:43 so 08:15:47 elliott: WHY DON'T YOU SAY THAT TO PAST ELLIOT INSTEAD ASSHOLE 08:15:53 http://www.stationv3.com/d/20050415.html 08:15:58 *TT 08:16:32 Sgeo: thats 08:16:33 not funny 08:16:40 i am TRYING to laugh 08:17:28 is there even a joke with these? 08:17:30 I can't tell. 08:17:40 i think that one was supposed to have a joke, at least 08:17:47 can you explain it to me? 08:17:51 Sgeo: was there a station v2 08:17:52 kallisti: the station 08:17:53 isn't safe 08:17:54 that's the joke 08:18:01 ..what? 08:18:04 yes 08:18:14 http://www.stationv3.com/d/20030506.html 08:18:16 station v3 08:18:17 comic 1 08:18:37 http://www.stationv3.com/links.html 08:18:40 list of comics to avoid reading 08:18:44 http://ebb.comicostrich.com/ 08:18:45 not even comic 1 08:18:49 Is that not like judging Homestuck by 1901? 08:18:50 OH YES ANOTHER SPINOFF FUCK YES GOD YES! 08:18:52 unless it is 08:19:11 elliott: dude you're going to have to explain all of the jokes to all of these. 08:19:27 There's plot. 08:19:28 Sgeo: yes, if homestuck was a terrible gag-a-day strip with a dozen spinoffs and also no because we've also looked at like fifty other ones by now and they are all equally bad 08:19:28 * kallisti iIT IS YOUR DUTY 08:19:30 It's plotlines 08:19:42 oh Sgeo's using dots at the end of sentences i think we're disliking station v3 a little too intensely 08:19:49 gripping station v3 plotlines 08:20:00 with enchanting station v3 characters 08:20:01 station v3 plotline one: station... v4??? 08:20:05 Two characters who were previously mute become able to talk 08:20:14 enchanting 08:20:16 Because all of reality changed. 08:20:17 gripping 08:20:19 i'm ehcanthed 08:20:23 are you gripped 08:20:26 im 08:20:28 i'm GRIPPED 08:20:31 so gripped i dont think ill ever be able to be ungripped 08:20:33 permanent grippeling 08:20:34 YES IT GRIPED ME 08:20:39 gripe 08:20:41 we are all 08:20:44 gripped together 08:20:51 monqy: gripe with me 08:20:51 http://forum.comicostrich.com/viewtopic.php?t=11&sid=ceaf354a4066a147d94ca3c93d76ce27 08:20:55 station v3 frendship 08:21:15 monqy: not the only ship in station v3 08:21:19 -punchline- 08:21:29 why are these forums active!!! 08:21:34 why 08:21:40 Who's Prentice? 08:21:47 *Prentis 08:22:00 are 08:22:03 you expecting me to know the answer to this 08:22:58 elliott resident station v3 expert 08:23:05 in mere minutes he has surpassed even sgeo 08:23:11 the robot guy 08:23:12 is called floyed 08:23:17 Floyd 08:23:21 floyde 08:23:25 I think there are two goerges??? 08:23:35 Linton is the idiot security officer 08:23:40 And same species as the pirates 08:23:41 oh 08:23:43 is there nonidiots 08:23:43 that makes sense 08:23:49 goerg 08:24:21 "station v3" -- georg 08:24:25 -!- Ngevd has joined. 08:24:28 The blue things on the planet are called rumormongers, and for some reason XChat thinks that rumormongers is spelled correctly. 08:24:37 hi 08:24:39 Hello! 08:24:41 I do not recall adding rumormongers to the dictionary 08:24:56 you realise 08:25:00 that rumormonger 08:25:01 is a word 08:25:05 outside of this incredibly shitty comic 08:25:15 Now I do (seconds before you told me) 08:25:32 knowledge is power 08:25:41 -keanu reves 08:25:48 France is a meme. 08:25:55 hysterical 08:28:33 * Sgeo looks for good Linton comics 08:28:38 good luck 08:29:26 http://stationv3.com/d/20071009.html 08:29:47 oh I see 08:29:50 it's funny because 08:29:51 he 08:29:53 uh 08:30:16 sgeo i think you got the wrong comic 08:30:17 this isn't good 08:30:18 this is crap 08:30:27 People in this channel really enjoy things that they don't enjoy, don't they. 08:30:36 yes 08:30:39 at least I do 08:30:48 * Sgeo is laughing insanely right now 08:31:38 Hmm, this (not what I linked) was a good arc 08:34:25 no 08:34:26 it wasn't 08:34:51 -!- elliott has quit (Quit: i cant handle any more station v3). 08:34:55 rip 08:35:52 yeah thats a pretty awful comic strip 08:36:04 i mean that particular one... 2007 10 09 08:36:10 i dont mean they're all necessarily bad 08:36:33 incidentally, they are 08:37:19 http://www.stationv3.com/d/20071011.html 08:38:26 thats really devastatingly bad.. 08:38:35 station v3 quality 08:38:39 i am not sure if it's just the mood i'm in 08:39:39 http://www.stationv3.com/d/20080901.html 08:40:12 thanks 08:40:34 maybe they make sense if you read a whole bunch of them.. like very context-dependant 08:40:58 They do, I think 08:41:27 The plot gets repetitive though. How many times can you destroy the universe and have it be restored from backup? 08:41:42 (canned laughter) 08:42:23 http://www.stationv3.com/d/20080908.html 08:44:39 NO. MORE. 08:44:42 MUST NOT CLICK 08:44:47 no it's great 08:44:56 -!- Ngevd has quit (Ping timeout: 240 seconds). 08:45:04 rip 08:45:22 it has a way about it 08:45:39 how many more of us will it kill 08:45:57 I heard a rumor that it won't kill any more of us. 08:46:14 have you considered you may already be dead 08:46:29 Not until you asked. 08:47:28 I mean, actually, yes... i have been led into some superstitious beliefs on that subject 08:50:50 http://stationv3.com/d/20050809.html 08:51:21 great 08:52:05 http://stationv3.com/d/20040709.html 08:52:24 how are you finding these 08:52:53 OhNoRobot 08:53:50 http://stationv3.com/d/20040402.html 08:54:40 why are you finding these 08:54:45 -!- elliott has joined. 08:54:59 pikhq_: OK, I have a really stupid build system idea, you get to tell me why it doesn't work. 08:55:05 hi 08:55:33 * Sgeo failed to see elliott's quit message until now 08:55:44 So, what you missed: More Station V3 08:55:51 awesome. 08:56:00 it was great stuff 08:56:22 Maybe I'm choosing badly, and just selecting random ones will have higher probability of good comics 08:56:54 :t randomR 08:56:56 forall a g. (Random a, RandomGen g) => (a, a) -> g -> (a, g) 08:56:57 Sgeo 08:56:59 there is no possible way 08:57:01 this comic could be salvaged 08:57:27 Homestuck might suck if someone tried to present random panels at you 08:57:52 Who am I kidding. The reason I brought up Station V3 in the first place is that I had no idea why I kept it in my rss reader 08:57:53 not this badly Sgeo 08:57:55 not this badly 08:58:20 It used to be good 08:58:23 like homestuck's first 100 panels over and over again would be about six billion times better than a single station v3 strip 08:58:28 something to clense your mind from station v3http://www.fanfiction.net/s/5937032/1/Grab_a_boob_day 08:58:30 ok i will 08:58:32 take back my opinions Sgeo 08:58:36 if you can link me one (1) good strip 08:58:59 monqy, do the Linton strips I linked count as good? 08:59:29 no 08:59:36 Sgeo: i have decided i like them. 08:59:47 oh 08:59:50 um 08:59:51 why 09:02:54 why itidus21 ;_; 09:03:35 station v3, the worst existential crisis yet 09:03:36 i suppose i could like any graphic which is non-static combined with any grammatical piece of text 09:04:13 but 09:04:14 they're static 09:04:17 theyre not animated.... 09:04:21 i mean uhh 09:04:45 any graphic which is a non-random signal 09:04:46 it's hard to tell with a comic as alive, endearing, enthralling, graipping, enchanting, as station v3 09:04:57 so garipping 09:05:12 Ugh, I want to set a breakpoint in gdb for an address that doesn't exist until some point in runtime. 09:05:14 i meant as in a tv-static 09:05:22 How am I do that. 09:05:35 08:41:42: (canned laughter) 09:05:37 i don't even know what static means in relation to a tv channel with an unrecognized signal 09:05:39 monqy: god i wish i could can laughter 09:05:39 elliott: Aren't you a gdb expert? 09:05:54 shachaf: My gdb knowledge is set args ... \n start \n cont \n bt \n quit 09:06:11 elliott: Did you know gdb --args ./foo bar baz? 09:06:20 Yes, because Deewiant told me, but then I forgot it again./ 09:06:41 * shachaf is trying to debug hs-plugins code. 09:07:04 At least gdb disables ASLR. 09:07:26 http://www.stationv3.com/d/20060204.html 09:07:33 So the address is deterministic (or seems to be), but I can't set a breakpoint at it straight away, because the code is not loaded yet. 09:07:57 http://www.stationv3.com/d/20040710.html 09:07:58 hilarious 09:08:09 Sgeo: is this you trying to link a good one 09:08:49 All the comic's I've linked are attempts to find a good one 09:08:52 comics 09:08:53 wow 09:08:54 uh 09:08:56 good 09:08:57 good work 09:09:23 two thumbs up 09:09:31 Maybe I suck at finding 09:09:34 I'd give you more, but two is all I have. 09:10:56 speaking of thumbs and comics, I made a comic a real long time ago 09:11:25 is it better than station v3 09:11:30 i think so, yes 09:11:30 i could use a better comic than station v3 right now 09:11:59 http://dl.dropbox.com/u/13786158/diner.png 09:12:16 better than station v3 09:12:18 i like the peppers 09:12:18 elliott, Station Z7? 09:12:27 Sgeo: :( 09:13:22 monqy: are they peppers in panel 1 and 2 and you just can't see them 09:13:28 or did he become ppeppeperp 09:13:30 or is that smily 09:13:31 unrelated 09:13:32 everything is pepper 09:13:33 to other characters 09:13:34 ok 09:13:38 * Sgeo looks at the Station V3 encyclopedia 09:13:49 is there a 09:13:50 is that 09:13:51 a 09:13:51 thing 09:14:03 http://www.stationv3.com/wiki/index.php?title=Main_Page 09:14:06 Not much of a thing 09:14:14 it's not spammed 09:14:16 why is our wiki spammed 09:14:18 instead of this 09:14:27 http://www.stationv3.com/wiki/index.php?title=Special:Allpages 09:14:27 why are there edits this month 09:15:32 elliott, SBAHJ apparently updated 09:15:48 wonderful 09:16:08 better than station v3 09:16:36 "phhpppbbbbbthb" - better than station v3 09:16:49 ":'(" - station v3 09:17:20 "not sorry" - better than station v3 09:17:56 sgeo are nay of these station v3 wiki pages good 09:18:01 I don 09:18:10 there are so many choices I don't know which to pick 09:18:11 I don't know, I didn't even know there was a wiki until now 09:18:34 http://www.stationv3.com/wiki/index.php?title=Station_V3_%28comic_strip%29 09:18:52 http://www.stationv3.com/wiki/index.php?title=Tom_Truszkowski 09:18:58 oh, he's a programmer 09:19:00 That Explains Things 09:19:24 elliott: I thought all webcomic authors could program. 09:19:39 it's like a requirement. 09:19:53 Station Q16 is the main station in the comic strip Silence in the Darkness on Q16 The station has had a power failure sometime before the first strip and is still in the dark. This may be because the station only exists within a rumormongers mind. 09:19:54 if he has disabilitys, is it bad to make fun of stations v3..... 09:20:12 his disability: writing station v3 09:20:19 :'( 09:21:53 monqy what does the reverse text say 09:21:54 in your comic 09:21:55 im too lazy 09:22:11 doug's "dougalicious" diner 09:22:12 doug's dougilicious 09:22:14 "it's dougalicious" 09:22:48 it's dougalicious in my heart 09:23:07 im worse at writing dialogue than tom t. 09:23:27 :( 09:23:38 snickers 09:26:11 . o O ( "hello snail" "hello tree" "how are you doing today?" "oh just fine. what about you, how are you doing?" "i am also fine" "i frankly harbor apathetic feelings towards your current state of well being" "is that so?" "it is so" "well ok then" "good" ) 09:26:27 better than station v3 09:26:44 harbor -- tree -- arbor is an accidental pun 09:30:26 im inspired 09:38:59 Station V3 + SBaHJ? 09:39:13 hi 09:39:52 hi 09:42:48 Night 09:42:51 hi 09:42:54 hi 09:43:05 Station Zzz... 09:43:11 no 09:45:09 station bad 09:50:50 -!- monqy has quit (Quit: hello). 10:08:44 -!- kmc has joined. 10:18:00 -!- Jafet has joined. 10:51:18 -!- Jafet has quit (Quit: Leaving.). 10:55:40 -!- ais523 has joined. 11:18:39 md5 is sufficient for avoiding random collisions on non-malicious input, right? 11:19:14 also, and relatedly, are VHDL identifiers allowed to be long enough to fit an entire md5 hash inside them? 11:21:49 ais523: yes, but why not go for SHA-1? 11:22:01 'tis only 32 more bits 11:22:13 md5's in the OCaml standard libraries, SHA1 isn't 11:22:31 :/ 11:22:34 get a better standard library 11:23:02 ais523: googling doesn't show up any obvious limits on identifier name 11:23:05 s 11:23:23 good 11:23:26 ais523: you can pack it into base 62, at least 11:23:50 so it'll be 28 at most (27 + 1 byte prefix to avoid digit as first character) 11:24:13 ais523: wtf, you're not allowed two underlines in a row in a vhdl identifier 11:24:14 yep, but I don't really want to if there's no reason 11:24:18 and they can't end with underlines 11:24:26 (or start, for that matter) 11:24:28 seriously? that is an important limitation for my project 11:24:28 err 11:24:31 s/underline/underscore/g 11:24:33 I'll have to escape them, in that case 11:24:41 ais523: it is? wtf are you doing 11:24:46 also "But VHDL also supports extended identifiers, enclosed by backslashes, which can contain any graphic ISO Latin-1 character (including backslashes if doubled)." 11:25:07 /Latin-1/? 11:25:12 that's, umm, I don't get it 11:25:17 ais523: "any byte" 11:25:26 there, I got it for you :) 11:25:29 i.e. 11:25:36 nope, 32 of the possible values of a byte aren't graphic in Latin-1 11:25:39 if (identc == '\\') append(identifier, getchar()) 11:25:41 ais523: oh, hmm 11:25:43 extended_indentifier ::= \graphic_character { graphic_character } \ 11:25:49 I guess VHDL is just defined in terms of Latin-1 because old 11:26:02 and they presumably think control characters in identifiers is ridiculous 11:26:18 well, it is ridiculous 11:26:28 but then, so is much of VHDL, I guess 11:26:54 anyway, what I'm trying to do, is to translate variable names from a source program into variable names in the resulting VHDL, whilst mangling them as little as possible 11:27:01 so it's easy to see which corresponds to which 11:27:26 and the source language doesn't have any arbitrary rules about double underscores 11:27:38 ais523: have you considered implementing your module layer in not vhdl... 11:27:55 define some intermediate language, and have the linker translate it to vhdl 11:28:00 all at once 11:28:03 ais523: 65 of possible values of byte aren't graphic in Latin-1; 0..31 and 127..159. 11:28:16 fizzie: oh right, I forgot 127 11:28:24 also, screwed up multiplying 32 by 2 11:28:26 oh, wait, this is for name mangling from a source language 11:28:30 I thought this was for adding module prefixes 11:28:31 or something 11:28:41 yep, name mangling from a source language 11:29:02 the module prefixes are where the md5 stuff comes in 11:29:18 VHDL has namespacing, but I need to make sure that the namespaces don't have the same names as each other, or it'd just be a huge mess 11:29:20 ais523: I suggest just mangling everything other than [a-zA-Z0-9] into _xNN_ 11:29:22 where NN is the byte value 11:29:25 assuming there's no Unicode involved 11:29:35 and I think OCaml is dark-ages enough for it presumably not to be 11:29:58 elliott: the source language isn't OCaml 11:30:04 ais523: I didn't say it was. 11:30:18 at the moment, it uses the same identifier rules as pre-Unicode-era C 11:30:29 without the length restrictions 11:30:30 ais523: I'm saying that I'm very sceptical OCaml does Unicode in anything vaguely approximating out of the box. 11:30:36 ah, I see 11:32:57 bleh, is it wrong to want to write the project in OCaml+Perl? 11:33:15 it's quite a nice mix of languages, as their strengths complement each other nicely 11:34:19 ais523: Complaining about your language lock-in will only cause me to mock OCaml more :) 11:34:28 I'm not sure if I have a language lockin 11:34:42 I'd rewrite the whole thing in Anarchy if it wasn't vaporware 11:34:44 ais523: If your alternative is OCaml+Perl, you have no alternative. 11:36:04 what do you dislike about OCaml, by the way? 11:36:13 I'm trying to mentally work out what its bad points are 11:36:22 because it definitely has some, but I have trouble putting a finger on them 11:36:50 ais523: For one, it's essentially stuck in 2002 11:37:01 hmm, that may well be valid 11:37:16 oh right: it doesn't really have typeclasses 11:37:17 It has a reputation for speed, but that's mostly in single-threaded tight loops, it doesn't really have a concurrency story at all, which is ridiculous 11:37:41 Its standard library is weirdly inconsistent and incomplete (the fact that a library exists just to add all the things you forgot to the standard library is telling...). 11:37:44 in particular, you can't add "methods" to other classes 11:37:50 heh, which one's that? 11:37:52 Yes, lack of typeclasses or something similarly useful is painful. 11:37:57 ais523: Batteries (Included) 11:38:13 -!- kallisti has quit (Ping timeout: 252 seconds). 11:38:14 I actually think that Pervasives seems a little too large 11:38:19 in particular, I don't get why it has I/O in 11:38:44 I also don't like the syntax much (Standard ML's is nicer), and the fact that it has multiple sort-of-object-systems is just ridiculous design. 11:39:08 heh, I just saw exception Exit looking at the Pervasives docs 11:39:13 The type system could also do with doing a bit less weak. 11:39:14 it's an exception provided for user use, and not used by the library 11:39:24 And more subjectively: I'd rather it be pure and lazy, but, uh, the language I want OCaml to be already exists. 11:39:30 except, the user can (and frequently does) trivially define exception types 11:39:35 elliott: heh 11:39:42 ais523: sounds like a relic from before you could do that to me :P 11:39:47 perhaps 11:39:54 although, Exit can't carry a payload 11:39:57 ais523: Oh! Another thing I don't like about OCaml: THEY IMPLEMENTED PRINTF IN THE COMPILER 11:40:01 which would make it reasonably useless for that purpose 11:40:03 PRINTF LITERALLY HAS SPECIAL COMPILER SUPPORT 11:40:05 IN THE TYPE SYSTEM 11:40:18 really? that's ridiculous 11:41:06 ais523: yes 11:41:23 ais523: you can't type printf in OCaml even with the dynamically-typed way Haskell does it, since that relies on overloading 11:41:39 ais523: check out the type of printf, basically the "string literal" format you give to it? 11:41:41 that's not a string literal at all 11:41:47 that's a type-carrying format value 11:41:55 (printf ) is just special-cased 11:42:03 and I don't think you can pass a variable format at all, that's the only way you can call it 11:42:11 crazy and heretical way to do printf: make it take all its arguments as strings 11:42:30 ais523: that doesn't help, it's variadic 11:42:34 you need it to take a list of strings 11:42:38 yep, that's what I meant 11:42:39 at which point it becomes a really weird syntax for concat 11:42:40 :P 11:43:00 elliott: no, I meant it'd parse the strings back into the original arguments 11:43:23 ais523: wat 11:43:29 you'd do printf "%2.3g" ["0.0000142"] 11:43:43 or whatever 11:43:51 heh 11:44:22 ais523: oh, another ocaml complaint: bignums are awkward (although i never used them myself, admittedly) 11:44:25 another thing that gets me about OCaml's standard library is its naming 11:44:33 List.hd, List.tl, List.rev, List.length 11:44:47 (but they have their own operator set (of course) and you can't use integer literals with them, so I'm pretty sure I'm right) 11:44:54 ais523: yeah, ew 11:45:08 and List.append is also Pervasives.(@) 11:45:14 ais523: oh, Exit is to exit the program, I think 11:45:17 which I didn't know about for ages because I was looking in the wrong module 11:45:20 I bet it has a top-level handler that just exit(0)s 11:45:25 heh 11:45:29 even that's a two-line wrapper 11:45:50 try … with Exit -> () 11:46:29 val incr : int ref -> unit 11:46:31 Increment the integer contained in the given reference. Equivalent to fun r -> r := succ !r. 11:46:41 ais523: this is making me feel so much better about how crufty the Prelude is 11:46:44 why is that even in the standard library? 11:47:19 I mean, it's not an entirely useless operation, but it's reasonably uncommon, and it's almost as short to write r := !r + 1, and you could define it yourself trivially if you needed to 11:47:30 ais523: oh yeah, strings are their own type and not an instantiation of some sequence type too 11:47:34 that makes so much sense!! 11:48:05 that does make sense, in a way; the internal representation is completely different 11:48:15 ais523: "of some sequence type" 11:48:24 strings are certainly an instantiation of a more general sequence type 11:48:28 in OCaml's case, probably unboxed arrays 11:48:32 with a list interface 11:48:43 nah, not quite, unboxed null-terminated arrays 11:48:56 (admittedly haskell ByteString has this flaw too, but there's an effort to define ByteString as Vector Word8s) 11:49:00 ais523: what?! 11:49:07 ais523: OCaml uses null-terminated strings? 11:49:15 elliott: it stores the length too 11:49:18 >_< 11:49:28 the null terminator's there so that they can be passed to C functions unchanged, or something 11:49:50 ais523: and to make them useless for storing binary data! 11:49:54 also, the defining feature of OCaml strings is that you can't change their length 11:50:19 ais523: even in an impure language I can't think of a decent argument for making strings mutable 11:50:23 even /Python/ has immutable strings 11:50:28 here: earlier towakeperiod I was trying to write a handler that stored every character read 11:50:49 ais523: let me quote to you the types involved in ocaml printf 11:50:51 type ('a, 'b, 'c, 'd) format4 = ('a, 'b, 'c, 'c, 'c, 'd) format6 11:50:51 Format strings have a general and highly polymorphic type ('a, 'b, 'c, 'd, 'e, 'f) format6. Type format6 is built in. The two simplified types, format and format4 below are included for backward compatibility with earlier releases of Objective Caml. 'a is the type of the parameters of the format, 'b is the type of the first argument given to %a and %t printing functions, 'c is the type of the argument transmitted to the first argument of "kprintf" 11:50:51 -style functions, 'd is the result type for the "scanf"-style functions, 'e is the type of the receiver function for the "scanf"-style functions, 'f is the result type for the "printf"-style function. 11:50:52 type ('a, 'b, 'c) format = ('a, 'b, 'c, 'c) format4 11:50:54 val string_of_format : ('a, 'b, 'c, 'd, 'e, 'f) format6 -> string 11:50:56 Converts a format string into a string. 11:50:58 val format_of_string : ('a, 'b, 'c, 'd, 'e, 'f) format6 -> ('a, 'b, 'c, 'd, 'e, 'f) format6 11:51:00 format_of_string s returns a format string read from the string literal s. 11:51:02 val (^^) : ('a, 'b, 'c, 'd, 'e, 'f) format6 -> 11:51:03 basically, suppose you're doing getc in a loop, and you want to store the entire file read 11:51:04 ('f, 'b, 'c, 'e, 'g, 'h) format6 -> ('a, 'b, 'c, 'd, 'g, 'h) format6 11:51:06 f1 ^^ f2 catenates formats f1 and f2. The result is a format that accepts arguments from f1, then arguments from f2. 11:51:21 elliott: I have the page open in w3m right now, no real reason to quote it 11:52:11 also, I wanted it to be O(n), not O(n^2) 11:52:18 out of interest, how do you do that in Haskell? 11:52:34 I suspect it wouldn't be the same as how I eventually did it in OCaml; the result was slightly lower-level than C 11:52:40 because OCaml doesn't have a realloc equivalent 11:53:05 so I had to do what was effectively malloc + memmove (luckily no explicit free required as it's GCed) 11:53:23 /then/, I had to allocate another string when I was finished, in order to trim it down to size 11:56:03 -!- sebbu has joined. 11:56:03 -!- sebbu has quit (Changing host). 11:56:04 -!- sebbu has joined. 11:56:28 * ais523 suddenly wonders what the top Google result is for "search engine optimization" 11:57:56 -!- sebbu2 has quit (Ping timeout: 240 seconds). 11:58:16 hmm, the top paid result is from www.seoconsult.com; the first nonpaid result is Wikipedia, and the second www.searchengineoptimisation.org, followed by www.searchengineoptimisation.co.uk 11:58:45 I suppose the lesson is, that if you really want to win an SEO war against people who are as cutthroat as you are, make the domain name match the search query exactly 11:59:49 haha, indeed; I changed the query to "search optimisation engine", and now the winning non-Wikipedia nonpaid result is on the site www.searchengineoptimising.com 12:00:05 -!- ais523 has set topic: Search optimisation engine | http://codu.org/logs/_esoteric/. 12:01:19 ais523: oh, you asked a question 12:01:32 basically, suppose you're doing getc in a loop, and you want to store the entire file read 12:01:32 also, I wanted it to be O(n), not O(n^2) 12:01:32 out of interest, how do you do that in Haskell? 12:02:03 slurp :: Handle -> IO String; slurp h = do { eof <- hIsEOF h; if eof then return "" else (:) <$> getChar <*> slurp h } 12:02:30 -!- cheater has joined. 12:03:06 ais523: that's for linked-list strings, though 12:03:23 ais523: I presume youw ant it for flat-byte-array type things? 12:03:25 *you want 12:08:18 oops, s/getChar/hGetChar h/ 12:08:31 ais523: in which case, an obvious strategy is just s/hGetChar h/B.hGet h 8192/ and then apply B.concat to the result of it all 12:09:10 the actual implementation of B.hGetContents says: 12:09:18 "This function reads chunks at a time, doubling the chunksize on each read. The final buffer is then realloced to the appropriate size. For files > half of available memory, this may lead to memory exhaustion. Consider using readFile in this case." 12:09:54 readFile is clever; it just asks the OS how big the file is, then does one big B.hGet of that size 12:16:05 ais523: :( 12:44:13 -!- cheater has quit (Ping timeout: 240 seconds). 12:53:28 -!- Phantom_Hoover has joined. 12:53:39 lambdabot! 12:53:39 Phantom_Hoover: You have 2 new messages. '/msg lambdabot @messages' to read them. 13:01:30 helo Phantom_Hoover 13:01:42 Hamlo. 13:01:45 hamlo 13:02:27 Gregor: Is there a shorter way to write {struct foo *bar = malloc(sizeof(struct foo)); memcpy(bar, &foo, sizeof(struct foo));} 13:05:45 "struct foo *bar = malloc(sizeof *bar);" is a classical way to write the malloc sorta-type-safely; "*bar = foo" is a shorter way to write the memcpy, if you don't mind letting the compiler decide how to do it, and that some padding bytes may not get moved if it doesn't want to. 13:08:18 struct foo *bar = g_memdup(&foo, sizeof foo); if you want to be all glib about it. :p 13:10:09 fizzie: glib is the relevant scenario since it's mcmap :P 13:10:17 But I just rewrote it as a malloc plus assignments, so oh well. 13:10:48 fizzie: Do you mind much if I make a directory for map code? It's just that map_flat.c and map_surface.c and map_cross.c and map_iso.c seems a bit ridiculous. 13:11:12 Feel free to. 13:11:38 Most excellente. 13:18:43 elliott: I was at a seminar, I'm back now 13:18:58 you'd probably have understood it better than most of the people there; I managed to follow it eventually 13:19:16 heh; what was it about? 13:19:49 containers and comonads 13:20:16 in particular, it defined an extra structure on containers, then showed that containers with that structure were all comonads, and all containers that were also comonads had that structure 13:20:26 what definition of container? 13:20:32 we ended up concluding that List actually worked more naturally as a comonad than as a monad 13:20:42 lists aren't comonadic 13:20:47 you don't have [a] -> a 13:20:52 nonempty lists are though 13:20:53 err, nonempty lists 13:21:01 right 13:21:27 the definition's that containers have a set of shapes, each shape has its own set of positions 13:21:55 I suspect that the fact that List is a comonad isn't too useful for actual programming, though 13:23:29 ais523: well, (=>>) is \xs f -> map f (tails xs) 13:23:37 which seems useful, in theory 13:23:42 you can implement (a very slow) scanl with it 13:24:27 it was defined in terms of unreturn and unflatten 13:24:45 but that (=>>) looks like a reasonable definition on that basis 13:24:56 ais523: *extract and duplicate 13:25:09 (=>>) is just flip extend, it's the analogy of (>>=) 13:25:15 where extend f = fmap f . duplicate 13:25:27 duplicate is like join, extend is like flip (>>=) 13:26:03 hmm, the thing about general definitions like monads and comonads is that there are all sorts of plausible names for the operations 13:26:24 "This function reads chunks at a time, doubling the chunksize on each read. The final buffer is then realloced to the appropriate size. For files > half of available memory, this may lead to memory exhaustion. Consider using readFile in this case." <-- my OCaml code did that but manually 13:26:46 come to think of it, it'd have been simpler to read everything into memory first, then parse from memory 13:26:50 ais523: nah, the problem is that there's no plausible name for return 13:26:58 return doesn't make any sense, it's just trying to look vaguely like C 13:27:09 pure sort of makes sense but not really 13:27:29 point is meaningful but really bland and unevocative 13:27:30 rather than parse from disk and hook the parser with a hook that builds up a copy of what it parsed in memory 13:27:37 "wrap"? 13:27:46 ais523: wrap's worse than any of those 13:27:57 promotes the container view (fallacy) of monads 13:28:09 (whereas pure promotes the computation view (fallacy) :/) 13:28:34 the computation view is pretty much a special case 13:28:53 no 13:28:58 lots of containers are monads 13:29:04 lots of computations are monads 13:29:11 but describing monads as either is very wrong and misleading 13:29:20 it's not a "special case" any more than Maybe is a special case of Monad 13:29:24 yep, but I meant that computations all fit into a subset of monads 13:29:24 it's not, it just has an instance 13:29:32 that have something in common 13:29:39 and it's a little hard to say what 13:29:40 ais523: well, OK; "computation" isn't used as something with a precise definition here 13:29:45 ah, I see 13:29:48 but instead something people analogise to to try and understand monads 13:29:52 which doesn't work 13:30:01 e.g. State and IO fit into that 13:30:08 but [] doesn't 13:30:17 (well, [] is nondeterministic computation :P) 13:30:21 elliott: I actually have a reasonably computationy view of List 13:30:27 and Maybe, fwiw 13:30:33 yeah, I just cba to think of a better example off the top of my head 13:30:38 the computation view isn't as bad as the container view 13:30:38 hmm, which view would you say Identity falls into? 13:30:42 which insists that an (m a) /contains/ an a 13:30:47 it's a genuinely useful monad 13:30:54 and talks about (>>=) "unwrapping" the value 13:30:59 which is just Not Even Wrong 13:31:05 ais523: it is? 13:31:08 only as the base of a transformer stack 13:31:14 elliott: nope, it handles taint 13:31:36 ais523: well, OK 13:31:42 ais523: I doubt the monad part is that useful 13:31:55 Applicative seems as far as you'd want to go with taint most of the time 13:32:18 you definitely need lift for tainting, but Applicative has that, right? 13:32:30 I can never quite remember what Applicative has, and what it doesn't have 13:33:57 ais523: Applicative is Functor, pure, and (<*>) 13:34:06 although Functor isn't necessary 13:34:11 fmap f x = pure f <*> x 13:34:13 what do monads have over that? 13:34:16 join 13:34:25 pure :: a -> f a, (<*>) :: f (a -> b) -> f a -> f b 13:34:29 join :: m (m a) -> m a 13:34:40 basically, join lets the /structure/ of a computation depend on the /result/ of another 13:34:54 Applicatives have static control structure, Monads have dynamic control structure 13:34:57 and in the case of Identity, you can't really tell whether it exists or not, because it's trivial 13:35:05 there is only the one structure 13:35:11 whether it exists or not? huh? 13:35:12 so join is trivial to define but doesn't do anything 13:35:20 sure join does something 13:35:22 elliott: err, hmm 13:35:24 I'm not denying Identity is a Monad 13:35:38 I'm just saying that I might not agree with "Identity is a useful monad" 13:35:48 ah, OK 13:35:54 although do notation is certainly useful for taint, I think you'd usually express computations that can be expressed with Applicative with it 13:36:00 I think what I'm saying makes sense in my own mind, but is not an elliott-approved concept 13:36:11 heh 13:36:49 ais523: I actually don't know what you mean, though :P 13:37:47 I think, umm, if there's only one possible definition of something (as in, you can get the definition just from the types), it's impossible to tell whether that definition's being used or not 13:37:50 well, obviously it /is/ 13:38:22 note that I almost passed out on the bus this morning, I may not be in a particularly sane state of mind 13:38:30 try not passing out on the bus 13:38:34 * elliott advice 13:38:52 I did; I even succeeded 13:38:57 but it was pretty close for a while 13:39:00 congratulations! now try not almost passing out on the bus 13:39:03 it was lucky that today was so incredibly windy 13:39:04 (advanced stage) 13:39:21 it helped keep me alert, wind does that 13:39:35 -!- Vorpal has joined. 13:39:45 oh, something I read in the paper this morning; you know how non-tech press normally calls all malware viruses? 13:40:13 well, I saw a variation this time, along the lines of "even if you don't enter any personal information, the malicious pages can still fill your computer with bugs" 13:40:31 and I was trying to work out what definition of "bugs" they meant, and if it was a reasonable metaphor or not 13:41:18 heh 13:41:34 There's the "covert listening device" definition of bug. 13:41:42 fizzie: indeed, I was wondering if they meant that 13:41:57 I think it's a more accurate description than the typical newspaper one; also, more vague and more confusing 13:42:05 I think most broadly all a computer user cares about is "it doesn't do what I want" 13:42:09 and you could call all those bugs 13:42:15 if you want to be weird :P 13:42:26 hmm, I don't consider misfeatures to be bugs 13:43:19 elliott: Incidentally, the "listening device" definition of a bug is used in what I believe (from glancing perusal of the earlier discussion) is nowadays your favourite comicky strip ever, the Silence in the Darkness on Q16. 13:43:51 fizzie: Please tell me you learned this from that discussion and you're not like some super Silence in the Darkness on Q16 fan. 13:44:30 Well, I learned it from the discussion in the sense that post-discussion I click-througed quite a number of black squares; one of the few non-black ones was http://silenceinthedarknessonq16.comicostrich.com/comic.php?cdate=20070512 which uses it. 13:44:47 (Hadn't heard of SitDoQ16 before today at all.) 13:44:58 (I suppose it abbreviates like that?) 13:45:03 Yes, that assurance was all I needed. 13:49:18 anyway, I'm reasonably happy with my object file format 13:49:40 it's a bunch of VHDL comments which contain key/context/value triples, followed by something arbitrary, which could well be VHDL 13:49:48 hmm, what's context? 13:51:11 things like what variable the key applies to 13:51:19 whereas there are finitely many keys 13:51:28 that sounds like part of the value to me 13:52:06 elliott: err, what? 13:52:18 oh, hmm 13:52:19 right :) 13:52:32 you could consider it part of the key, I guess 13:52:41 * elliott would probably go straight to key = list of strings and no fixed keys 13:52:50 you should probably ignore unrecognised keys, anyway, for future extensibility 13:52:50 but the whole thing's more flexible than just keys and just values, and doesn't really follow a pattern 13:52:59 and indeed, that seems reasonable 13:58:00 ais523: anyway, you have to hear my ridiculous build system idea since nobody else will: 13:59:31 go on; one of the most important purposes of this channel is finding people to bounce ridiculous ideas off 13:59:47 ais523: set up a FUSE filesystem that has all the output files existing already; they can be opened fine, but read and stat will block until the files exist for real; then, start every single command that needs to be run in parallel (note: the FUSE filesystem doesn't pretend the output file exists for the process trying to write it, i.e. it knows which file not to fake for each process) 13:59:58 this achieves maximum parallelism thanks to the operating system 14:00:18 reads of yet-to-be-built input files succeed as soon as possible 14:00:33 elliott: that's awesome, I'm just upset that many compilers will fail on that sort of thing due to being badly designed 14:00:45 ais523: I'm not sure they would, actually 14:00:52 most compilers don't break on really slow filesystems 14:01:05 what if they seek around in the file that they're writing? 14:01:15 -!- Patashu has quit (Quit: MSN: Patashu@hotmail.com , Gmail: Patashu0@gmail.com , AIM: Patashu0 , YIM: patashu2 , Skype: patashu0 .). 14:01:15 it wouldn't at all surprise me if an ar/tar variant did that 14:01:18 ais523: that works fine; the output file is "normal" for each command 14:01:23 it's every other output that's faked 14:01:36 i.e. the file to be created doesn't exist in the filesystem each command runs in 14:01:44 elliott: oh, do you only remove the block on the read when the file is actually closed? 14:01:45 just every other output of the build process 14:02:02 ais523: when the command completes successfully, yes; I suppose that would work as an optimisation, too 14:02:02 I thought you meant it only blocked until the relevant portion of the file had been written 14:02:16 heh, that's even better, but most compilers stat 14:02:19 well, some of them anyway 14:02:28 and the vast majority buffer their output fully 14:02:32 so that wouldn't actually help much 14:02:33 yep, but stat wouldn't break it, just read-after-write-barrier it 14:02:49 ais523: well, I mean 14:02:54 you'd have to wait for the whole thing to finish 14:02:57 for them to get the correct stat result 14:03:06 yep, that's what I meant by a read-after-write barrier 14:03:08 right 14:03:11 so the advantage is negated 14:03:21 you know what we need? lazy languages 14:03:31 ais523: thankfully, I fear this scheme won't work very well 14:03:36 so that you could have stat return before its results were available 14:03:40 because I suspect the overhead of setting up every process is too great 14:03:51 and the scheduler will hate you 14:04:07 ais523: heh 14:04:12 ais523: that's just unsafeInterleaveIO 14:04:23 oh, is that what that does? 14:04:33 (what's unsafe about it, btw?) 14:04:33 ais523: it's just (return . unsafePerformIO), essentially 14:04:37 so the IO only gets executed when you force the action 14:04:39 weeeeeell 14:04:42 some people argue it isn't unsafe 14:04:46 but they're wrong 14:04:51 it exposes evaluation order as IO 14:04:53 i.e. 14:05:03 whenever some /pure/ code forces the value you get out of an unsafeInterleaveIO action 14:05:06 the IO occurs 14:05:21 oh right, it lets you tell things apart that should be indistinguishable 14:05:21 you can justify this as still being inside the IO monad -- it doesn't break purity in a strict sense 14:05:25 but it's eurgh 14:05:26 ais523: not rtue 14:05:27 true 14:05:29 _|_ lets you do that 14:05:36 to determine evaluation order 14:05:39 but... it's icky 14:05:49 getContents uses that, it returns all of stdin as a lazy string 14:05:49 well, you can code to protect your code from _|_ in particular 14:05:54 ais523: err, what? 14:05:58 using seq or whatever 14:06:07 you're confused, unsafeInterleaveIO doesn't let you tell things apart that should be distinguishable at all 14:06:18 wow, they're making a film out of Battleship 14:06:33 as in, the game 14:06:34 hmm… I suppose unsafeInterleaveIO could be implemented in terms of exceptions and an unthrow operation that went back to where the exception was thrown from 14:06:46 elliott: it'd just be a generic war film, right? 14:07:12 ais523: "In the Hawaiian Islands, an international naval fleet at Pearl Harbor engage in a very dynamic and intense battle against an alien race known as "The Regents". The aliens come to planet Earth, on a mission to build a power source in the ocean. Upon their visit, they come in contact with the navy fleet. The film is also purported to show both sides of the story, from the aliens' perspective, as well as the humans' so the audience knows exa 14:07:12 ctly where the opponent's ships are.[4]" 14:07:15 -!- Ngevd has joined. 14:07:27 my games of Battleship usually aren't against aliens... 14:07:35 Hello... 14:07:36 Ill 14:07:42 have they made a film out of Monopoly yet? 14:07:49 that would be THE WORST THING EVER AND SO SHIT AND EVERYONE WHO WOULD ENJOY IT SHOULD DIE 14:07:54 IN A DEATHLY MANNER 14:07:56 ahem 14:07:57 hi Ngevd 14:08:16 There are quite a few movie trailers for Tetris: The Movie, but I don't think anyone's made it for reals. :/ 14:08:27 the thing is, that with games that are simplifications (often huge ones) of reality, then complicating them into a film just makes it look like it's a film based on reality 14:08:32 fizzie: I know; some of them are quite good 14:08:41 but I doubt there'd be enough plot in it to carry a full-length movie 14:08:51 ais523: Like a Tetris movie would just be a documentary on the construction of high-rise buildings. 14:09:12 also, pretty much all non-computer attempts to simulate Tetris that I've seen don't allow for the removal of lines to work correctly 14:09:13 fizzie: Well, there's Complete History of the Soviet Union. 14:09:21 I saw a Tetris board game once; it didn't really work 14:09:22 It has plot and everything! 14:09:44 if you completed a line you were meant to put a peg next to it to mean "this line's completed, ignore it" 14:09:49 ais523: haha 14:09:56 I think I've seen that, too 14:10:02 but you couldn't physically stretch the pieces across it because they were made of rigid plastic 14:10:52 * elliott is still feeling let down by that "first person" Tetris. 14:11:05 It could have been my favourite game! 14:11:33 there's no obvious reason why that would necessarily be awful 14:11:34 fizzie: (Admittedly it's not so much as a Tetris film as a film with Tetris jammed into the side of it.) 14:11:34 -!- hagb4rd has joined. 14:11:36 was it just implemented badly? 14:11:39 ais523: it wasn't first person 14:11:44 it just rotated the screen as you rotated the piece, that's all 14:11:47 otherwise it was standard tetris 14:12:14 hmm, it meets one of the necessary conditions to be first person, but is also missing at least one 14:12:15 ah here we are.. hello esofriends :} 14:12:24 hi hagb4rd 14:12:52 ais523: by the way, we found a place to send the lost people 14:12:54 `? esoteric 14:13:01 This channel is about programming -- for the other kind of esoterica, try #esoteric on irc.dalnet.net. 14:13:05 elliott: yay 14:13:15 that will make a lot of people happier, I think 14:13:34 I see no reason why esoterica shouldn't be discussed; just it's awkward to put two mostly unrelated subjects in one channel 14:13:45 We can still mock them before sending them off, right? :( 14:13:46 how are things goin..look like a rainy day..and this cold winds comin from the northern sea 14:13:51 Regarding Tetris, I think they never got the Chernobyl control center simulator they were building for Altparty 2011 to work. There were people fiddling with it at all times of day during the whole weekend, with multimeters and soldering irons and whatnot, but from what I hear it never quite worked out wrong the right way. 14:14:09 fizzie: In, um, Tetris? 14:14:32 No, no, just, you know, associating. Tetris -> Soviet Union + game -> that thing. 14:14:49 Simulating that in Tetris would be impressive. 14:14:59 I've heard a rumour that in nuclear power plants, the alarms sound continuously except when there's a problem, when they stop, because it's more noticeable that way or something 14:15:02 I suspect it's false, though 14:15:11 that seems dubious 14:15:16 it's easy to notice persistent sounds stopping 14:16:03 agreed; but it seems like a bizarre decision to make 14:16:12 when the other way round would presumably work too 14:16:42 Hunt the errors: http://hpaste.org/55219 14:16:58 And the little things that are just /wrong/ 14:17:32 And the wumpus. 14:17:33 elliott: anyway, I've concluded that reducing problems to problems that have already been solved is a fast way to do software development, but tends to lead to subquality programs 14:18:26 also, I did probably the most bizarre optimization I've done ever this morning 14:18:47 it was to a function that calculated strongly connected subsets of graphs 14:19:00 ais523: I reject that because it contradicts one of my core principles :P 14:19:02 the graph was (and still is) represented as a list of pairs 14:19:03 * elliott rational. 14:19:13 ais523: you optimised before getting a better graph representation? 14:19:15 and the order is arbitrary 14:19:39 elliott: that representation comes naturally out of the problem; optimising the representation would involve writing a conversion function 14:19:48 and it was profile-guided optimisation, looking for the slowest part and speeding it up 14:19:55 anyway, I sped the program up by a factor of 6 simply by reversing the list 14:20:03 haha 14:20:43 Ngevd: What do you think interact does? 14:20:44 what have zou optimized..the calculating or the drawing part 14:20:48 my theory in this respect is that the list happens to be sorted, and it's quite plausible that sorted lists happen to hit the worst case of whatever algorithm I'm using (I got it from Wikipedia) 14:21:01 Ngevd: Also, you don't want an Array. 14:21:02 and reversing it gets rid of that worst-casiness in the case of the algorithm in question 14:21:10 hagb4rd: drawing? 14:21:36 elliott, I have no idea what interact is, and I have no idea why I would want an array 14:21:47 elliott: what is an array in Haskell? 14:21:50 Ngevd: Then why did you type "interact $"? 14:22:02 Because the type signature seemed right! 14:22:08 Ngevd: What are you trying to do? 14:22:17 i wonder how one could imprve the speed of calculating maths without changing the architecture of your hardware 14:22:17 ais523: Can I have a standard response for "your question is unanswerable without you clarifying it"? 14:22:36 elliott: hmm 14:22:44 Because $that. 14:22:47 elliott, really, I want to learn my latin vocab 14:22:48 normally, you're in a better position to clarify the questions than I am 14:23:01 because my typical reply is "indeed, I'm not quite sure of what I'm asking, but asked because I want to know what I should be asking" 14:23:09 Ngevd: That's a bit more general than I was intending my question to be answered in. 14:23:18 why don't we just assume the response/reply and save time? 14:23:23 It's what the entire program is for 14:23:23 ais523: OK, let me rephrase what I said: Rephrase what you said, or I can't answer it. 14:23:32 Ngevd: What are you trying to achieve by applying interact? 14:24:04 elliott: what operations does a value of type Array x y support in Haskell, and is there anything particularly notable about their performance behaviour? 14:24:12 By the fact that I don't actually know, I'd guess I should rewrite it 14:24:27 :t interact 14:24:28 (String -> String) -> IO () 14:24:34 right, indeed 14:24:40 ais523: it's (Array i a), where i is the index type, and a is the element type 14:24:47 and it's just a boxed, lazy array 14:24:58 that is, a contiguous region of memory containing pointers to thunks 14:25:12 I could almost remember what interact did, just not the details 14:25:17 and the API is crappy and everyone uses Vector instead but Ngevd doesn't want Vector here either I don't think 14:25:26 ais523: interact happens to use lazy IO (-> unsafeInterleaveIO). 14:25:32 Cue sad track (is that a thing?) 14:25:35 elliott: hmm, so it supports operations like copy but with one element changed? 14:25:57 ais523: There are mutable and immutable versions; the immutable version is stuff like that, yes. 14:26:00 that's what I'd expect an array to do in a pure functional language 14:26:15 There's also unboxed arrays, but that's not the type being used here. 14:26:21 And also the API is horrible and everyone uses Vector instead. 14:26:22 and it's the sort of thing that can reasonably easily be optimised by the compiler into mutation behind the scenes, in cases where the optimisation is obviously correct (which are common) 14:26:26 Have I said that enough? 14:26:30 ais523: that's not reasonably easy at all 14:26:48 I think GHC does do it, but it's not something I'd want to rely on 14:27:10 -!- kallisti has joined. 14:27:11 -!- kallisti has quit (Changing host). 14:27:11 -!- kallisti has joined. 14:27:56 Ngevd: anyway, I think you should use an explicit pattern match instead of either there 14:28:09 Ngevd: you can tell that you're using interact wrong, because 14:28:15 elliott: the most obvious case is if there's only possibly one reference to the input array, and it goes out of scope upon the copy-replace operation 14:28:16 do { ... IO stuff ... } :: IO a (for some a) 14:28:21 in (interact f), f must :: String -> String 14:28:26 IO a =/= (String -> String) 14:28:35 ais523: yes, sufficiently smart compilers are really easy to explain 14:28:38 and I find that's reasonably common in functional languages 14:28:44 elliott: gcc can implement that 14:28:46 and take decades to implement 14:28:53 ais523: gcc doesn't implement Haskell 14:29:04 I'd imagine that most compilers that even vaguely do optimisations do that, actually 14:29:27 the problem is that you'd need a stupidly smart compiler if the array operation was written in Haskell, rather than hardcoded into the compiler 14:29:48 ghc implements array operations as fairly thin wrappers over primitives 14:29:58 but anyway, I think you're vastly oversimplifying things 14:30:36 well, let's see, there are two properties we need to check; "only reference" and "dies here" 14:30:55 "dies here" is trivial to check; in most compilers that go via SSA you need to actively throw away information to not track that 14:31:12 ais523: i am disagreeing with your assessment of the situation 14:31:17 I don't feel like debating it right now though 14:31:23 "only reference" is rather harder, but the common case where you just created the reference and haven't passed it to anything else yet can be optimised 14:31:39 elliott: OK, what about this for an argument: I actually implemented that optimisation for Underload in derlo 14:31:55 except at runtime 14:31:57 ais523: I am glad we live in that special world where Underload is Haskell 14:32:13 elliott: why do you think that Haskell is somehow magically special when it comes to this? 14:32:20 indeed, Underload shares many properties that make this kind of mutating optimisation tricky in Haskell, such as full laziness! 14:32:22 oh, wait, hmm. 14:32:24 no it doesn't 14:32:33 oh right, I forgot about laziness 14:32:50 the world needs a strict version of Haskell 14:32:57 no, it really doesn't 14:33:05 not necessarily because it'd be better, but because it would make it much easier to compare it with things 14:33:12 heh 14:33:15 well, there's DDC. 14:33:26 Haskell has lots of innovations that have nothing to do with laziness, and the laziness gets in the way when you'd like to evaluate them on their own 14:33:44 ais523: haskell is for people who want to write programs, not for people who want to debate languages :P 14:35:18 wait, does Ngevd's Haskell program seriously say "interact $ do"? 14:35:30 yes. 14:35:30 no wonder it jumped out at elliott 14:35:46 trivial type errors are quite easy to spot :P 14:36:28 elliott: well, String = [Char] and thus is a monad action type, technically speaking… 14:36:47 err, no 14:36:53 wait, yes 14:36:57 ais523: yep, but that's irrelevant 14:37:01 the head is (->) here 14:37:04 it's the reader monad 14:37:16 oh, right, that's what I first thought 14:37:19 then I forgot about the $ 14:37:20 but, err, getStdGen rather ruins that theory 14:37:25 ais523: ? 14:37:28 the $ is irrelevant 14:37:31 it's just (interact (do ...)) 14:37:39 err, hmm 14:37:46 yep 14:38:07 no, it is relevant 14:38:18 imagine if it had been (interact $ (do …) "abc") 14:38:22 well, OK 14:38:25 but it isn't 14:38:33 err, that doesn't make sense either 14:38:46 fizzie: When did map.h start including world.h? :/ 14:38:47 elliott: it'll explain a lot if I explain that I don't find Haskell intuitive 14:38:56 ais523: you've said that 14:39:13 I can write in it, but I often make crazy type mistakes or whatever due to not grasping it 14:39:23 whereas in OCaml, pretty much all the type errors I make are typos 14:39:38 that's because OCaml's type system is too shallow to catch any real type errors :) 14:39:43 haha 14:39:44 BRUUUUUN 14:39:48 just wait until Anarchy comes around 14:40:04 no language called Anarchy is allowed to have a type system 14:40:30 the idea is that it's statically typed with a really expressive type system, that's also massively complex but it doesn't matter because the types aren't user-visible 14:40:45 I have problems just coming up with a notation to write the types down 14:40:48 in general 14:40:55 elliott: $ git blame map.h | grep world.h 14:40:55 3105a3b3 (Elliott Hird 2011-07-23 10:00:04 +0100 5) #include "world.h" 14:40:58 elliott: Better ask yourself that. 14:41:02 fizzie: :-( 14:41:06 but it doesn't matter because it just makes sure that the program types for the specific uses of the functions you're using 14:41:11 ais523: scapegoat won't have blame, right? 14:41:14 * elliott rimshot 14:41:29 elliott: it'd be hard not to ;) 14:41:38 why do you think it's called scapegoat in the first place? 14:41:42 dude 14:41:43 i already 14:41:43 did 14:41:44 the rimshot 14:41:49 you don't have to point it out :'( 14:41:52 just wait until Anarchy comes around <== isn't that how everything started? 14:42:03 hagb4rd: nah, Anarchy's an esolang 14:42:07 ah 14:42:07 or will be, once I work it out 14:42:09 k 14:42:17 I suppose I should've used "git annotate", it's less bitchy. 14:42:22 it is slightly more implemented than most completely vaporware esolangs, because it has a parser, which also actually works 14:42:36 (this puts it in a different category from Cyclexa, which has only a parser but it doesn't work) 14:43:06 actually, hmm, Cyclexa : Anarchy :: UNIX : @, but less so 14:43:22 or, hmm, a better analogy 14:43:27 Cyclexa : Anarchy :: bash : Powershell 14:43:32 ais523: hey, add some more spaces around those colons, or those words will start fighting 14:43:32 but more so 14:43:45 ? 14:43:54 ais523: UNIX and @ 14:43:58 I see 14:44:11 that was something like the third interpretation I tried 14:44:45 incidentally, it seems that the next big thing in JavaScript implementation is type inference 14:45:02 not as part of the language, but getting the compilers to infer types so that they don't have to put type checks in at runtime 14:45:20 the next big thing? 14:45:24 you mean the previous big thing 14:45:35 at least, they've been doing that, or at least talking about doing that, for years 14:45:35 oh, have they managed it now? they were starting on it last I looked 14:45:43 oh, well it may be that they're only just now succeeding :) 14:46:08 incidentally, in Anarchy tuples and lists are special cases of the same thing 14:46:25 which is probably obvious, but they use the same type constructor, (,) 14:46:50 ais523: are you sure anarchy isn't just dynamically typed :) 14:47:03 I suppose the defining feature of Anarchy is just picking up a convenient type constructor from somewhere and not worrying about if it already means something else 14:47:13 elliott: it's aptly named 14:47:55 I suppose you could call it an instance of the whole sufficiently smart compiler thing, with respect to "a sufficiently smart compiler should just magically figure out all the types I'm using even if they make no sense" 14:48:01 except I think it's practical 14:48:50 hmm, I'm not really sure what to do about polymorphic recursion 14:48:58 it's obviously allowed, and also obviously not allowed in general 14:49:04 but I can't figure out what the restrictions are 14:50:25 the simplest way would just be to put an arbitrary limit on the number of different type constructors that can be used in any given type (whether or not they have the same names; or perhaps only if they have the same names, as only a finite number of type constructor names can be used in any given program) 14:50:57 ais523: just take the fixed-point 14:51:21 elliott: indeed; the problem is, I'm not yet convinced it's computable to determine if there is a fixed-point 14:51:42 hopefully it'll turn out that there's always one, so its computability is not in question 14:51:49 y isnt just restricted by avaiable memory? 14:52:16 ]that 14:52:22 hagb4rd: the limit's to detect infinite loops in the traditional crude way of "well, it hasn't finished yet, it's probably infinite" 14:52:37 elliott saz 14:52:44 what 14:52:46 says its limited 14:53:02 the number of constructors 14:53:05 Says what's limited? 14:53:10 ais523 is the one who said that. 14:53:12 And he just said "finite". 14:53:18 Programs are finite, usually... 14:53:50 hagb4rd: if you can write a program containing infinitely many different names for type constructors, good on you, but don't expect me to be able to compile it, or even yourself to be able to fit it in a pastebin 14:53:53 no it was ais: as only a finite number of type constructor names can be used in any given program 14:54:10 finitely many, not a fixed amount 14:54:13 hagb4rd: well, you can't exactly generate them at runtime 14:54:16 i was just curious 14:54:23 it might be anarchic, but it isn't Perl 14:54:28 also, limited by memory = a finite limit :) 14:54:35 hagb4rd: i was just answering your curiosity 14:55:11 ok.. so everything works out fine 14:57:03 ais523: Ban fizzie please. :/ 14:57:35 For the offense of not inventing names for you? 14:57:47 Yes. 14:57:54 I'm very upset. 14:58:05 wait, of course it's decidable 14:58:58 also, the same issue is why Haskell and OCaml's error messages for type errors are less helpful than usual when recursion is involved 14:59:24 :t fix id 14:59:25 forall a. a 14:59:42 they are? 14:59:47 not if you specify a type signature, at least 14:59:57 right, I mean in the case of inference only 15:00:29 typically what they end up complaining about is nonobvious because it's based on a bunch of assumptions that you hadn't meant to be correct 15:01:33 elliott: is "even-length list" a type expressible in Haskell? 15:01:49 ais523: yes, extremely trivially 15:01:54 I'll let you think for a second to figure out how 15:02:06 elliott: but not in a way that's a special case of [], right? 15:02:47 I mean, I can define EvenList a = Nil | ConsEven a (OddList a) and OddList a = ConsOdd a (EvenList a) 15:02:54 no: to do that would require subtyping, which wreaks hell on inference; I suspect you would accept something that could be constructed like (Foo [1,2,3,4]), in which case I will complain that you're giving list literal syntax undue weight :) 15:03:13 ais523: I was going for data EvenList a = Nil | Cons a a (EvenList a) 15:03:25 but not EvenList = Nil | Cons a (OddList a) and OddList = Cons a (EvenList a) 15:03:32 elliott: hmm 15:03:36 but then you can't get the tail with a pattern-match 15:04:05 wait, yes you can, just put the element back manually 15:04:39 anyway, the definition which uses Cons in both places rather than ConsEven and ConsOdd is what you'd use in Anarchy, if you could specify types at all rather than having them inferred 15:04:45 and it desugars into ConsEven and ConsOdd 15:05:10 although probably with less meaningful names 15:07:40 Aha I have found the hipsterest metal. 15:15:25 hmm, recent discovery: YouTube's making people give them their cellphone number to uncap accounts and allow them to upload videos longer than 15 minutes 15:15:29 -!- copumpkin has quit (Quit: Computer has gone to sleep.). 15:15:37 I'm not entirely sure I can explain that away in any way /but/ being evil 15:24:59 -!- MSleep has quit (Ping timeout: 276 seconds). 15:25:47 -!- MSleep has joined. 15:27:42 ais523: to avoid bots clogging the servers? 15:28:06 elliott: it's not the only requirement 15:32:47 -!- MSleep has quit (Ping timeout: 276 seconds). 15:32:57 -!- MSleep has joined. 15:34:03 -!- MSleep has quit (Read error: Connection reset by peer). 15:34:22 -!- MSleep has joined. 15:39:45 -!- copumpkin has joined. 15:42:44 I got a Japanese ditto last night :D 15:43:14 coppro: err, context? 15:43:19 it could be Pokémon, but I'm not sure it is 15:43:22 ais523: yes 15:43:37 flawless speed and HP stat? 15:43:41 nah, just japanese 15:44:11 I should really get a quebecois game and do shenanigans if I ever decide to try to breed pokes for combat 15:46:25 don't, the international bonus effectively works out to a 13% decrease in the length of time it takes to train them up to level 50/100, which is not really noticeable 15:46:35 there's no impact on the actual eventual stats 15:48:26 -!- Ngevd has quit (Quit: Goodbye). 15:50:50 -!- Ngevd has joined. 15:55:47 ais523: oh, I wasn't talking about that 15:55:58 also I don't think quebecois would count as international 15:56:08 it's shininess that I'm going for 15:56:28 it would; the cartridges for games in a particular language are identical 15:56:47 But I would register it as having the same location 15:56:49 since it's my location 15:56:50 so it can't distinguish US/France from England/France from English Canadian/French Canadian 15:57:06 registered location is ignored, I think, because it's so easily faked 15:57:15 ah 15:58:10 hmm, TIL that detonating a nuclear bomb was only banned in 1998 15:58:13 in the UK 15:58:34 (it was a consequence of the comprehensive test ban treaty; typically, detonating a nuclear bomb before then would typically violate some other law indirectly) 16:12:19 How about just possessing a nuclear bomb, that legal? 16:22:44 -!- Taneb has joined. 16:24:21 Best ISP-given workaround ever. Paraphrasing here: "We've switched some mobile data connections to use NAT; connecting mobile devices will randomly get either a public IP or a NATted one. [What do I do if a service I'm using requires a public IP?] In this case, you must try establishing the connection again until you get a public IP. Use [link] to check your current IP." 16:24:27 The most helpful. 16:25:04 -!- Ngevd has quit (Ping timeout: 248 seconds). 16:26:14 Official justification is the predicted sparsity of v4 addresses. 16:26:44 So give 'em IPv6 addresses. They'll do just fine. 16:26:58 That would be too futuristic. 16:32:45 I'm kind of surprised at how slowly IPv6 is being adopted. 16:33:47 People don't like change changing 16:34:28 I think NAT probably has slowed down the change as well? 16:35:02 since it lets everyone procrastinate the looming address exhaustion apocalypse 16:35:20 There's no real reason you can't just NAT further and further. 16:35:38 but... 16:35:39 but 16:35:42 so ugly. ;_; 16:36:21 I didn't say it was a good idea. 16:37:07 ""[...] it is possible that its [NAT's] widespread use will significantly delay the need to deploy IPv6. [...] It is probably safe to say that networks would be better off without NAT [...]" -- "Some" 16:37:32 This is what Some[6] say, according to Wikipedia 16:44:42 Yeah, the Some Institute of Somersville. 17:00:13 -!- MSleep has changed nick to MDude. 17:02:44 -!- ais523 has quit (Remote host closed the connection). 17:09:57 -!- Taneb has quit (Quit: Goodbye). 17:24:10 i think station v3 has a sort of gilligan's isle sort of plot except it does seem they are always endeavouring to get from A to B 17:24:40 as for the characters they would all look perfectly at home in commander keen 17:28:12 ... oh i think i see now.. im just in complete confusion over all the events since im just reading from a random position 17:28:36 thus giving the illusion that lots of stuff was all miraculously invented at once 17:30:00 kind of like how video games seemed amazing all at once, despite requiring the discovery of electricity, the invention of computers, the invention of television, the invention of the microchip, 17:35:40 the invention of people. 17:35:56 the invention of money 17:36:14 life too 17:36:22 eyes 17:36:23 hands 17:36:33 light 17:36:59 hmm 17:37:24 its te same effect when you encounter a webcomic for the first time 17:37:46 it can seem like theres endless pages until you catch up 17:38:14 but then, to be fair, theres endless webcomics out there 17:44:40 did itidus get incremented? o_0 17:45:42 `pastelogs itidus21 17:46:08 http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.17205 17:47:10 itidus21 from 23rd july 17:47:16 `pastelogs itidus20 17:47:24 http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.29013 17:47:57 itidus20 from 16th july .. it seems to vary back and forth 17:48:33 this is a phenomenon which requires explanation 17:48:58 it's my alt nick i guess 17:49:26 since i am not used to irc, i havent made provisions to use underscores 17:52:24 oh 18:01:21 -!- oklopol has joined. 18:37:13 When did freshmeat.net change to freecode.com??? 18:38:47 ___---_-----------------------_______ 18:39:07 Gregor: 2011-10-29 18:39:30 Man, I would have noticed that if it hadn't become so irrelevant. 18:39:37 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds). 18:42:21 Gregor: you're irrelevant. 18:43:05 kallisti: you're a relephant 18:47:01 -!- Klisz has joined. 18:55:58 -!- Phantom_Hoover has joined. 18:59:31 -!- DCliche has joined. 19:03:00 -!- Klisz has quit (Ping timeout: 252 seconds). 19:17:57 -!- kallisti has quit (Read error: Connection reset by peer). 19:21:01 -!- kallisti has joined. 19:21:01 -!- kallisti has quit (Changing host). 19:21:01 -!- kallisti has joined. 19:21:50 my computer just overheated on my bed. 19:21:53 perhaps I need to clean the fan. 19:23:47 did it catch on fire 19:24:40 -!- zzo38 has joined. 19:25:48 -!- derrik has joined. 19:27:12 oklopol: no 19:27:21 presumably it turned itself off 19:27:33 which is not nearly as cool as spontaneous combustion 19:28:02 insert heat joke 19:28:03 -!- sebbu2 has joined. 19:28:03 -!- sebbu2 has quit (Changing host). 19:28:03 -!- sebbu2 has joined. 19:30:57 -!- sebbu has quit (Ping timeout: 240 seconds). 19:39:23 `run cat lol &| echo 19:39:26 bash: -c: line 0: syntax error near unexpected token `|' \ bash: -c: line 0: `cat lol &| echo' 19:39:29 `run cat lol | echo 19:39:32 ​\ cat: lol: No such file or directory 19:39:38 hmm 19:39:47 what was that thing that's like 2>&1 | 19:40:00 `run cat lol |& echo 19:40:03 No output. 19:40:43 `run cat lol | echo 19:40:45 ​\ cat: lol: No such file or directory 19:45:34 -!- sebbu2 has changed nick to sebbu. 19:48:24 head -c 200 | head -n 2 19:48:34 can this be combined into a single head command? 19:49:06 have you tried the obvious yet? 19:49:14 obviously not. :P 19:49:25 well 19:49:28 let me know 19:49:36 oh wait I think I did try it a while ago. 19:49:47 but I will try again because I don't remember 19:50:35 it's ambiguous without an explicit ordering though so I don't think it would work. 19:51:25 yeah using -c with -n just ignores -n 19:58:13 -!- nys has joined. 20:08:29 -!- GreaseMonkey has joined. 20:09:23 > 9**9**9 20:09:24 Infinity 20:12:04 Close enough. 20:17:28 -!- oerjan has joined. 20:25:13 !perl @a = qw(a b c); print splice @a, 0, 5 20:25:16 abc 20:25:41 -!- azaq23 has joined. 20:25:49 -!- azaq23 has quit (Max SendQ exceeded). 20:25:53 !perl @a = qw(a b c); map {print "ha" if undefined } splice @a, 0, 5 20:25:54 hahaha 20:26:10 !perl @a = qw(a b c); map {print "ha" if !defined } splice @a, 0, 5 20:26:23 sanity. check. 20:33:11 > 9^9^9 20:33:16 mueval: ExitFailure 1 20:33:16 mueval: Prelude.undefined 20:33:20 (Just checking.) 20:33:30 I guess "Infinity" was closer. 20:40:24 > 9^9 20:40:25 387420489 20:40:41 !perl sub test(\$) { my ($s) = @_; return my (defined wantarray? undef : $s) = 2; } local $, = ' '; my $s = 1; print test $s; test $s; print $s 20:40:41 Can't declare null operation in "my" at /tmp/input.23478 line 1, near ") =" 20:40:48 -!- calamari has joined. 20:40:53 NOOOOOO 20:41:00 my completely beautiful code is ruined. 20:41:07 I have to use /multiple lines/ 20:41:58 i'd sort of think the point of my is that it's lexically scoped at compile-time 20:42:38 !perl sub test(\$) { my ($s) = @_; return my (defined wantarray? undef : $s) = 2; } local $, = ' '; my $s = 1; print test $s; test $s; print $s 20:42:38 Can't declare null operation in "my" at /tmp/input.23726 line 1, near ") =" 20:42:52 !perl sub test(\$) { my ($s) = @_; return (defined wantarray? undef : $$s) = 2; } local $, = ' '; my $s = 1; print test $s; test $s; print $s 20:42:52 Modification of a read-only value attempted at /tmp/input.23799 line 1. 20:43:13 !perl sub test(\$) { my ($s) = @_; return (defined wantarray? (undef) : $$s) = 2; } local $, = ' '; my $s = 1; print test $s; test $s; print $s 20:43:14 Assignment to both a list and a scalar at /tmp/input.23860 line 1, near "2;" 20:43:38 !perl sub test(\$) { my ($s) = @_; return (defined wantarray? (undef) : ($$s)) = 2; } local $, = ' '; my $s = 1; print test $s; test $s; print $s 20:43:38 22 20:43:45 lol 20:44:39 okay maybe there's a better way to write that in one line. 20:44:54 !perl sub test(\$) { my ($s) = @_; return (defined wantarray? $_ : $$s) = 2; } local $, = ' '; my $s = 1; print test $s; test $s; print $s 20:44:54 22 20:45:18 !perl sub test(\$) { my ($s) = @_; return defined wantarray? $_ : $$s = 2; } local $, = ' '; my $s = 1; print test $s; test $s; print $s 20:45:19 22 20:45:31 it's more confusing without the parens I think. 20:46:19 !perl sub test(\$) { my ($s) = @_; return defined wantarray? $_ : $$s = 2; } local $, = ' '; my $s = 1; print test $s; test $s; print $s; print 20:46:20 222 20:46:26 also it overwrites $_ 20:46:34 !perl sub test(\$) { my ($s) = @_; return defined wantarray? my $_ : $$s = 2; } local $, = ' '; my $s = 1; print test $s; test $s; print $s; print 20:46:34 22 20:46:37 there we go. 20:47:50 return (defined wantarray? my $_ : $$s) = join "\n", (splice @lines, 0, $n // $line_cap); 20:47:56 this is my opus magnus. 20:48:46 I could also write my (undef) 20:49:01 er wait no that wouldn't work 20:49:37 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds). 20:50:10 !perl sub test(\_) { my ($s) = @_; return defined wantarray? my $_ : $$s = 2; } local $, = ' '; my $s = 1; print test $s; test $s; print $s; print 20:50:11 Malformed prototype for main::test: \_ at /tmp/input.24632 line 1. 20:50:21 hmmm, I would think \_ could be a valid prototype 20:50:36 it looks like a nice comfy chair (without legs) 20:51:06 What'd it mean? I mean, _'s not a sigil. 20:51:23 _ means to use $_ if no argument is supplied. 20:51:29 I think the multimana semiring (from Icosahedral RPG) is like (Cont Natural Five) because, a mana can be (Five -> Natural) to tell you how many copies of a prime factor, and a mana -> Natural tells you what integer multiple of that mana is added together. It won't work to read the amount of your mana in Haskell, because the set of manas is infinite. 20:51:30 it's otherwise treated as $ 20:52:01 Yes, but: "Any backslashed prototype character represents an actual argument that absolutely must start with that character." That's not going to work for a \_. 20:52:14 that's a dumb rule. :P 20:52:29 * kallisti is talking about what should be. 20:52:52 hmmm 20:53:05 So you'd like to get a scalarref to $_ if the argument is missing? 20:53:06 plenty of perl operators mutate $_ in place 20:53:11 yes. 20:53:40 I don't actually need it right now 20:53:46 it's just something I could see being useful to have. 20:53:52 Does that make a semiring if the result type (r) of a continuation is a semiring? 20:53:53 when emulating perl operators. 20:55:33 fizzie: but I'm pretty sure you can just do that with manual hacks. 20:55:41 since $_ can be modified in-place anywhere 20:56:28 just make the argument optional. if it's missing, modify a non-lexically bound $_ 20:56:29 (Of course to implement in Haskell requires additional constraints) 20:58:38 !perl sub foo (;\$) { my $ref = shift // \$_; $$ref = "ha"; } $_ = "x"; foo; my $bar = "y"; foo $bar; print "$_ $bar"; 20:58:38 ha ha 20:58:41 fizzie: man I really wish Perl 6 were a branched language and perl 6 were just some basic improvements to perl 5. 20:59:54 fizzie: hm 21:00:26 oh I misread. yes that's basically what I was suggesting. 21:00:56 It doesn't even arguably look that bad, since it's just a //\$_ piece of line-noise. 21:01:12 ($ref? $$ref : $_) = "ha"; 21:01:14 works as well. 21:01:28 fizzie: I am immune to perl line noise.. 21:01:31 it doesn't bother me. 21:01:33 /\/\/ do the wave. 21:02:21 I look at perl and see a beautiful language. :) 21:02:48 kallisti: ocular adjustment required 21:03:02 NOPE I SEE WITH MY BRAIN. 21:03:10 I see beauty with my brain anyway. 21:03:19 probably other things too! 21:04:16 oh hey I just found a great way to grab two elements at a time. 21:04:44 while( my ($x,$y) = splice @array, 0, 2 ) { ... } 21:04:53 -!- monqy has joined. 21:04:56 @array needs to be something you don't mind throwing away. 21:04:57 Arrr! 21:04:57 @tell ais523 elliott: the most obvious case is if there's only possibly one reference to the input array [...] <-- congratulations on reinventing the Clean language 21:04:57 Consider it noted. 21:06:01 -!- Phantom_Hoover has joined. 21:06:32 return (defined wantarray? my $_ : $$s) = join "\n", (splice @lines, 0, $n // $line_cap); 21:06:35 monqy: look at this 21:06:47 is that perle 21:06:50 yes 21:07:14 kallisti: Isn't there a module for that?-) (Grabbing two elements from a list at a time.) 21:07:23 fizzie: List::MoreUtils 21:07:36 Right, the well-named "natatime". 21:07:57 It's natatime! Let's all nata the nat up. 21:08:00 it's not standard though. splice is built-in and arguably takes less code. 21:08:10 But is it FAST. 21:08:12 since natatime uses an iterator object so you need a line before the loop to create it. 21:08:28 fizzie: probably not as fast no. 21:08:39 because it deletes and resizes the array. 21:09:01 fizzie: but yes that's always my first question when talking about something in perl. 21:12:19 for(my $x; $x+1 != $#array; ++$x) 21:12:27 fizzie: fastest natatime 21:13:28 my ($a,$b) = @array[$x,++$x] 21:13:34 ais523: I was going for data EvenList a = Nil | Cons a a (EvenList a) <-- type EvenList a = [(a,a)] kthxbye 21:14:02 kallisti: Also the most scientific benchmark ever: 21:14:03 $ perl -e 'use Time::HiRes qw(time); use List::MoreUtils qw(natatime); { my @a; $#a = 10000000; $t1s = time; while (my ($x, $y) = splice @a, 0, 2) {} $t1e = time; } { my @a; $#a = 10000000; $t2s = time; for (my $it = natatime 2, @a; my ($x, $y) = $it->(); ) {} $t2e = time; } print $t1e-$t1s, " ", $t2e-$t2s, "\n";' 21:14:03 1.51157808303833 2.85868787765503 21:14:19 Splice is them victorious. 21:14:24 oh wow. 21:14:29 I wouldn't expect that. 21:15:33 perhaps perl has a way to efficient remove elements from the front of a list or something? 21:15:37 *efficiently 21:15:49 I might have done something "worng", like my ADSL router configuration interface puts it. But anyhow. 21:16:12 also I guess natatime is written in perl whereas splice is in C, but that's still only constant factors so... 21:16:21 maybe at higher inputs natatime beats splice? 21:17:50 Added a zero (well, technically, two zeros), but ran out of memory. :/ 21:18:05 Doubling goes to 3.05185985565186 5.66645216941833, that looks quite O(n) that far. 21:18:16 huh 21:18:17 There's a Cave Story+?? 21:18:29 so yeah I guess splice can just do efficient deletes at the front (and maybe the end) of arrays. 21:19:36 my computer just overheated on my bed. <-- you are not supposed to use it for that, sheesh 21:19:53 fizzie: perl works hard to maintain its position of just slightly slower than most scripting languages. 21:21:41 Well, you know the old adage, you have to run hard in order to run a still. Or something like that, anyway. (I think it's talking about outrunning the cops.) 21:21:53 yes. 21:22:06 Phantom_Hoover: Has been for a while. (Though it's rather new for PC.) 21:22:08 prohibition era fuck yeaaaah 21:22:21 OMG the bundle has Gratuitous Space Battles. 21:22:44 This is definitely worth the 70p I plan to pay for it. 21:23:08 You'll get neither CS+ nor GSB for 70p 21:24:23 Oh FFS. 21:24:34 Why are people so infuriatingly ethical. 21:25:10 I already owned them both and I still paid well above the average, so... sorry, I guess? 21:25:20 I hate you so much. 21:25:50 In fact, only 3 new games out of 7, it appears 21:26:00 Henceforth, the part of Finland Deewiant lives in is officially in Sweden. 21:26:13 in a C program where are static variables allocated? 21:26:21 I'll have to check with the local authorities; I doubt it 21:26:33 Pah, what do they know. 21:28:25 That's not really a C question but a compiler question, but generally I'd expect them to end up in either the .data, .rodata or .bss section of the executable, depending on constness and zeroinitiality. 21:30:42 fizzie: yeah I knew it wasn't a language question. I just wanted a general idea of what happens there regardless of compiler. 21:31:11 I often ask about a "language" when I really mean "what generally happens in many implementations" 21:33:02 You totally lack proper DS9K attitude 21:33:20 I vaguely recall a comp.lang.c thread about whether the standard says anything about the value of a local (in-function) static variable before the function has been executed for the first time. 21:33:36 It's slightly hard to test for that empirically. 21:33:51 * kallisti hates language lawyery answers to such implementation-related questions. 21:34:29 The correct answer to a randomly chosen C question is usually "it's undefined; if you're feeling lucky, read the documentation for your environment, they might tell you" 21:34:34 it doesn't have to be in the standard. I just want a general idea of what you can typically expect, if anything. 21:34:46 Deewiant: yes that happens a lot. :P 21:35:10 Unfortunately, implementors aren't typically dickish enough for such answers to be realistic 21:36:37 so as it turns out 21:36:42 Perl is a good language to write IRC bots in. 21:37:04 oh? 21:37:36 fizzie: do you know of a way to "delay" interpolation. Basically to have a string with $ variables in it and then fill those variables in later. 21:37:47 Eval. :p 21:37:52 oh... yes. 21:38:02 I always forget the eval hacks. 21:38:35 just have to make sure I don't expose anything to IRC. 21:38:38 kallisti: substitution? 21:38:47 oerjan: yes I use that currently for one thing. 21:38:49 * kallisti vague. 21:38:52 Probably would end up with quoting-related issues. 21:39:21 I guess with no strict refs a single s///e might be able to do it too. 21:39:46 !perl for ($x = 1; x < 5; x++) { s/.*/$x/; print; } 21:39:46 a... single one? 21:39:46 Can't modify constant item in postincrement (++) at /tmp/input.29417 line 1, near "x++" 21:39:52 oops 21:39:59 !perl for ($x = 1; $x < 5; $x++) { s/.*/$x/; print; } 21:40:00 1234 21:40:56 s/\$(\w+)/${$1}/ge or something like that? I don't really know. IIRC you can use a string as a scalarref with no strict refs. 21:41:12 yes that's correct 21:41:31 the "lifetime warranty" nonsense just reached new heights. I saw an advert for a GPU having "double lifetime warranty" 21:41:36 I have no clue what that means 21:42:03 double rainbow? 21:42:14 Vorpal: clearly it means for the lifetime of your heir. 21:42:15 heh 21:42:20 also if I expose that feature to IRC then it would prevent things like @{[`find / -type f -delete`]} 21:42:24 oerjan, right 21:42:55 that would be possible with a basic eval. 21:44:03 !perl $a = 1; $b = 2; sub foo { my $s = shift; my ($a, $b) = (42, 69); $s =~ s/\$(\w+)/${$1}/eg; return $s; } print foo('a$a, b$b'); 21:44:03 a1, b2 21:44:20 Apparently won't go with lexical scope there, unsurprisingly. 21:44:32 * oerjan wonders what's wrong with his suggestion. 21:45:33 new humble bundle btw 21:46:53 oerjan: I'm not sure what your suggestion was. The !perl snippet seemed somewhat unrelated for turning a string '$foo $bar' (received from somewhere) into the string '[current value of $foo] [current value of $bar]'. 21:47:00 fizzie: what I'll probably end up doing is using a hash so s/\$(\w+)/$vars{$1}//$$1" 21:47:03 er 21:47:06 accidentally hit enter. 21:47:40 fizzie: what I'll probably end up doing is using a hash so s(\$(\w+))($vars{$1}//'$'.$1)e 21:48:31 I've done a substitute-with-keys-from-a-hash-with-s///e too, though I think I used %foo% or some-such for the placeholders, since it's clearly not "real" variable interpolation. 21:49:09 Also so DOS-batch-file-retroistic. If I recall them right. 21:49:20 %s were involved anyway. 21:50:28 Python has a modified printf where you can pass in a dictionary and %(name)s will interpolate to d['name']. it's pretty handy. 21:51:02 %var%, but %N for positional params? There was some unsymmetry like that. 21:53:19 * kallisti might learn Ruby one of these days. 21:54:30 -!- derrik has quit (Quit: gone). 21:55:35 but... perl is so comfy as my scripting language. feels nice. 22:05:26 -!- Patashu has joined. 22:08:10 -!- derdon has joined. 22:15:56 fizzie: why would I want to use autoloader? 22:18:07 -!- Darth_Cliche has joined. 22:21:04 -!- Darth_Cliche has changed nick to Klisz. 22:21:47 -!- DCliche has quit (Ping timeout: 268 seconds). 22:23:10 -!- Jafet has joined. 22:46:00 -!- MDude has quit (Read error: Connection reset by peer). 22:47:08 -!- Nisstyre has quit (Read error: Connection reset by peer). 22:52:17 -!- MDude has joined. 22:53:00 -!- MSleep has joined. 22:53:36 -!- MSleep has quit (Read error: Connection reset by peer). 22:53:59 -!- MSleep has joined. 22:57:23 -!- MDude has quit (Ping timeout: 276 seconds). 22:58:37 aha. so that's why I kept having problems when I didn't qualify all of my imported subroutines. 22:58:49 I put my package declaration /after/ my imports. 22:59:12 so the names were going into the main specify, and then I switched over to my package namespace, which didn't have those names. 22:59:46 s/specify/namespace (?#....?)/ 23:01:37 fizzie: http://perldoc.perl.org/perlmod.html#BEGIN%2c-UNITCHECK%2c-CHECK%2c-INIT-and-END 23:01:45 this is my favorite example program in all the docs. 23:01:58 "The begincheck program makes it all clear, eventually" 23:02:59 I know how DOS batch files work; it is %var% for environment variables and %1 for parameter 1 and so on. 23:03:46 Do you know if there is any such things as continuation semiring? 23:04:05 wow "Note that END code blocks are not executed at the end of a string eval(): if any END code blocks are created in a string eval(), they will be executed just as any other END code block of that package in LIFO order just before the interpreter is being exited." 23:07:02 I wonder if anyone actually uses UNITCHECK, CHECK, or INIT 23:07:59 I guess UNITCHECK could be useful. 23:08:17 -!- MSleep has quit (Quit: later chat). 23:11:26 " Because the old-fashioned syntax is still supported for backwards compatibility, if you try to use a string like "This is $owner's house" , you'll be accessing $owner::s ; that is, the $s variable in package owner , which is probably not what you meant. " 23:11:33 wow, that's a nice little gotcha 23:11:54 -!- Nisstyre has joined. 23:12:17 !perl use LWP'Simple 'get'; print get("http://www.google.com/"); 23:12:18 Can't locate LWP/Simple.pm in @INC (@INC contains: /etc/perl /usr/local/lib/perl/5.10.1 /usr/local/share/perl/5.10.1 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.10 /usr/share/perl/5.10 /usr/local/lib/site_perl .) at /tmp/input.6122 line 1. 23:12:31 heh. 23:12:36 * kallisti is going to use ' instead of :: now :P 23:15:00 If you have a package called m, s, or y, then you can't use the qualified form of an identifier because it would be instead interpreted as a pattern match, a substitution, or a transliteration. 23:15:04 bahahahaha 23:15:17 * kallisti names his Perl web app framework m 23:18:15 it doesn't define an import method 23:18:33 so you have no way of accessing anything. 23:20:58 well you could use %m:: and access the symbol table 23:25:11 -!- copumpkin has quit (Quit: Computer has gone to sleep.). 23:28:13 Can you make this kind of commutative applicative: a *> z = z <* a 23:28:31 And what is a communist functor/applicative/monad? 23:29:23 zzo38: functor/applicative/monads that believe in a class-less Haskell. (I have no idea) 23:29:48 -!- Nisstyre has quit (Ping timeout: 240 seconds). 23:31:51 -!- Nisstyre has joined. 23:32:15 -!- calamari has quit (Quit: Leaving). 23:34:40 > [1,2,3] *> [4,5,6] 23:34:41 [4,5,6,4,5,6,4,5,6] 23:35:03 > [4,5,6] <* [1,2,3] 23:35:03 [4,4,4,5,5,5,6,6,6] 23:35:16 -!- Nisstyre has quit (Max SendQ exceeded). 23:36:49 -!- Nisstyre has joined. 23:37:27 zzo38: you'd want flip (liftA2 const) = liftA2 (const id) 23:37:28 kallisti: It doesn't apply to list, it is not commutative 23:40:01 * Phantom_Hoover → sleep 23:40:02 -!- Phantom_Hoover has quit (Quit: Leaving). 23:40:59 zzo38: what do you want to be commutative again? 23:41:32 kallisti: I mean, some applicatives are commutative 23:41:54 yes 23:42:26 zzo38: it sounded like you were asking if such a thing existed. 23:42:45 By writing like f <$> x <*> y = flip f <$> y <*> x 23:43:13 Apparently commutative monad is the same but with join. 23:43:13 :t (*>) 23:43:14 forall (f :: * -> *) a b. (Applicative f) => f a -> f b -> f b 23:43:19 :t (<*) 23:43:19 forall (f :: * -> *) a b. (Applicative f) => f a -> f b -> f a 23:44:03 zzo38: Maybe and Reader are commutative, iirc 23:44:17 maybe is, yes. 23:44:24 I know Maybe is commutative 23:44:39 then what was your question? 23:44:51 << zzo38> Can you make this kind of commutative applicative: a *> z = z <* a 23:45:10 any applicative commutative in the usual sense should fulfil that 23:45:23 My question is to do a *> z = z <* a rather than f <$> x <*> y = flip f <$> y <*> x are there a difference? 23:45:29 no 23:45:38 well 23:45:42 erm there _might_ be 23:45:55 for *>, f = const id 23:46:02 And is there a different between commutative applicative and commutative monad? Commutative applicative makes more sense to me 23:46:03 for <*, f = const 23:46:34 :t flip const 23:46:35 forall b a. a -> b -> b 23:46:37 :t flip (const id) 23:46:38 forall a b. a -> b -> a 23:46:45 zzo38: i think i showed the other day that they are the same thing, you just apply an extra join to get the monad version 23:47:07 or an extra return to get the applicative one 23:47:23 oerjan: Yes, I think elliott wrote the code for the commutative monads and it seem to me, it is the same thing but with join. 23:47:44 do x <- mx; y <- my; f x y = join $ liftM2 f x y 23:48:37 er 23:48:37 oerjan: Yes, that was the code they showed to me and I realized it is same as your code 23:48:44 * do x <- mx; y <- my; f x y = join $ liftM2 f mx my 23:48:53 Yes that is better 23:49:20 oerjan: is there an applicative that isn't a monad? 23:49:34 liftM2 f mx my = do x <- mx; y <- my; (\x y -> return (f x y)) x y 23:50:27 kallisti: a free applicative defined with a GADT, for example 23:50:37 "free"? 23:51:24 data FreeA where Pure :: a -> FreeA a; (:<*>) :: (FreeA (a -> b)) -> FreeA a -> FreeA b 23:51:28 i think 23:51:32 oh that kind of free. 23:51:48 * kallisti didn't know that had a name. 23:52:28 um i'm not sure if that's quite right, but something like that; anyhow the point is to construct something which obviously allows _just_ the Applicative operations 23:53:17 that thing above is probably too simple 23:54:34 it keeps getting discussed how to make an Applicative which isn't a Monad and i keep forgetting the examples 23:55:37 is co-applicative a thing? 23:56:11 heh 23:56:22 i don't know 23:56:37 impure :: FreeA a -> a 23:57:59 s/FreeA/g/ 23:58:45 but what would (>*<) be? 23:59:12 -!- copumpkin has joined. 2011-12-14: 00:02:13 -!- pikhq has joined. 00:02:14 -!- pikhq_ has quit (Ping timeout: 252 seconds). 00:04:32 oerjan: does applicative have any category theoretic definition? 00:11:40 "technically, a strong lax monoidal functor" 00:12:31 .. 00:12:39 also i rethought my definition of a free applicative 00:13:17 data FreeA where Pure :: a -> FreeA t a; (:<*>) :: FreeA t (a -> b) -> t a -> FreeA t b 00:13:51 you then have some data constructor t providing you with your fundamental actions 00:14:50 help how do I define a function that constructs a value with type FreeA t a 00:15:40 well, Pure :: a -> FreeA t a would be one... 00:16:20 another would be (Pure id :<*>) :: t a -> FreeA t a 00:16:55 the latter is how you would normally convert a value of type t a 00:17:35 ah right I was confusing something with something else. 00:18:15 oops 00:18:19 -!- oerjan has quit (Quit: Needs reboot). 00:18:25 -!- MDude has joined. 00:22:02 -!- Nisstyre has quit (Quit: Leaving). 00:25:00 -!- Nisstyre has joined. 00:27:53 * kallisti steals oerjan's soul and casts Lightning Lvl 1,000,000 oerjan's body explodes into a fine bloody mist, because oerjan is only a Lvl 2 Druid. 00:31:11 -!- cheater has joined. 00:33:57 -!- elliott has quit (Ping timeout: 240 seconds). 00:36:34 -!- oerjan has joined. 00:38:50 * kallisti steals oerjan's soul and casts Lightning Lvl 1,000,000 oerjan's body explodes into a fine bloody mist, because oerjan is only a Lvl 2 Druid. 00:39:10 please don't do that. 00:40:01 i feel freaked out like ais523 when people say "damn you" to him 00:43:29 i don't think you could have possibly timed it worse, either. 00:44:54 dammit you're even afk, aren't you. 00:50:45 -!- oerjan has quit (Quit: Damn you.). 00:52:05 -!- PiRSquared17|afk has joined. 00:53:43 revert http://esoteric.voxelperfect.net/w/index.php?title=Language_list&curid=960&diff=26056&oldid=26045 plz 00:57:46 ...please undo/rollback? 00:59:16 -!- oerjan has joined. 00:59:59 oerjan: http://esoteric.voxelperfect.net/w/index.php?title=Language_list&curid=960&diff=26056&oldid=26045 01:00:17 rollback/undo it 01:00:38 PiRSquared17|afk: i'm not an admin so i cannot rollback, anyone can undo it though... 01:00:47 OK 01:01:11 I know what undo is BTW 01:01:19 I thought you were an admin 01:03:08 elliott certainly keeps joking about it 01:03:15 well, maybe not lately 01:04:00 How is http://esoteric.voxelperfect.net/wiki/Special:Listgrouprights an error? 01:04:29 -!- MDude has quit (Read error: Connection reset by peer). 01:04:54 well it says no such special page exists... 01:05:53 Like http://www.mediawiki.org/wiki/Special:ListGroupRights ... 01:06:04 It must be really old MediaWiki then 01:06:08 yes it is 01:06:51 -!- Jafet has quit (Quit: Leaving.). 01:07:30 -!- Jafet has joined. 01:10:59 -!- nys has quit (Quit: quit). 01:13:37 -!- MDude has joined. 01:14:34 -!- PiRSquared17|afk has changed nick to PiQuad. 01:19:17 instance Applicative FreeA t where pure = Pure; Pure f <*> Pure x = Pure (f x); fa <*> (ga :<*> xa) = Pure (.) <*> fa :<*> ga :<*> xa; fa <*> Pure y = Pure ($ y) <*> fa; 01:20:04 oh wait 01:20:46 *instance Applicative FreeA t where pure = Pure; Pure f <*> Pure x = Pure (f x); fa <*> (ga :<*> xa) = Pure (.) <*> fa <*> ga :<*> xa; fa <*> Pure y = Pure ($ y) <*> fa; 01:21:08 Who came up with the idea of a bulky transformer right in the plug? Those things block more than one slot... 01:22:18 -!- Jafet has quit (Ping timeout: 240 seconds). 01:24:46 :t ($ ($ ($ ?x))) 01:24:47 forall b b1 a b2. (?x::a) => (((((a -> b2) -> b2) -> b1) -> b1) -> b) -> b 01:30:48 -!- PiQuad has changed nick to PiRSquared17. 01:38:08 -!- derdon has quit (Remote host closed the connection). 01:44:17 -!- Jafet has joined. 01:58:50 -!- Jafet has quit (Ping timeout: 252 seconds). 02:02:43 -!- Jafet has joined. 02:17:24 `? mad 02:17:27 ​"But I don't want to go among mad people," Alice remarked. "Oh, you can't help that," said the Cat: "we're all mad here. I'm mad. You're mad." "How do you know I'm mad?" said Alice. "You must be," said the Cat, "or you wouldn't have come here." 02:27:01 -!- MDude has quit (Quit: later chat). 02:27:15 -!- MSleep has joined. 02:43:52 kallisti, update 02:50:36 -!- itidus20 has joined. 02:53:39 -!- itidus21 has quit (Ping timeout: 252 seconds). 02:55:19 oerjan: Do you know if there is such thing as continuation semiring? 02:56:19 no idea 02:56:58 i cannot say i recall ever seeing those two concepts in the same context 03:07:32 Well, I was thinking of the semiring of multimanas in Icosahedral RPG and see maybe it is like ((Five -> Natural) -> Natural) because you have a function that, for each prime mana, tells how many copies of that multiplied together, and then how many of each mana is added together. 03:07:34 -!- itidus20 has left ("Leaving"). 03:08:55 -!- itidus20 has joined. 03:09:18 -!- itidus20 has left. 03:11:16 -!- itidus20 has joined. 03:11:57 Does this seem anything to you? 03:12:08 -!- itidus20 has quit (Client Quit). 03:12:42 -!- itidus20 has joined. 03:14:40 isn't that just summing a map over the list of all Five's? 03:15:00 In ((a -> r) -> r) like what I have above, I notice that the (r) I have is semiring and the (a) is a bounded type (so you can check all of them). 03:15:07 -!- itidus22 has joined. 03:15:34 oerjan: Yes, I suppose so. But I noticed the similarity to type of continuation monads 03:17:17 -!- itidus20 has quit (Ping timeout: 248 seconds). 03:19:17 > sum $ map (ord * ord + ord) ['a'..'e'] 03:19:18 49510 03:19:33 something like that? 03:20:04 oerjan: I don't think so? 03:20:09 that's just using lambdabot's Num n => a -> n instances 03:20:17 I know that 03:20:48 But that isn't what I was trying to say 03:20:52 i don't see how else you'd want to treat it as a semiring 03:21:37 -!- itidus22 has changed nick to itidus21. 03:22:12 -!- itidus21 has quit (Quit: Leaving). 03:22:14 I can try to explain better. Manas make a monoid, you multiply manas together and it is commutative. There are five prime manas (named 'w', 'u', 'b', 'r', and 'g'). For example, (w), (1), (wwwb), (wubrg) are manas. 03:23:00 And then the sum of zero or more manas is called multimana. For example, (2w+1), (3ggr+5b+uu), etc 03:23:07 Now do you understand? 03:24:26 well ok i don't really think ((Five -> Natural) -> Natural) is the type of multimana 03:24:30 (These are the manas in Icosahedral RPG; they are different from manas in Magic: the Gathering.) 03:25:00 hm or... 03:25:35 oerjan: OK. I understand how that type cannot be used to check how much mana you have and stuff, but it still seems mathematically valid to me. Explain what you think it is? 03:25:51 is the Five -> Natural type supposed to be some number assignment to each prime mana, which you then substitute into the expression? that could work i guess. 03:26:44 it would be a semiring homomorphism from your expressions to such functions 03:27:05 oerjan: Yes, that is what I mean; (Five -> Natural) tell you how many of each prime mana you have multiplied together. And it is commutative multiplication. 03:27:17 ...no that is not what i mean... 03:27:41 oerjan: Well, it is what I mean, though. 03:28:10 so, Five -> Natural represents a mana then. 03:28:18 oerjan: Yes. 03:29:36 hm ok, i guess that sort of works... except that there are an infinite number of manas, so you cannot really calculate anything useful that involves more than finitely many of them. 03:30:00 -!- DCliche has joined. 03:30:05 oerjan: Yes, that is what I was saying too 03:30:27 basically ((Five -> Natural) -> Natural) doesn't tell you which arguments you need to check 03:33:26 -!- Klisz has quit (Ping timeout: 252 seconds). 03:36:06 -!- itidus21 has joined. 03:36:25 Yes; you cannot actually figure out the manas you have with that. But it should still be mathematically valid to have, I think? You could still have infinite sums, but supernatural numbers do too (except that supernatural numbers can have a prime number to the power of infinity) 03:37:11 sure, it would be as mathematically valid as set theory functions 03:39:57 -!- itidus21 has left ("Leaving"). 03:40:50 And continuations are also using a type like that, I think? 03:41:40 well yes. it's Cont Natural Five 03:43:13 -!- itidus21 has joined. 03:44:05 oerjan: Yes. Like that. I think, for (Cont r a) in general it will be (Bounded a, Eq r, Semiring r) and in this case the types have that? I don't really know though, about other cases with these constraints, or without, or whatever, but something seem to me 03:44:10 i'm not sure that there is any interesting connection in semantics, though 03:45:12 -!- itidus20 has joined. 03:45:19 i'm not convinced you can actually compute the product of two ((Five -> Natural) -> Natural) elements 03:45:31 and have it halt 03:45:41 oh hm well 03:45:50 actually i guess you can 03:46:38 since given a Five -> Natural function, there are only finitely many pairs that sum to it 03:47:46 -!- itidus21 has quit (Ping timeout: 255 seconds). 03:48:50 -!- copumpkin has quit (Ping timeout: 252 seconds). 03:49:12 it's a kind of convolution 03:49:15 -!- copumpkin has joined. 03:49:34 -!- itidus20 has quit (Ping timeout: 255 seconds). 03:54:02 -!- MSleep has quit (Read error: Connection reset by peer). 03:55:08 -!- MSleep has joined. 03:57:08 Yes, I think so 04:01:36 -!- Vorpal has quit (Ping timeout: 248 seconds). 04:02:01 -!- itidus22 has joined. 04:02:24 -!- itidus22 has changed nick to itidus21. 04:03:45 -!- MDude has joined. 04:06:06 -!- MSleep has quit (Ping timeout: 240 seconds). 04:10:15 -!- MDude has quit (Read error: Connection reset by peer). 04:10:30 -!- MSleep has joined. 04:11:04 -!- MSleep has quit (Read error: Connection reset by peer). 04:11:40 -!- MSleep has joined. 04:12:57 -!- MDude has joined. 04:15:03 -!- MDude has quit (Read error: Connection reset by peer). 04:15:22 -!- MDude has joined. 04:16:26 -!- MSleep has quit (Ping timeout: 240 seconds). 04:19:44 bouncy 04:20:03 he's alive! 04:21:05 did I miss something? 04:21:26 no, absolutely nothing. don't you dare to read backscroll. 04:21:46 -!- copumpkin has quit (Ping timeout: 240 seconds). 04:22:10 -!- copumpkin has joined. 04:23:10 ok, there was this: instance Applicative FreeA t where pure = Pure; Pure f <*> Pure x = Pure (f x); fa <*> (ga :<*> xa) = Pure (.) <*> fa <*> ga :<*> xa; fa <*> Pure y = Pure ($ y) <*> fa; 04:24:16 and someone said something about an update. 04:25:54 * kallisti squints his eyes to read all the funny symbols. 04:26:08 seriously need to get VISION AIDING THINGS. 04:26:26 with x-rays! 04:26:42 okay yes... all of these things make sense. 04:26:44 >_> 04:27:51 as a reminder, data FreeA where Pure :: a -> FreeA t a; (:<*>) :: FreeA t (a -> b) -> t a -> FreeA t b 04:28:31 yes 04:28:43 oh and some infixl 4 :<*> to get the syntax to fit 04:28:56 I don't really understand the purpose of the t though 04:29:20 the t is the data type providing your primitive actions 04:29:26 other than Pure 04:30:18 basically every element looks like Pure f :<*> ta :<*> tb :<*> ... :<*> tz 04:30:39 ah okay it just makes it... type correctly. 04:31:05 -!- elliott has joined. 04:31:07 -!- Jafet1 has joined. 04:31:23 oerjan: hi 04:31:26 hello 04:31:27 Jafet1: hi 04:31:43 i must say i have never tried this 17:00-04:31 sleep pattern before. 04:32:09 i may have. 04:32:15 psh, that's 7 months ago for me. 04:32:19 *that's so 04:32:20 not very often, though. 04:32:44 it could be worse; i've woken up well-rested not all that long before dawn 04:33:08 elliott: you couldn't possibly match my insane-sleep-patterns hipster cred. 04:33:19 -!- Jafet has quit (Disconnected by services). 04:33:22 -!- Jafet1 has changed nick to Jafet. 04:33:31 kallisti: dude, "sleeping every other day" is my /standard/ pattern 04:33:44 Hi, I'm totally not impersonating Jafet. 04:33:56 Jafet: good, good 04:33:58 hi not Jafet 04:33:58 Jafet: WHY SO UNAFFILIATED 04:34:12 kallisti: there is no way you have had crazier sleep patterns than me 04:34:40 17:24:10: i think station v3 has a sort of gilligan's isle sort of plot except it does seem they are always endeavouring to get from A to B 04:34:41 17:24:40: as for the characters they would all look perfectly at home in commander keen 04:34:41 17:28:12: ... oh i think i see now.. im just in complete confusion over all the events since im just reading from a random position 04:34:41 17:28:36: thus giving the illusion that lots of stuff was all miraculously invented at once 04:34:41 17:30:00: kind of like how video games seemed amazing all at once, despite requiring the discovery of electricity, the invention of computers, the invention of television, the invention of the microchip, 04:34:44 17:35:40: the invention of people. 04:34:46 17:35:56: the invention of money 04:34:48 17:36:14: life too 04:34:50 17:36:22: eyes 04:34:52 17:36:23: hands 04:34:54 17:36:33: light 04:34:56 17:36:59: hmm 04:34:58 this is beautiful 04:35:04 oh, it was even better when i read those two kallisti lines as itidus21 04:35:29 I apparently have the most chameleon name. 04:35:37 blending in with everyones nicks. 04:35:42 kamellisti 04:35:47 18:37:13: When did freshmeat.net change to freecode.com??? 04:35:50 Gregor: Woooooow. 04:36:10 kallisti: well it's the same length :P 04:36:15 and has i and t 04:36:52 Oh great, another Humble Bundle. 04:36:52 elliott: well I certainly don't skip days when I have no reason to, but often it happens that I need to be awake at a certain hour and not sleeping is the way to do it. But as I've said I've more or less maintaining any kind of daily interval of sleep you could imagine. 04:37:01 elliott: dunno I think it's happened a few times with other nicks as well. 04:37:02 I'm starting to DREAD them. 04:37:26 its the dragon ball z effect... when dragonball z starts all the dragon ball characters and backstories have been established 04:37:30 creepy bundles 04:37:39 kallisti: What I mean is: When I don't do anything to control my sleep schedule, I either sleep an hour or two later every early morning, or sleep once every other day. 04:37:46 leaving everyone just to beat the proverbial snot out of each other 04:37:58 itidus21: :D 04:38:30 NightSky is an atmospheric, 2D physics puzzle platformer. The player uses acceleration, gravity, and motion to navigate a glowing sphere through over 130 unique and picturesque levels. 04:38:30 hmm, this looks nice, and Idon't have Super Meat Boy 04:38:33 * oerjan flings some proverbial snot at itidus21 04:38:37 itidus21: nah man dbz is all about humor and nuanced character development and plot twists. 04:38:38 or Cave Story+ 04:38:43 -!- PiRSquared17 has changed nick to Guest1234. 04:38:46 even though I doubt I could bring myself to play it over the original translation 04:38:47 -!- Guest1234 has changed nick to Guest12345. 04:38:56 -!- Guest12345 has left. 04:39:02 so i... guess i'll buy it sometime 04:39:07 What's Cave Story? 04:39:19 cave story is made by pixel 04:39:31 cave story is made by pixels 04:39:37 shachaf: An indie platforming game released in 2004 made by a single Japanese guy. 04:39:39 which, in the wrong context, really doesn't add much 04:40:53 elliott: According to an interview, he's married. 04:41:03 lol. 04:41:08 shachaf: i see wut u did ther!!!!!!!!!!!11111111124 04:41:14 * shachaf wonders whether he will ever tire of the "purposely misinterpret people" game. 04:42:25 its a base form of humor, but it is humor 04:42:35 It's the highest form of humour. 04:42:59 technically being in australia i should spell it with a u 04:43:07 shachaf: Drugs are bad. 04:43:12 (See, I deliberately misinterpreted you!) 04:43:14 (HAHAHAHAA;] 04:43:16 ; 04:44:59 oerjan: an Agora quote, from the thread "On dummy player records in the CotC DB": These are the known unknowns, how are you labeling the unknown unknowns? "ehird", mostly. 04:45:17 elliott: good show 04:45:19 AGORA NOM! 04:45:23 Tommy is a programmer, probably the best programmer ever. He is the one and only programmer for Super Meat Boy. He travels the world searching for other programmers to kill and absorb their powers 04:45:24 MY FAVOURITE GAME! 04:45:26 (*G., technically.) 04:45:33 this is a good bio entry. 04:45:37 (But oerjan is too OLD for that.) 04:45:43 kallisti: yes.... that's good 04:45:49 shachaf is converted already? 04:45:51 (He remembers the philosopher post-redesign.) 04:45:52 *pre- 04:46:23 oerjan: did the lists prepend "DIS:"/"BUS:"/"OFF:" prefixes in your days??? 04:46:49 ehhh, the eff have been replaced by red cross in the humble bundle? 04:46:51 oerjan: TOTALLY. AGORA NOM NOM NOM. 04:47:01 elliott: http://www.youtube.com/watch?v=W-NG4f7O1vQ 04:47:03 listen to this guys voice. 04:47:18 I don't know how I feel about it. Sometimes it's annoying, other times it's funny. 04:47:27 other times it sounds normal. 04:47:42 elliott: yes they did 04:47:54 well, possibly not DIS: 04:48:03 hmph, now I have to try and remember whether or not Red Cross are worth giving money to or not 04:48:25 oerjan: hmm, but every forum was public back In The Day, right? I guess I don't actually know when tue came along 04:49:13 elliott: depends how far back, discussion was explicitly made non-public so people didn't have to read it 04:49:39 oerjan: haha, well, you'd have a hard time playing without reading a-d these days 04:49:51 eek 04:50:00 oerjan: well, not really 04:50:15 oerjan: but you'd force everyone to cfj to let you know something you did failed :P 04:50:21 rather than just pointing it out, for one 04:50:36 heh 04:51:37 WHY IST HAT MEGAUPLOD SONG STUCK IN MY HEAD 04:54:39 Punishment for reading the Internet. 04:55:00 So doun't read the Internet. That'll soulve everything. 04:55:08 * elliott logs on to the @ternet. 04:55:24 elliott: Enjoy your time in fantasy-land. 04:55:44 Also, I'm told by an unreliable source that drugs are bad. 04:56:01 -!- elliott has quit (Quit: SURFIN' THE @TERNET WAAAVES, MAAAN). 04:57:21 the afternet 04:58:01 -!- elliott has joined. 04:58:06 "In 1954, Olds and Milner found that rats with metal electrodes implanted into their nucleus accumbens as well as their septal nuclei repeatedly pressed a lever activating this region, and did so in preference to eating and drinking, eventually dying of exhaustion." 04:58:12 levers: the ultimate high 04:58:36 20:58:41: fizzie: man I really wish Perl 6 were a branched language and perl 6 were just some basic improvements to perl 5. 04:59:01 kallisti: You sure do complain about Perl 6 a lot without actually providing any complaints other than a lack of some kind of "Perl essence". 04:59:16 elliott: dude, you don't know about the Perl essence? 04:59:19 -!- oerjan has quit (Quit: Good night). 04:59:29 RIGHT AS I WAS ABOUT TO RESPOND TO OERJAN 05:00:03 21:04:57: @tell ais523 elliott: the most obvious case is if there's only possibly one reference to the input array [...] <-- congratulations on reinventing the Clean language 05:00:03 well if you /enforce/ it with uniqueness typing it works just fine of courser, but the most comfortable notation to use that is something like do notation... so you might as well just use the equivalent ST :P 05:00:07 *course, 05:00:27 21:13:34: ais523: I was going for data EvenList a = Nil | Cons a a (EvenList a) <-- type EvenList a = [(a,a)] kthxbye 05:00:28 Yes, yes. 05:00:37 I thought of that but decided to be more explicit. 05:00:57 elliott: my main complaint is that it doesn't feel very coherent. 05:01:24 kallisti: I'm going to go out on a limb here and suggest that you've spent about 1% of the effort you have learning Perl 5 on learning Perl 6. 05:01:33 -!- Jafet has quit (Quit: Leaving.). 05:01:55 elliott: I'm offended that you would say such a thing. 05:02:24 As someone who's spend 200% of the effort I have learning Perl 5 on learning Perl 6, I can say that Perl 6 definitely seems coherent to me. 05:03:04 I'm technically a committer to Perl 6! 05:03:12 I had the commit bit forced onto me. 05:04:04 shachaf: Perl 6 has a repository? 05:04:15 github.com/perl6 05:04:36 That's, like, 50 repositories. 05:04:55 FVO 50 ET 24 05:05:10 And apparently I have commit access to all of them? 05:05:57 shachaf: Quick, destroy Perl 6! 05:06:25 23:51:24: data FreeA where Pure :: a -> FreeA a; (:<*>) :: (FreeA (a -> b)) -> FreeA a -> FreeA b 05:06:25 23:52:28: um i'm not sure if that's quite right, but something like that; anyhow the point is to construct something which obviously allows _just_ the Applicative operations 05:06:26 23:53:17: that thing above is probably too simple 05:06:28 I think that's fine. 05:06:35 elliott: Better: I will sneak in insidious commits that will slow their development pace to a crawl, forever keeping Perl 6 in the realm of vapourware. 05:06:38 ...Wait. 05:06:54 eval p _ (Pure a) = a; eval p a (f :<*> x) = a (eval p a f) (eval p a x) 05:07:01 shachaf: Dun dun DUNNNNNN 05:07:58 00:38:50: * kallisti steals oerjan's soul and casts Lightning Lvl 1,000,000 oerjan's body explodes into a fine bloody mist, because oerjan is only a Lvl 2 Druid. 05:07:58 00:39:10: please don't do that. 05:07:58 00:40:01: i feel freaked out like ais523 when people say "damn you" to him 05:07:59 00:43:29: i don't think you could have possibly timed it worse, either. 05:08:00 00:44:54: dammit you're even afk, aren't you.00:50:45: -!- oerjan has quit (Quit: Damn you.). 05:08:16 @tell oerjan You realise you just guaranteed that PH will say something like that to you sometime. 05:08:16 Consider it noted. 05:10:17 04:21:05: did I miss something? 05:10:17 04:21:26: no, absolutely nothing. don't you dare to read backscroll. 05:10:18 whoops 05:10:21 kallisti: don't look a few lines up 05:11:16 elliott: I have no clue what I did. 05:11:31 Hey, I told you not to look a few lines up. 05:12:12 but I did! Damn you. 05:12:32 I'm not sure what you mean by "I have no clue what I did", anyway. 05:13:13 elliott: you're correct that I haven't spent as much time learning perl 6, however, I /have/ actually read the spec. 05:13:38 I certainly can't fault it for some interesting language design ideas. 05:14:03 but I feel it suffers from... syntactic overload. 05:15:02 unlike Perl 5. 05:15:49 indeed. 05:16:04 it was sarcasm. 05:16:04 perl 5 is well-balanced compared to perl 6. 05:16:08 yes I know. 05:16:17 * elliott disagrees. 05:16:23 I did that thing where I counter your sarcasm by taking it seriously. 05:16:26 you know that thing. 05:16:30 Perl 5 has a ton of syntactic space devoted to useless things. 05:16:41 Perl 6 has a ton of syntactic space devoted to useful things like higher-order operations. 05:16:56 perl 6 has a ton of syntactic space devoted to fixing weird issues. 05:17:16 the whitespace significance in particular. 05:17:37 * elliott shrugs; this is not goign to be productive. 05:17:39 *going 05:17:41 Let's split the difference and all use Perl 5.5. 05:19:37 The spec basically reads: "in Perl 6 whitespace is more or less optional... (next section) now here is how perl 6 is highly dependent on whitespace when parsing." 05:20:50 "In general, whitespace is optional in Perl 6 except where it is needed to separate constructs that would be misconstrued as a single token or other syntactic unit. (In other words, Perl 6 follows the standard longest-token principle, or in the cases of large constructs, a prefer shifting to reducing principle. See "Grammatical Categories" below for more on how a Perl program is analyzed into tokens.)" 05:20:52 Not quite the same thing. 05:21:28 WHITESPACE IS STUPID LOL 05:21:57 elliott: by "next section" I was referring to the next section and not the same paragraph. 05:22:08 where it goes into the gory details of operator parsing and whitespace 05:22:15 kallisti: I was saying that it does not say "in Perl 6 whitespace is more or less optional". 05:22:29 It says "it's optional except where it is needed to separate constructs", which is exactly what the next section explains. 05:23:23 mmk. I'll remember the exact wording next time to avoid English-lawyering. 05:23:53 It's awesome when you can dismiss proving your statements unreasonable as lawyering. 05:23:56 It's so convenient! 05:24:45 except they weren't unreasonable I just used a wording which is slightly different but more or less (uh oh) means the same thing. 05:25:17 *sigh* 05:25:44 You seem to dismiss all disagreements of meaning as syntactic lawyering. 05:26:22 okay. 05:28:19 I'm not even going to attempt to refute what I seem to do. 05:31:31 elliott: Stop arguing about semantics. We're talking about the important stuff here. 05:31:45 shachaf: Yes, the lexical syntax of comments. 05:32:02 comments? 05:32:10 http://www.haskell.org/haskellwiki/Wadlers_Law 05:32:15 *http://www.haskell.org/haskellwiki/Wadler%27s_Law 05:32:17 oh right that. 05:44:09 obviously syntax isn't important at all. 05:45:07 I'm sure if Haskell were exactly the same semantically except every lexeme were a ROT13'd counterpart, it would be just as expressive and intuitive. 05:45:23 er not rot13 05:45:31 the other one, with the bigger number. 05:45:33 :P 05:48:10 Well, Haskell does support layout and non-layout mode, and literate programs can use > or \begin{code} and in both of these cases you can mix them in a single program. (I prefer non-layout mode with > for literate programs, but they are good that they support the other way too) 05:50:17 Unattributed quotation is: "A good programmer can write FORTRAN in any language; a great one could write Haskell." 05:50:29 elliott, kallisti update 05:51:32 writing X in Y is usually a bad idea. 05:54:13 Can 3*t ever be negative where t is a positive two's-complement 32-bit integer? Can 3*t ever be positive where t is a negative two's-complement 32-bit integer? 05:55:29 (And where 3*t is treated as a positive two's-complement 32-bit integer, of course.) 06:00:28 -!- augur has quit (Remote host closed the connection). 06:12:34 -!- hagb4rd has quit (Ping timeout: 252 seconds). 06:16:40 -!- hagb4rd has joined. 06:23:09 elliott: I think so 06:23:21 but I won't bother figuring it out properly 06:23:30 Woot 06:25:24 elliott, tumblrupdate 06:25:37 hmm, positive->negative is trivial, just choose a positive number larger than 0x80000000/3 06:30:38 * elliott has restored to Stack Overflow to answer a question :-( 06:32:08 !c int main(){for(char t=-128;;++t)if(t<0&&(char)(3*t)>=0)return printf("%d\n",t);} 06:32:13 ​-85 06:32:41 Deewiant: THAT'S JUST CHARS, YOU CAN'T PROVE ANYTHING 06:33:07 !c int main(){for(int t=INT_MIN;;++t)if(t<0&&(char)(3*t)>=0)return printf("%d\n",t);} 06:33:08 Does not compile. 06:33:30 Deewiant: haha, does not even compile! 06:33:30 !c int main(){for(int t=-2147483648;;++t)if(t<0&&(char)(3*t)>=0)return printf("%d\n",t);} 06:33:33 ​-2147483648 06:33:40 !c int main(){for(int t=-2147483648;;++t)if(t<0&&3*t>=0)return printf("%d\n",t);} 06:34:06 ​-1431655765 06:34:16 Deewiant: ;__; 06:34:21 im cry 06:35:21 -!- augur has joined. 07:01:57 -!- DCliche has quit (Quit: You are now graced with my absence.). 07:04:09 i could have answered that question without the program. it is VERY OBVIOUS 07:04:34 I made a "ReadthisT" monad transformer 07:10:30 Hmm, Stack Overflow was... surprisingly helpful. 07:11:29 what is sgeo talking about every time he says update? homestuck? 07:12:08 quintopia: I wondered about that too 07:12:28 quintopia: He's talking about the updates... 07:12:32 of life. 07:12:37 auuuuuuuuuum 07:12:40 kallisti: Right? 07:19:14 -!- const has quit (Ping timeout: 245 seconds). 07:24:52 -!- variable has joined. 07:31:09 map_surface.c:17:2: error: missing sentinel in function call [-Werror=format] 07:31:16 2011 :') 07:31:39 -!- MDude has quit (Read error: Connection reset by peer). 07:33:02 WTF 07:33:12 Deewiant: WHY IS "int *foo = foo;" LEGAL 07:33:22 AND NON-WARNING-PRODUCING 07:37:48 $ echo 'void f(void) { int *foo = foo; }' | gcc -xc - -o test.o -c -Wuninitialized -Winit-self 07:37:48 : In function ‘f’: 07:37:48 :1: warning: ‘foo’ is used uninitialized in this function 07:38:03 Rather weird that -Winit-self isn't enabled by -Wall/-Wextra like plain -Wuninitialized is. 07:38:33 fizzie: Guess what's going into the mcmap Makefile 07:38:39 Can't immediately invent any real use cases for self-initialization. 07:38:50 It's always UB, isn't it 07:38:53 Oh 07:38:55 Not for static variables 07:38:59 But for locals 07:39:18 I suppose int *foo = bar(&foo) might SOMETIMES by useful? 07:40:01 Yes it might sometimes be useful like that. 07:40:02 I... guess, but that wouldn't cause a warning anyway, since the &foo expression is not using the uninitialized value. 07:40:24 Welp 07:40:44 By the by, is it legal to cast a pointer to a struct to a pointer to a prefix of it? 07:40:46 And then use that. 07:40:57 Where prefix = prefix of the members, same type and all 07:41:08 e.g. {int a,b,c;unsigned d;} vs. {int a,b,c;unsigned d;char *foo;} 07:41:37 Only if the structs are part of a single union declaration somewhere (anywhere) in the code. :p 07:41:51 fizzie: Seriously? 07:41:54 Should that kind of prefixing be allowed in LLVM? 07:41:55 At least ISTR that the "initial common subsequence" rule was only valid for structs in a union. 07:42:07 fizzie: OK, but surely it has to be a union value for that to be OK... 07:42:15 No, I don't think it has to be. 07:42:21 fizzie: What. What. 07:42:22 The structures just need to be in an union somewhere. 07:42:24 fizzie: But... 07:42:26 But why. 07:42:30 fizzie: OK, better question: 07:42:35 That's the impression I've gotten, anyway; I'd have to check if it's actually like that. 07:42:38 struct bar {struct foo foo; ...} 07:42:46 Can I cast (struct bar *) to (struct foo *) and do the obvious? 07:42:52 Yes, that you can do. 07:42:59 OK, good :P 07:43:05 Because casting to the first member is legal. 07:43:40 (And back.) 07:43:54 -!- hagb4rd has quit (Quit: Nettalk6 - www.ntalk.de). 07:44:00 (The context is that 5 out of 8 functions in struct map_mode are shared between all flat maps, but flat_mode is duplicating the other 3, and it's ugly, so I'm going to invert me some controls.) 07:45:06 See, if we were writing C++, you'd just inherit it. 07:45:30 fizzie: And this is composition instead, so ha 07:45:34 C: More OO than C++ 07:51:49 Okay, the "common initial sequence" rule in C99 in fact does mention "the union object". And even if the wording is a bit unclear (it has some fluff about "common initial part of any of them anywhere that a declaration of the completed type of the union is visible"), the intent is clearly just to allow the usual union event { struct { int type; } anyevent; struct { int type; int blurb; } blarbevent; ... }; ... switch(u.anyevent.type) { case BLARB: frob( 07:51:49 u.blarbevent.blurb); } sort of thing. 07:53:26 Right. 07:56:05 I suppose some people have just then reasoned from that that since the compiler can't layout 'struct blarbevent' differently within the union object than it does elsewhere, it's still legal for any 'struct blarbevent' to access 'type' via a struct anyevent * as long as the union declaration exists somewhere. 07:56:14 But that's called LOGIC, and there's no place for THAT in C. 07:56:39 fizzie: It can't? 07:56:44 Why can't it lay it out specially there. 07:58:10 Because void foo(struct blarbevent *p) { ... } can't know whether it should use the special union layout or not, for the calls in struct blarbevent justblarb; union event eww; foo(&justblarb); foo(&eww.blarbevent); 07:58:21 Because there's two conceptions of what "C" is: what ISO C permits, and what you can get away with on common compilers. 07:58:26 fizzie: It could pass a flag! But okay :P 07:59:55 Also obviously on non-DS9K the initial sequence rule works everywhere. But I guess it's generally speaking better if you just cast to the first member, since that's kosher. 08:00:04 I'm of the opinion that the ISO C spec is written by madmen, incidentally. 08:02:49 Also weirdly, the ISO webstore was made up to look like C1x was out already, even though from what I've managed to gather it's not, at least the WG14 page doesn't say anything in the 'news' section, nor the wikipedia article. 08:03:18 It's just that http://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=57853 "ISO/IEC 9899:2011 .. Stage: 60.60 (2011-12-08) .. 60.60: International Standard published" 08:03:25 I guess it might be out? 08:03:31 2011-12-08 is kinda recent. 08:03:59 fizzie: Weird. 08:04:09 fizzie: It's not been on proggit or anything. 08:04:20 (The DISPENSERS OF SUPREME TRUTH.) 08:06:05 Yes, or ~anywhere else that I could find, which is what is confusing me. 08:07:53 fizzie: Maybe they just finalised it but haven't actually super-duper-officially ratified it yet, and it's /published/ but not finalised? 08:08:05 i.e. They're publishing it in preparation for saying "it's finalised, everyone buy it now!". 08:10:19 I suppose it might be something like that, though the stage codes don't go any further than 60.60 (except for periodical-review and withdrawal paths). And it passed some sort of a national-body "final review" in October. But I guess they'd want it available before and not after the official "okay, here it is" announcement. 08:11:57 fizzie: Well, I'm not saying it's anything "official", I'm just saying that getting things into the system, division of work, etc. etc. means that their online store could perfectly well think it's Done(tm) before they actually ratify it. 08:17:04 All in all, it's also an indicator that it's probably going to be out soon. Maybe we'll even get a C11 instead of a C12, depending on how they date these things. 08:17:13 "ACTION 08:17:14 – 08:17:14 Convener 08:17:14 forward 08:17:14 the 08:17:14 WP 08:17:16 as 08:17:18 revised 08:17:20 in 08:17:22 -!- fizzie has left ("Leaving"). 08:17:36 Best paste ever. 08:17:43 Every word on one line. 08:18:08 :D 08:18:10 fizziew: Haven't you heard of /flushq, NOOB??? 08:18:26 Thank you; I was just about to ask about that. 08:18:32 -!- fizzie has joined. 08:18:38 :D 08:20:46 -!- zzo38 has quit (Remote host closed the connection). 08:20:48 Anyway, "DONE: ISO/IEC DIS 9899 was submitted to ITTF, and approved with no comments. The DIS will be forwarded to ITTF for final publication per ISO/IEC rules." -- from the WG14 Dec 7th meeting minutes. So I suppose it's coming. 08:21:31 No comments? 08:21:33 How boring. 08:21:56 Everyone wants a C11 and not a C12, mayhaps. 08:22:12 So what's the standard amoutn of time you have to wait before complaining that your bug is being ignored? 08:22:22 I commented 5 days ago and the guy went silent. :( 08:22:31 The silence of shame. 08:25:01 I submitted a libpurple patch two months ago, and someone promptly actioned on the item by setting the milestone of the trac ticket to "Patches Needing Review" the very next day. (After that, nothing has happened, but I guess it still counts as a response.) 08:27:58 fizzie: They're still trying to figure out how to apply it with Monotone. 09:10:30 -!- Jafet has joined. 09:16:11 -!- Jafet1 has joined. 09:18:39 -!- Jafet has quit (Ping timeout: 252 seconds). 09:20:17 -!- Jafet1 has changed nick to Jafet. 09:20:24 I'm still Jafet. 09:20:40 Jafet: I'm not. 09:20:58 That's a shame. The world needs more Jafets. 09:21:58 * elliott becomes Jafet. 09:34:19 fizzie: And just to check: *(struct foo *)ptr_to_bar = foostruct; is OK, right? 09:34:26 Er, hmm, it's actually 09:34:32 *(*struct foo**)ptr_to_bar = ptr_to_foo; 09:34:34 Argh 09:34:36 *(struct foo**)ptr_to_bar = ptr_to_foo; 09:34:38 where bar is like 09:34:45 struct bar { struct foo *etc; ... } 09:39:51 I... think there was something about all structure pointers having to have the same size and representation. But I think to be on the safe side that should be *ptr_to_bar = (struct bar *)ptr_to_foo; 09:42:43 (Assuming a struct foo *ptr_to_foo which actually points to a struct foo inside a struct bar.) 09:42:53 -!- Vorpal has joined. 09:46:03 Incidentally, earlier when you had "struct bar { struct foo foo; ... }", even though "struct bar *pb; ... struct foo *pf = (struct foo *)pb;" is legal, it might be slightly more self-documenting to just "struct foo *pf = &pb->foo;" instead. It'd also have the "doesn't need to be first member benefit", except that it doesn't if you're then later casting that struct foo * back to the struct bar *. 09:49:45 fizzie: I can't do that, though, because there's no one "struct bar". 09:49:49 It's ~generic~. :p 09:49:56 -!- Vorpal_ has joined. 09:50:00 -!- Vorpal has quit (Ping timeout: 268 seconds). 09:51:33 "But I think to be on the safe side that should be *ptr_to_bar = (struct bar *)ptr_to_foo;: 09:51:45 (Assuming a struct foo *ptr_to_foo which actually points to a struct foo inside a struct bar.) 09:51:53 fizzie: Um, I think you've misread what I asked./ 09:52:02 struct quux { struct argh *etc; ... more members ... } 09:52:08 I have a struct quux *eh. 09:52:14 And a struct argh qqq. 09:52:15 erm 09:52:17 And a struct argh *qqq. 09:52:19 I want to do 09:52:29 *(struct argh **)eh = qqq; 09:52:31 Is that allowed? 09:53:17 I don't think that makes any sense. *(struct argh **)&eh = qqq; might. 09:53:56 But it's not really any different that eh = (struct quux *)qqq; except it's a "reinterpret the pointer" thing instead of a "cast the pointer" thing. 09:54:21 fizzie: Uh, what? 09:54:39 Ohhh, there's a *pointer* at the start. 09:54:42 Not a member. 09:54:51 fizzie: I'm just asking whether I can assign to the first member of a struct (which is a pointer) by casting it to the type pointer-to-[member]. 09:55:11 Right, right, right; I kept reading that as struct quux { struct argh etc; ... more members ... } instead. 09:56:16 Yes, given struct quux { struct argh *etc; ... }, you can cast a struct quux * into a struct argh **; it's still a pointer to the first member. 09:56:45 Though with just this little context it's not entirely clear why not just eh->etc = qqq then. 09:56:59 fizzie: I can't do that, though, because there's no one "struct bar". 09:56:59 It's ~generic~. :p 09:57:13 It's actually a void *eh, that just points to a struct with a (struct argh *)-typed first member. 09:57:20 Any struct, rather. 10:10:20 Hrm. At least it will work. I'm trying to figure out if DS9K can make it not work, due to involving a void * in there. The standard's wording for the conversion rule is: "A pointer to a structure object, suitably converted, points to its initial member, and vice versa." So it's mostly about whether "struct foo { anytype x; ... }; struct foo f; void *pg = &g; anytype *x = pg;" is "suitably converted". 10:11:28 Or whether you actually only legally can "struct foo f; anytype *x = (anytype *)&f;" where the compiler knows it's converting from the structure-pointer to the first-member pointer. 10:11:57 fizzie: Ugh. 10:12:17 There can't be any padding at a beginning of a struct, so it's somewhat hard to figure out a way to make it not work. Except maybe by having a really weird 'void *'. 10:12:20 Aaaa I am mere hours into my Stack Overflow experience and already have 48 reputation and an accepted answer. 10:12:29 Must... escape... 10:13:15 E.g. a "void *" format which is a concatenation of two parts, first half used for structure pointers and the second one used for any other object pointers. With that sort of thing it'd go wrong. 10:13:36 fizzie: Surely that's not legal. 10:14:29 Well, it fulfills the main rule for void *, which is "A pointer to any object type may be converted to a pointer to void and back again; the result shall compare equal to the original pointer." 10:15:35 fizzie: :( 10:17:44 -!- hagb4rd has joined. 10:17:54 -!- Ngevd has joined. 10:18:34 If all structure pointers are alike, you could "struct foo { anytype x; ... }; struct foo f; void *pg = &f; anytype *px = (anytype *)(struct { anytype x; }*)pg;", but that's the most ridiculous thing ever. 10:19:25 fizzie: Weeeell, yes, but surely there's some sort of in-between condition you can rely on? 10:20:08 E.g. a "void *" format which is a concatenation of two parts, first half used for structure pointers and the second one used for any other object pointers. With that sort of thing it'd go wrong. 10:20:17 fizzie: I should probably note that both pointers involved here are to structs. 10:21:17 Well, no, if the first member is a pointer to struct, then pointer-to-the-first-member is a pointer to pointer to struct, which might have a completely different representation than pointer to struct. 10:21:53 Fair enough. 10:22:05 I'm changing it to be just an included struct so that everything will work out fine. :p 10:22:10 Also less indirection overhead!! 10:25:37 I'm still not entirely sure a messed-up void * like that is legal; there's one rule that says "pointer to an object type may be converted to a pointer to a different object type [, and if resulting pointer is "correctly aligned" for the referenced type,] when converted back again, the result shall compare equal to the original pointer." 10:26:03 And void * is a pointer to an (incomplete) object type, and must have no alignment restrictions. 10:26:10 fizzie: Weeell, it works. :p 10:26:33 I'll care more about fixing it if someone comes up with a way to avoid it, or machines that break it actually start existing. 10:26:52 (struct foo *) -> (void *) -> (firstmember *) is notw hat I would call a terribly controversial conversion. 10:28:37 Well, no. And anyway (struct foo *) -> (char *) -> (firstmember *) is required to work, so it'd take a really perverse (if even legal) implementation to make the version with void * not work. (There may not be padding at start of a structure, and converted char * always points "to the lowest addressed byte of the object".) 10:29:04 I don't think you should turn it into a char * though. :p 10:29:23 *not what 10:29:30 fizzie: I should just remove all the data structure and use (char *) instead. 10:29:35 It'll be like Tcl, but it's C, so it'll be FAST. 10:30:00 You could then implement "types" with some sort of macros that operate on char *s. 10:31:09 #define PLAYER_Y(p) (((p)[2] << 8) | (p)[5]) 10:31:27 (That was supposed to be bytes 2 and 3, but it's even better like that.) 10:33:18 mozart indeed sounds like bubblegum.. dunno one of my favourite comp. is musorgsky: powerful. epic drama spending some creeps from time to time.. |ve heard this one before (one of few nice classic themes used as bgmusic in froniert elite II :P i love it --> http://www.youtube.com/watch?v=eILjzkiTSbE&fmt=18 ..gregor knowing that you|re into classic..may i ask which is your favourite one, if there is? 10:33:48 fizzie: Macros??? 10:33:53 fizzie: Uh, THOSE AREN'T STRINGS. 10:34:05 char *PLAYER_Y = "(p) -> (((p)[2] << 8) | (p)[5])"; 10:35:10 gregor: chopin_ 10:37:03 hagb4rd: Pachelbel is Gregor's favourite composer. 10:37:35 RIGHT GREGOR? 10:40:18 elliott:ok thx .. but i|ve made plans to somehow start a conversation with gregor :P all my plans lyin on the ground now 10:40:32 hagb4rd: But I was lying. 10:40:34 You still can!!! 10:40:39 Gregor actually hates Pachelbel. 10:41:02 hehe..im joking..half joking 10:47:54 * elliott buys Yet Another Humble Bundle 11:00:07 -!- monqy has quit (Quit: hello). 11:29:52 Vindum, vindum vef darraðar, þars er vé vaða vígra manna! 11:29:52 Látum eigi líf hans farask; eigu valkyrjur vals of kosti. 11:32:22 Wind we, wind swiftly 11:32:22 Our warwinning woof. 11:32:22 sword-bearing rovers 11:32:22 To banners rush on, 11:32:22 Mind, maidens, we spare not 11:32:22 One life in the fray! 11:32:22 We corse-choosing sisters 11:34:33 its from the islandic njal saga.. (used also by wagner in his ride of the valkz 11:36:15 which i definitivly have not read yet.. do you know it? http://omacl.org/Njal/1part.html 11:39:46 ynuff spam for today..the resonance is outragious <> 11:45:46 -!- GreaseMonkey has quit (Quit: The Other Game). 12:07:13 http://www.youtube.com/watch?v=LudzD5EAOlo&fmt=18 //cu! 12:07:16 -!- hagb4rd has left. 12:09:14 -!- Taneb has joined. 12:09:20 hagb4rd: Brabenite! 12:13:00 -!- Ngevd has quit (Ping timeout: 276 seconds). 13:43:33 I like today's Gunnerkrigg Court 14:07:02 Completely random, but elliott, have you seen Puella Magi Madoka Magica? 14:07:25 I vaguely wonder if I asked this before 14:08:40 No. 14:09:18 Unrelatedly, tumblr update 14:10:38 -!- Patashu has quit (Quit: MSN: Patashu@hotmail.com , Gmail: Patashu0@gmail.com , AIM: Patashu0 , YIM: patashu2 , Skype: patashu0 .). 14:40:35 -!- boily has joined. 15:10:59 -!- Klisz has joined. 15:21:11 -!- copumpkin has quit (Quit: Computer has gone to sleep.). 15:24:38 -!- Klisz has quit (Read error: Operation timed out). 15:30:09 -!- Klisz has joined. 15:43:56 -!- pikhq_ has joined. 15:44:38 -!- copumpkin has joined. 15:44:54 -!- pikhq has quit (Ping timeout: 276 seconds). 15:52:23 -!- Phantom_Hoover has joined. 15:53:19 Oh dear lambdabot/ 15:53:19 Phantom_Hoover: You have 3 new messages. '/msg lambdabot @messages' to read them. 15:53:30 -!- pumpkin has joined. 15:53:37 lambdabot is frend 15:55:18 -!- copumpkin has quit (Ping timeout: 240 seconds). 15:56:09 Friendship bot. 15:56:56 yes. 15:57:13 news-ham :( 15:57:42 Oh my god what has happened? 15:57:55 Poor news-ham 16:22:27 -!- pumpkin has changed nick to copumpkin. 16:45:31 -!- kmc has quit (Quit: Leaving). 16:51:18 -!- DCliche has joined. 16:51:37 -!- Klisz has quit (Ping timeout: 248 seconds). 16:53:41 hagb4rd: You're not here now. 16:54:00 @tell hagb4rd My favorite composer is anyone who's asleep at 5:30AM in my timezone. 16:54:00 Consider it noted. 16:54:45 Gregor: So... Pachelbel? 16:56:16 @tell elliott DAAA DADADAAA DADA DADADADADADADADA DAAA DADADAAA DADA DADADADADADADADA 16:56:16 Consider it noted. 16:56:34 Katamari Damacyyyyyy 16:56:34 elliott: You have 1 new message. '/msg lambdabot @messages' to read it. 16:56:59 ... damn, I can't remember the Katamari Damacy song well enough to know if it matches that :P 16:57:03 My running gag is that I pretend every piece of word-music is Katamari Damacy :P 16:57:13 Ah :P 16:57:16 Thankfully word-music is so fucking hopelessly vague that it can never be disproven. 16:57:35 Yup 16:58:25 -!- zzo38 has joined. 16:58:45 Alternatively, 16:58:54 Pachelbel: Katamari Damacy's composer? 16:58:59 Sources say YES. 17:00:44 Gregor: Aww man, we missed Pachelbel's 358th birthday 17:09:34 NOOOOOO 17:11:35 Gregor: (He'll only stop having birthdays when people stop liking his music.) 17:11:43 (Now there's a challenge for you!!!) 17:30:21 Gregor, have you watched the Pachalbel rant. 17:30:32 Phantom_Hoover: ... ... ... probably? 17:30:46 Phantom_Hoover: It's "Pachelbel" you uncultured fuck. 17:31:27 -!- Taneb has quit (Quit: Goodbye). 17:42:03 Also, to be fair, I don't hate Pachelbel, I hate Pachelbel's Canon. But since that's the only piece people know him by, WHOOPS. 17:45:32 Gregor: In the future people will complain about that goddamn Gregor's op. 47 that's in every fucking song. 17:45:37 *Richards' 17:45:44 Actually we should use first names. 17:45:55 8-D 17:46:01 We could just talk about classical composer Johann and lose no precision of value. 17:46:12 (That is, no precision which is to be valued.) 17:48:34 Why does -Wall -Wextra miss a ton of shit :( 17:48:38 Hm, there's J.S. Bach and a few other J.x. Bachs for some value of 'x' name Johann, and there's Johann Strauss Jr (HACK), and ... I can't off the top of my head think of any other Johanns. Johanneses, sure. 17:48:47 *named Johann 17:48:53 Gregor: Pachelbel 17:48:58 Pachelbel = Bach! 17:49:04 Pachelbach. 17:49:09 PACHELBEL DOES NOT COUNT 17:53:34 Gregor, remind me why you hate Pachelbel's Canon, I recall it being entertaining. 17:54:25 http://www.youtube.com/watch?v=JdxkVQy7QLM 17:55:10 Phantom_Hoover: Because I used to play the viola. 17:57:53 Gregor, hahahaha 17:57:58 (The joke is the viola.) 17:58:14 I, um 17:58:26 Why is the Pachelbel rant playing at 4x. 17:58:29 NOBODY TOLD ME STACK OVERFLOW WAS THIS ADDICTIVE 17:58:37 Phantom_Hoover: Wait that thing's sped up? 17:58:40 elliott, Phantom_Hoover: You guys, I can't have two simultaneous different conversations on two channels >_< 17:58:44 No? 17:58:55 Phantom_Hoover: Oh, you meant the player is literally speeding it up. 17:58:58 Gregor: Um, so you're inferior? 17:59:08 elliott, what how 17:59:12 Gregor: We could interleave them in this channel if that would be more convenient for you. 17:59:15 Phantom_Hoover: WHAT ARE YOU TALKING ABOUT 17:59:16 make it, stop 17:59:17 Why is the Pachelbel rant playing at 4x. 17:59:29 elliott: PLEASE DO 17:59:31 I don't know, but when I watch it it's sped up a lot. 17:59:32 HOW DO I HAVE 193 REPUTATION ALREADY!! WHY!! I AM NOT REPUTABLE! 17:59:49 And it's _just_ that video 18:00:32 And _just_ on that page. 18:00:33 AAAAAAAAAAAH NO 208 REPUTATION WHY 18:00:38 Phantom_Hoover: Maybe the video is just fast, dude. 18:00:42 No, it's not. 18:00:50 If I watch it through paravonian's channel it's fine. 18:02:39 elliott: yes 18:02:45 kallisti: waht 18:03:53 auuuuuum 18:26:08 -!- TaneblWii has joined. 18:26:18 taneblwii 18:26:27 Phantom_Hoover: bieberpunk is way better than clockpunk, btw. 18:26:48 What about rockpunk? 18:26:55 (This is set on Cardassia, obviously.) 18:27:19 Hello 18:27:35 Phantom_Hoover: Quick! What's faster than a ninja? 18:27:46 A ninja on speed! 18:27:55 Phantom_Hoover: Quick! What's faster than a ninja that isn't a ninja? 18:28:11 An ex-ninja on speed! 18:28:42 Phantom_Hoover: Quick! What's faster than a ninja that never was a ninja? 18:29:09 Superman. 18:29:44 This is awful; I will play table tennis instead 18:29:48 Welp, I've just seen the word "bieberpunk" 18:29:50 Time to kill myself. 18:30:09 I didn't realise the context was pseudohistorical genres, so I just imagined Justin Bieber doing punk. 18:30:17 elliott: because your premise is a logical contradiction it means that all responses are true. Therefore: I fucked your mom, yo. 18:30:20 * kallisti logic 18:30:24 Phantom_Hoover: 18:30:33 I'd go with photon but I'd have to abbreviate it as ph and I hate you. 18:30:41 Yes do that. 18:30:50 (I'm way faster than a ninja anyway.) 18:30:53 Nooo "ph" sucks to type on QWERTY. 18:31:01 Maybe I'll call it hoover. 18:31:18 Yes. 18:31:22 What are you even naming. 18:31:27 God. 18:31:41 elliott: you know what's cool about my awesome typing style? 18:31:42 Love of Jesus Photons 18:31:45 ph is not awkward to type at all 18:31:55 Phantom_Hoover is truly the name of God. 18:31:58 They travel through space, spreading the Love of Jesus at just OVER the speed of light ('cuz fuck science, that's why) 18:34:23 -!- TaneblWii has quit (Ping timeout: 258 seconds). 18:35:58 > 2 ++ 2 18:35:59 Ambiguous type variable `a' in the constraints: 18:35:59 `Data.Monoid.Monoid a' 18:36:00 ... 18:36:02 WHAT I AM SHOCK 18:36:32 Did they make ++ to mappend? 18:36:42 Cale did. 18:37:09 > Product 2 ++ Product 3 18:37:10 Product {getProduct = 6} 18:37:26 most useful instance in Haskell. 18:37:32 :t (endo succ ++ endo pred) (++) 18:37:33 Not in scope: `endo' 18:37:33 Not in scope: `endo' 18:37:37 :t (Endo succ ++ Endo pred) (++) 18:37:38 Couldn't match expected type `t1 -> t' 18:37:38 against inferred type `Endo a' 18:37:38 In the expression: (Endo succ ++ Endo pred) (++) 18:37:44 :t runEndo (Endo succ ++ Endo pred) (++) 18:37:44 Not in scope: `runEndo' 18:37:46 :t unEndo (Endo succ ++ Endo pred) (++) 18:37:46 Not in scope: `unEndo' 18:37:50 :t appEndo (Endo succ ++ Endo pred) (++) 18:37:51 forall m. (Enum (m -> m -> m), Monoid m) => m -> m -> m 18:38:04 :t appEndo (Endo (+) ++ Endo (-)) 18:38:04 Occurs check: cannot construct the infinite type: a = a -> a 18:38:05 Probable cause: `+' is applied to too few arguments 18:38:05 In the first argument of `Endo', namely `(+)' 18:38:07 :-( 18:38:13 * kallisti had a dream that he went to an awesome party and then his car got towed in the morning and so he was homeless in a parking deck with homeless people for a day. 18:38:18 :t appEndo (Endo (1+) ++ Endo (1-)) 18:38:19 forall t. (Num t) => t -> t 18:38:28 :t appEndo (Endo (+1) ++ Endo (subtract 1)) succ 18:38:29 forall a. (Num a, Enum a) => a -> a 18:38:31 The best. 18:38:59 helo what does endod o 18:39:26 I think it makes the monoid of endomorphisms? 18:40:07 :t Endo 18:40:07 forall a. (a -> a) -> Endo a 18:40:15 oh 18:40:17 okay. 18:40:50 > Endo (+) 18:40:51 Occurs check: cannot construct the infinite type: a = a -> a 18:41:02 > Endo (+1) 18:41:03 No instance for (GHC.Show.Show (Data.Monoid.Endo a)) 18:41:03 arising from a use ... 18:41:14 @hoogle Endo a -> a 18:41:14 Data.Monoid appEndo :: Endo a -> a -> a 18:41:15 Prelude id :: a -> a 18:41:15 Data.Function id :: a -> a 18:41:19 ah okay. 18:43:14 so ++ is like . then? 18:43:24 but with restricted type 18:44:19 What's a fast hash for comparing files 18:44:26 I guess the answer is probably just SHA1 18:45:31 elliott: i-number :P 18:45:41 What 18:45:45 inode number 18:46:06 Hmm 18:46:11 That won't work 18:46:14 inodes aren't immutable 18:46:14 (that wouldn't -- yes) 18:46:15 -!- GreaseMonkey has joined. 18:46:15 -!- GreaseMonkey has quit (Changing host). 18:46:15 -!- GreaseMonkey has joined. 18:46:22 elliott: HA HA GOOD ONE RIGHT? 18:46:26 Yes, hilarious. 18:46:27 -!- kmc has joined. 18:47:39 elliott: I hate people on IRC with those scripts that tell everyone every single detail about the song they're listening to 18:47:50 including like... the song progress and bitrate. 18:47:57 as though anyone cared. 18:48:13 I hate people on IRC with those scripts that tell everyone /any/ detail about the song they're listening to. 18:48:58 NP: Shakira -- Hips Don't Lie 18:49:08 * elliott is listening to: Pachelbel - Canon in D Major [04:14 / 160 Kbps] 18:49:13 -!- calamari has joined. 18:49:46 * elliott is still listening to: Pachelbel - Canon in D Major [04:14 / 160 Kbps] 18:50:52 * kallisti googled for: Pachelbel Canon D Minor by Toucans 18:51:08 I'm putting together the source tree for a new project (git) and I'm wondering if you guys know of some projects with a good layout that I could base mine on? 18:51:24 linux kernel. 18:51:32 >:) 18:51:44 calamari: If you don't want to put everything in the root, then src/ and include/ directories? 18:51:48 It really depends on the language. 18:52:01 c 18:52:35 * elliott usually doesn't separate header files and C files, since they're both source files. 18:52:53 Listening to: C:\MZX\HONOR1\ZIN.MOD "zine 8 music" 02:35/10:42 MOD (Protracker), 4 channels; 119956 bytes; Reverb; Surround; Graphics Equalizer; Loop Song; High quality resampling 18:52:59 mcmap just has everything in the root directory which... works. 18:53:15 That is how you write a large number of details. 18:53:16 zzo38: Thank god, now I know it's 119956 bytes! 18:53:27 My quality of life is enhanced immeasurably. 18:53:30 alright thanks 18:53:53 elliott: words has everything in one file. best layout 18:53:59 also my IRC bot currently does the same. 18:54:16 "zine8.mod" in the mod archive 18:54:20 kallisti: mcmap would be a very long 4442-line C file. 18:54:35 yeah rolebot is only 490-ish lines. 18:54:44 * Gregor is listening to: The sound of air vents and graduate students breathing. 18:54:45 kallisti: Also some of that is generated code. 18:55:06 `run wc -l bin/words 18:55:13 wc: bin/words: No such file or directory 18:55:24 ah 18:55:26 always forget 18:55:28 `run wc -l bin/word 18:55:30 19353 bin/word 18:55:40 that's pretty much all generated code. :P 18:56:23 `url bin/word 18:56:25 http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/bin/word 18:56:32 if you measure productivity in linecount I am an absolute god. :P 18:56:38 linecount / hour 18:56:39 `word 18:56:42 botumbindins 18:56:46 Seems legit. 18:57:25 `word 10 18:57:27 lum sucte cats das croclacroceess dae athcris fughtni bara zie 18:57:34 cats... 18:57:47 Cats das croclacroceess! 18:59:04 the best word to date is schth 19:00:24 it's an onomatopoeia 19:00:37 for the sound schth. 19:01:05 I seem to recall elliott complaining about a thousand-or-so line C function I had. 19:01:18 `log elliott.*1000.*c.*function 19:01:30 2011-01-20.txt:19:01:26: any language but my own";) and used the CAL-1000 to develop the more robust CAL-1001, entirely in English. The CAL-1001, in turn, was used to produce the more capable CAL-1002, again in English, and so forth, all the way up to the fully functional CAL-3037, which we released as a commercial product. It's successor, the CAL-3040, is currently in testing.]]] 19:01:37 Piff 19:01:40 `pastelogs elliott.*1000.*c.*function 19:01:47 http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.12772 19:02:02 Oh well 19:02:12 Oh, he was probably ehird then anyway ... 19:02:36 `log .*1000 lines 19:02:44 Gregor: Not if it was cfythe. 19:02:46 the .* is necessary 19:02:47 2008-03-17.txt:20:24:09: ais523, so your program must be shorter than 1000 lines? 19:03:15 * kallisti gives up. 19:03:18 * kallisti quitter 19:03:21 elliott: cfythe has no such functions, it was Plof 3. 19:04:11 Gregor: Fair enough :P 19:06:15 -!- kallisti has changed nick to BigIndian. 19:06:33 -!- BigIndian has changed nick to xxBigIndianxx. 19:07:13 * xxBigIndianxx is experimenting with new names 19:07:22 -!- xxBigIndianxx has changed nick to kallisti. 19:07:25 not hardcore enough. 19:08:01 2011-12-14 19:07:49 (841 MB/s) 19:08:02 Yessss 19:08:19 .. 19:08:23 -!- monqy has joined. 19:08:29 monqy: bye 19:09:14 Okay! See you later! 19:09:41 elliott: ...? 19:10:51 hi 19:11:07 monqy: NOOOO 19:11:15 you ruined my reversed conversation 19:11:18 I seem to recall elliott complaining about a thousand-or-so line C function I had. <-- generated or hand written? 19:11:28 kallisti: hi 19:11:48 kallisti: i'm on a boat 19:11:50 Vorpal_: Errr, somewhere in between? Very macro-y, but hand-written. 19:12:01 -!- Vorpal_ has changed nick to Vorpal. 19:12:17 Gregor, hm, was that 1000 lines before or after cpp then? 19:12:24 Before. 19:12:34 hm, sounds a bit on the large side yes. 19:12:41 Gregor, what did it do? 19:12:52 It was the main interpreter loop. 19:12:54 quintopia: and, it's going fast and, you've got a nautical themed Pashmina Afghan? 19:13:04 Gregor, well, that is excusable then. 19:13:14 Of course it is, elliott was just being a jerk :P 19:14:37 -!- kmc has quit (Quit: Leaving). 19:15:03 kallisti: ah, not yet. later. 19:15:44 Hahah, "1000 or so" 19:15:49 Make that 2,151 19:16:12 heh 19:16:49 wow I'm kind of amazed at how much code is in Bot::BasicBot 19:17:02 it'll take a while to remove that dependency I think. 19:17:28 Gregor, I would definitely consider splitting the case statements/blocks-after-label/whatever out into separate files then and generating a file with lots of #includes there 19:17:38 Vorpal: That's what I did. 19:17:54 ah, good 19:18:09 August 2009, "Split up the obscenely-long interpPSL function into separate (#include'd) implementation files.", woooh :P 19:18:14 Then, later, I abandoned that codebase! 19:18:16 Wooooh! 19:22:42 Gregor, why? 19:23:00 hmmm 19:23:11 I /could/ talk to the current maintainer and see if they would accept some patches. 19:23:19 Vorpal: Gregor does rewrites periodically. 19:23:21 :) 19:23:27 instead of basically copypasting most of the code and rewriting parts of it. 19:25:42 heh 19:26:45 huh, so ACTION requires ctcp? 19:26:52 that's what it looks like, based on this code. 19:27:55 kallisti, /me (ACTION) is a ctcp 19:27:58 didn't you know? 19:28:22 not at all. 19:28:27 "In C++0x the term "sequence point" is being replaced by the term "an operation A being sequenced before an operation B, or being un-sequenced"" 19:28:30 * kallisti thinks that's stupid. :P 19:28:40 ^bf +.,[.,]+.!ACTION thinks that's what ACTION is. 19:28:40 * fungot thinks that's what ACTION is. 19:28:52 kallisti: yeah, [1 byte]ACTION ... [1 byte] is such a complex format 19:28:55 down with ctcp requiremenst 19:28:59 requirements 19:29:02 fizzie, what? Seriously? 19:29:16 Vorpal: Seriously what? 19:29:27 fizzie, the sequence point thingy 19:29:28 elliott: well, no, it's not complex. but now it makes me do extra work within this high-level library. :P 19:29:36 Vorpal: That wasn't me. 19:29:43 fizzie: Don't let ... whatever the P staffer guy was ... see you do that. 19:29:45 fizzie, well, is it true? 19:30:01 I think I recall something like that being mentioned. 19:30:04 I like how I've caused Vorpal to bother fizzie for no reason. 19:30:15 elliott, I misread somehow 19:30:23 elliott, I blame that I'm on a phone 19:30:50 And it's going fast and you've got a telephony-themed pashmina afghan? 19:30:51 elliott, so is it true? 19:30:51 sub pocoirc { my $self = shift; return $self->{IRCOBJ}; 19:30:56 } 19:30:58 what the hell 19:30:59 is this. 19:31:01 Vorpal: http://blogs.msdn.com/b/vcblog/archive/2007/06/04/update-on-the-c-0x-language-standard.aspx 19:31:20 kallisti: pocoirc 19:31:27 Takes no arguments. Returns the underlying 19:31:27 L object used by 19:31:28 Bot::BasicBot. 19:31:29 "One unintentional side-effect of this feature is that it makes the following well formed: 19:31:29 19:31:30 class 19:31:30 struct X { 19:31:30 void f(Types......); 19:31:30 }; 19:31:31 ah yes, of course. 19:31:32 19:31:34 Yes – that is six ‘.’ in a row J." 19:31:43 Types..... 19:31:47 . 19:32:17 this POE thing seems awfully crufty. 19:32:21 I wonder what benefits I'm getting. 19:32:27 elliott, well that is stupid. Sequence point is a perfectly sensible terminology in the context of an unsafe imperative language standard. 19:32:39 What relevant does unsafeness have 19:33:00 hm, actually it doesn't, never mind 19:34:14 POE is a big wad of potential waiting for your kinetic. It's a mirror reflecting your ideas in code. It's the dingdong in shamalamadingdong. It's the hoho in hohoho, and at least one Po in PoCo. It's the freak in fries. It's a floor topping and a dessert wax. It's all these things and more, even Europa, and you may attempt a landing there. 19:34:19 wow I'm impressed. 19:36:30 -!- Lisa_ has joined. 19:36:39 `welcome Lisa_ 19:36:41 Lisa_: Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page 19:37:08 hey 19:37:33 hi 19:39:06 varadic templates seem kind of useless to me, at least unless there is some way to make a for loop generate code for each one or such inside the template definition. 19:39:16 well, foreach rather 19:39:57 Vorpal: tuples 19:39:59 for one thing 19:40:01 hm the examples seem to use MI 19:40:18 also generalised Either (i.e. tagged type-safe union) 19:40:27 elliott, sure, but I'm not sure how you would add in the n members for the n types. 19:40:55 Vorpal: simple 19:40:57 Vorpal: recursion 19:41:02 you have a 0-argument base-case 19:41:07 sure 19:41:10 hm 19:41:14 and the 1+ argument case either inherits from the smaller case 19:41:17 or includes it as an element 19:41:34 unfortunately I think my fun code for this is lost 19:41:36 elliott, would you access all the members in the top level when accessing from the outside still? 19:41:46 Vorpal: well you'd wrap it with methods... 19:41:51 well okay 19:41:59 still this seems kind of awkward 19:42:08 it's C++ 19:42:52 oh wait this is object oriented. 19:42:54 elliott, also they forgot that a classical C struct basically does the job of a tuple just fine 19:42:57 I can just override a bunch of methods. 19:43:23 Vorpal: uh 19:43:45 Vorpal: if you think declaring a struct for each damn function that just happens to have more than one return value is practical 19:43:47 then you're an idiot 19:43:59 elliott, sure: struct intCharTuple { int firstmember; chat secondmember; } ;) 19:44:04 char* 19:44:18 much better than tuple 19:44:19 elliott, (of course I'm joking) 19:44:47 elliott, anyway you can do an unnamed struct in C. Not sure if that works for return values though 19:44:51 probably doesn't 19:45:20 i think it does. 19:45:42 how would you actually store the return value in a local variable then? 19:46:06 I guess you could access one by doing foo().bar 19:46:12 but if you want both bar and quux? 19:46:59 elliott, anyway there is also the traditional C solution: foo(int *retval1, char *retval2) 19:47:13 the traditional terrible solution 19:47:19 well yes 19:48:11 C would be about 0.75x better if it just had tuples 19:48:34 i think (T,T',...) is unambiguous for more than one T in every situation a type can occur in 19:48:36 *(compatible_struct_pointer*)&foo()? 19:48:37 although casting that is a bit ugly 19:48:46 (int, char *) foo(void); 19:48:51 hmm wait 19:48:59 pikhq_, :P 19:49:00 that gives no obvious syntax for the literals 19:49:06 hmm, would [foo, bar] be ambiguous as a type or literal? 19:49:34 Gregor, why? Vorpal: Gregor does rewrites periodically. // It's more like I redesign the language from scratch periodically, which requires a rewrite of the whole engine too :P 19:49:43 Plof 3 lasted me a long while, I'm hoping Fythe will too. 19:49:56 Gregor, no plof 4? 19:49:56 Well, it *would* look something like an entirely valid array index. 19:50:14 But I doubt that it would be ambiguous in contexts where you're doing a type or literal. 19:50:29 Vorpal: Plof 4 will be written using Fythe, hopefully. 19:50:37 heh 19:50:43 Fythe is just the low-ish level VM. 19:50:59 Plof 4 is already partially implemented (in Fythe) 19:51:00 heh 19:51:02 But very, very partially :P 19:51:04 Haven't found the time. 19:51:42 I seem to recall the main reason for scrapping Plof 3 was that it was hellishly slow. 19:52:08 hm 19:52:27 pikhq_, the language or the implementation? 19:52:30 Yes. 19:52:36 both? okay 19:52:51 It was a hellishly slow implementation of a language that had a design nearly mandating pretty damned slow implementation. 19:53:03 Also, Boehm GC. 19:53:17 well, surely boehm gc could have been replaced 19:53:23 Indeed. 19:53:37 And Fythe now uses G^5C 19:53:43 (is it ^5?) 19:54:31 right 19:56:33 hm, someone should make a piece of software with the version number in the middle of the name and then get it popular enough to make debian include it. I wonder how they would solve that 19:56:56 Debian is not above using its own versioning scheme. 19:57:02 Vorpal: the same way they do interacl 19:57:04 intercal 19:57:49 elliott, well, lets say that the version number made up most of the name. Like G^5C (not exactly version number, more like complete redesign, I know). You couldn't really call it just GC-5 19:58:07 that would be too generic 19:58:19 Vorpal: Debian append their own versions to packages. 19:58:20 They'd probably go with GGC-5 19:58:26 heh 19:58:32 Vorpal: They'll just not have an upstream version. 19:58:35 Or they'll reject your package. 19:58:43 Also, yeah, Debian also has their own package versioning. 19:58:47 oh well 19:59:02 Debian handles a lot of weird policies. 19:59:13 Erm, packages. 19:59:23 hm I wonder how they deal with erlang. I have version R14B03 here. 20:00:09 1:14.b.3 20:00:11 hm okay 20:01:32 * Gregor reappears. 20:01:43 It was a hellishly slow implementation of a language that had a design nearly mandating pretty damned slow implementation. <--- yup 20:01:48 And Fythe now uses G^5C <-- GGGGC 20:03:00 GGGGGC would be the followup to GGGGC if I need one :P 20:03:10 Gregor, not enough G 20:03:17 Gregor, but what does GGGGC stand for? 20:03:33 Gregor's G G Garbage Collector 20:03:36 :P 20:04:43 Gregor's Generalpurpose Generational Garbage Collector 20:07:53 Gregor: *Great 20:09:21 OK, I think I'm going to Actually Switch to xmonad in the coming days... 20:09:49 elliott, why? 20:10:04 Vorpal: Why "why?"? 20:10:30 elliott, why xmonad? 20:11:19 Vorpal: wmii doesn't gel with me, dwm is too inflexible, awesome involves writing Lua. 20:11:26 elliott, xfce? 20:11:36 That is what I am currently using. 20:11:42 what is wrong with it? 20:12:56 Most everything. Window management is even klunkier than GNOME 2 (and that's saying something), window switching with the task bar is awkward because drag-to-rearrange just fails to register most of the time, the menu is even more useless for launching programs than GNOME 2... 20:16:02 Jeeze. Firefox has stopped being able to build on 32-bit systems. The linker needs more address space. 20:18:24 :D 20:19:58 Apparently Chrome hit the same thing previously on Windows. 20:21:30 Gregor: Tell us about building Chrome! 20:22:42 Vorpal: Does that answer your qusetion? 20:22:44 *question 20:28:14 back 20:28:24 elliott, yeah 20:28:45 Especially the one thing that makes the window management almost unusable for me is the fact that scrolling a background window focuses and raises it. 20:28:59 Which is a feature so stupid, only xfwm4 has it. 20:30:21 elliott: that's very stupid 20:38:10 !perl package Test; @T = keys %Test::; my ($a,$b,$c); print @T; 20:38:12 T 20:38:43 -!- oerjan has joined. 20:38:55 !perl package Test; @T = keys %Test::; our ($a,$b,$c); print @T; 20:38:56 caTb 20:39:27 !perl package Test; use base 'Exporter'; @EXPORT = keys %Test::; our ($a,$b,$c); print @T; 20:39:35 !perl package Test; use base 'Exporter'; @EXPORT = keys %Test::; our ($a,$b,$c); print @EXPORT; 20:39:36 cabISAisaBEGINEXPORT 20:39:47 !perl package Test; use base 'Exporter'; @EXPORT = keys %Test::; our ($a,$b,$c); $,=' '; print @EXPORT; 20:39:48 c a b ISA isa BEGIN EXPORT 20:40:15 huh, BEGIN is in the symbol table. that's interesting. 20:40:30 05:06:26: 23:53:17: that thing above is probably too simple 20:40:30 05:06:28: I think that's fine. 20:40:30 oerjan: You have 1 new message. '/msg lambdabot @messages' to read it. 20:40:53 no, it wouldn't fulfil the Applicative laws. i guess you saw my later adjustment. 20:42:36 @tell elliott AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 20:42:37 Consider it noted. 20:42:43 hi 20:42:43 elliott: You have 2 new messages. '/msg lambdabot @messages' to read them. 20:44:31 !perl $x = 2; $y = *x; print $y 20:44:31 ​*main::x 20:44:40 !perl $x = 2; $y = $*x; print $y 20:44:40 ​$* is no longer supported at /tmp/input.3450 line 1. 20:44:44 NOOOOOOOO 20:44:49 !perl $x = 2; $y = *x->{SCALAR}; print $y 20:44:58 oh right 20:45:02 !perl $x = 2; $y = *x{SCALAR}; print $y 20:45:03 SCALAR(0x7f7cb8f56a70) 20:49:30 -!- Vorpal has quit (Quit: ZNC - http://znc.sourceforge.net). 20:49:53 -!- azaq23 has joined. 20:54:38 -!- copumpkin has changed nick to dynamicfish. 20:55:56 Gregor: Tell us about building Chrome! // I've never built Chrome, but I can tell you that WebKit has at least ten build systems (fewer than the last time I reported it) 20:57:56 Gregor: They have a meta-build-system! I know that much. 20:58:17 Sounds about right. 20:58:27 And I just submitted a patch to a build system that exists solely because of Chrome, that that meta-build-system (GYP) can generate! 20:58:32 CIRCLE OF LIFE 20:58:59 -!- dynamicfish has changed nick to copumpkin. 21:12:24 !perl package Test; sub A { print caller;}; A 21:12:24 Test/tmp/input.64541 21:12:37 wat 21:12:44 oh it'll be a list 21:12:58 -!- copumpkin has changed nick to classtype-typeda. 21:13:16 !perl package Test; sub A { print scalar caller;}; A 21:13:17 Test 21:13:39 !perl package Test; sub A { local $, = ' '; print caller;}; A 21:13:39 Test /tmp/input.6631 1 21:14:08 -!- classtype-typeda has changed nick to copumpkin. 21:19:06 -!- boily has quit (Read error: Operation timed out). 21:24:33 !perl print $0 21:24:34 ​/tmp/input.7617 21:27:46 We could just talk about classical composer Johann and lose no precision of value. <-- yeah, after all Bach and Strauss are indistinguishable 21:28:15 Who gives a fucking shit about goddamn GERMANS 21:28:23 --Albert Einstein 21:28:27 More to the point, Johann Strauss is a hack. 21:28:30 He deserves neither of those names. 21:28:31 if jew say so 21:28:47 Gregor: Counterpoint: YOU'RE a hack. 21:29:08 elliott: Counter-counterpoint: HACK HACK COUGH SPUTTER 21:29:10 Oh, he's the guy responsible for Blue Danube. 21:29:11 while Bach hacked at counterpoint 21:29:24 Gregor: I can join you in whole-hearted agreement of hackery. 21:30:21 elliott: Also Bach is a better Johann and Richard Strauss is a better Strauss, so he deserves neither name. 21:34:10 Gregor: And Johann Strauss goes out and changes his name to Johann Sebastian Bach just to be more pitiful. 21:35:10 I didn't realise the context was pseudohistorical genres, so I just imagined Justin Bieber doing punk. <-- logically it designates a world which lacks our modern technology but has an equally powerful substitute fueled by justin bieber. hth. 21:35:30 oerjan: Not gonna lie, I would read that novel. 21:36:13 *at least equally powerful 21:36:14 I'm just imagining a highway with like a thousand cars all constantly going "BABY, BABY, BABY OOH". 21:36:18 SO BEAUTIFUL. 21:36:31 that girl genius steampunk is obviously far beyond us 21:36:44 sorry, gaslamp fantasy 21:38:49 -!- pikhq has joined. 21:40:16 -!- pikhq_ has quit (Ping timeout: 244 seconds). 21:43:31 -!- oerjan has quit (Remote host closed the connection). 21:48:31 !perl print -d 21:48:35 !perl print -d "lol" 21:48:41 !perl print defined(-d "lol") 21:49:00 !perl print undef . "lol" 21:49:01 Warning: Use of "undef" without parentheses is ambiguous at /tmp/input.10215 line 1. 21:49:10 !perl print (undef) . "lol" 21:51:41 !perl print undef() . "lol" 21:51:41 lol 21:58:07 -!- Jafet has quit (Read error: Connection reset by peer). 21:58:38 How do I copy a PAL VHS to NTSC DVD? 22:11:38 fizzie: I prefer to make operators look like haskell functions wherever possible. :P 22:22:33 -!- oerjan has joined. 22:28:25 heloerjan 22:28:30 fizzie: Busy being BUSY, are we? 22:28:35 helliott 22:35:31 -!- Lisa_ has changed nick to KingOfKarlsruhe. 22:35:39 zzo38: capture as PAL, encode to 720x480? 22:35:52 * kallisti found a use for local in perl. 22:37:04 the module File::chdir creates a special tied scalar called $CWD which works well with local. 22:37:48 I don't have a PAL VCR. 22:37:51 push @CWD and pop @CWD can be used similarly for pushdir and popdir-like behavior. 22:42:09 calamari: Framerate conversion is hellish. 22:44:02 -!- oerjan has quit (Remote host closed the connection). 22:47:18 -!- Patashu has joined. 22:49:31 pikhq: mencoder should be able to handle it 22:50:05 calamari: Not really. The mplayer stack's handling of framerates is bloody well moronic. 22:50:39 seems like it doesn't matter anyways since he can't play the tape 22:50:44 It's pushing the thing just to do inverse telecine on clean 24p-in-30i content. 22:50:45 kallisti: looks like you've been doing perl. why? 22:51:39 pikhq: there are like 5 different options for doing that 22:51:52 olsner: IRC bot 22:52:25 calamari: Yes. And? 22:52:55 pikhq: and I'm not sure why you're complaining.. usually one or more of them works out fine 22:53:10 Yes, and that's the *limit* of its handling of framerates. 22:53:15 Try doing inverse telecine on something that's only partly telecined sometime. Watch it break hardcore. :) 22:53:44 And framerate conversion otherwise? Its only conception of that is dropping or doubling frames. 22:54:05 is ffmpeg better? 22:54:21 Not particularly. 22:54:29 Video software sucks. 22:54:51 I've had some luck putting inpal dvds and playing them on my ntsc player 22:55:02 I assume the player is not doing anything very fancy 22:55:05 Variable framerate video is essentially not handled... 22:56:10 They make the *strange* assumption that 720x480 video is meant to be displayed at 4:3, when it's supposed to be displayed at a pixel aspect ratio of 10:11... 22:56:23 ? 22:56:32 on mine it stretches it to 853x480 22:57:07 -!- elliott has quit (Quit: Leaving). 22:57:14 ??? 22:57:20 @tell elliott ??? 22:57:21 Consider it noted. 22:57:22 unless it was full screen 22:57:45 That would be 16:9, and 720x480 video shouldn't be displayed at 16:9, either, it should have pixel aspect ratio of 40:33 for wide-screen. 22:58:06 pikhq: maybe your tv is different but mine are either 4x3 or 16x9 22:58:23 The issue is that 720x480 is including the horizontal blanking interval. 22:59:00 The portion of the signal that is active should be displayed at ~4:3 or ~16:9. 22:59:11 well you could do a -vf crop 22:59:31 Because 480i signals are generally coming from analog sources. 23:00:17 when I play these star trek dvd's, I'm pretty sure the entire window is filled with picture info 23:00:41 I'm seeing the HBI. 23:01:11 well let me grab one nd verify.. I know they're interlaced tho 23:01:21 Yes, and they're partially telecined. 23:01:24 and fullscreen 23:01:44 Which mplayer and ffmpeg do the wrong thing on. 23:02:37 I usually use vlc but it's not too great at deinterlacing 23:02:59 Anyways: for digitised 480i video, it is *never* the right thing to go "aspect ratio 4:3" or "aspect ratio 16:9". If it's 704x480, this will do the right thing. 23:03:04 If it's 720x480, this will be Wrong. 23:03:17 Subtly so, but nevertheless Wrong. 23:03:53 -!- KingOfKarlsruhe has quit (Quit: ChatZilla 0.9.87 [Firefox 8.0/20111104165243]). 23:04:24 so you'd recommend cropping to 704x480? 23:04:43 No. It's impossible to get the crop right in the general case. 23:05:32 From analog sources, the active picture will be in something *near* 704x480, and the black bars on the side will vary in size... 23:05:56 how about going the other direction? 16x9 to dvd 23:06:32 So, you have pristine 16:9 video, and want to encode to DVD? 23:06:36 like something I recorded on my phone in 720p 23:06:47 Scale to 704x480. 23:06:54 I see 23:07:13 The DVD player will, if outputting NTSC, add the HBI as needed. 23:07:14 oh well, guess I did some movies wrong in the past :) 23:07:37 You're not alone in that... Some official transfers are broken in that way. 23:08:22 The algorithm that video software (unfortunately) needs to do anymore is if 720x480, check for HBI, if it exists then use the correct pixel aspect ratio, otherwise display as 4:3 or 16:9. 23:08:43 I have yet to find a program that does this. 23:09:15 Or even acknowledges that 720x480 video isn't intended to be displayed at 4:3 or 16:9. 23:10:00 it is intended to be displayed at 4x3 or 16x9 23:10:08 The active portion of the picture is. 23:11:23 720x480 contains non-active portions. 23:12:42 well I see a couple black pixels on the edges of this ds9 dvd but no 8 for sure 23:14:05 It will likely vary throughout the video. 23:14:22 pikhq: I know what you're talking about btw.. I've used that when programming on the atari 5200.. and 2600 especially :) 23:14:26 Particularly seeing as some scenes are telecine, some are video, and some are a composite of the two. 23:15:07 OH GOD SO MANY NEW THINGS. 23:15:40 TNG makes a good stress test of deinterlacing/inverse telecine software, BTW. 23:16:01 pikhq: yeah I noticed .. they seem to have broken interlacing 23:16:27 If it works right you get variable framerate video, with only a bit of oddity from some special effects shots which *should* end up getting just normally deinterlaced. 23:16:43 If it works poorly, you get 30p juddering or 24p strangeness. 23:16:51 http://en.wikipedia.org/wiki/Wolf_359 23:16:51 (yay, frame drop!) 23:16:56 Wow, a star with water in it. 23:17:26 -!- oerjan has joined. 23:17:34 Phantom_Hoover: is it water plasma? 23:17:39 is water plasma a thing? 23:18:28 No; plasmas don't have actual atoms. 23:18:52 hm, plasma means ionization, which would fuck up what keeps molecules together, i think 23:18:59 Yeah. 23:19:16 ah okay. 23:20:01 Wait, its photosphere is only 2800K. 23:20:11 There are plenty of metals that are *solid* at that temperaute. 23:20:14 *temperature 23:21:00 `? welcome 23:21:03 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 23:21:07 `? esoteric 23:21:10 This channel is about programming -- for the other kind of esoterica, try #esoteric on irc.dalnet.net. 23:21:37 So disappointed that dalnet isn't a real network. 23:21:37 i think it would be more efficient to include the latter in the former - although maybe we don't want that efficiency. 23:21:55 Phantom_Hoover: wat 23:22:15 * Looking up irc.dalnet.net 23:22:16 * Unknown host. Maybe you misspelled it? 23:22:26 Video is hard. 23:22:45 dal.net isn't it 23:22:56 Phantom_Hoover: irssi server list claims it's irc.dal.net 23:23:44 `run sed -i wisdom/esoteric s/dalnet/dal/ 23:23:46 sed: couldn't open file isdom/esoteric: No such file or directory 23:23:51 oops 23:23:59 `run sed -iwisdom/esoteric s/dalnet/dal/ 23:24:02 sed: no input files 23:24:14 wtf now 23:24:18 oh 23:24:30 `run sed -i s/dalnet/dal/ wisdom/esoteric 23:24:32 No output. 23:24:36 `? esoteric 23:24:38 This channel is about programming -- for the other kind of esoterica, try #esoteric on irc.dal.net. 23:25:46 -!- PiRSquared17 has joined. 23:26:06 PiRSquared17: LIAR, PI R ROUND 23:28:32 -!- copumpkin has quit (Quit: Computer has gone to sleep.). 23:35:36 `run echo No output. 23:35:38 No output. 23:37:10 `run echo "#!/bin/sh" >bin/No; chmod +x bin/No 23:37:13 No output. 23:37:17 um 23:37:25 `No output. 23:37:27 No output. 23:37:31 yay 23:38:17 `No soup for you! 23:38:19 No output. 23:38:41 `wtf soup 23:38:43 why soup is like wtf 23:40:36 `run cat bin/wtf 23:40:38 ​#!/bin/sh \ echo "why $1 is like wtf" 23:40:55 * Phantom_Hoover → sleep 23:40:57 -!- Phantom_Hoover has quit (Quit: Leaving). 23:52:00 -!- copumpkin has joined. 23:53:05 !perl $x = "hi" *x = undef; print $x; 23:53:06 Operator or semicolon missing before *x at /tmp/input.25244 line 1. 23:53:12 !perl $x = "hi"; *x = undef; print $x; 23:53:12 hi 23:55:27 !perl $x = "hi"; undef *x; print $x; 23:55:57 !perl $x = "hi"; $y = \*x; undef *$y; print $x; 2011-12-15: 00:08:15 !perl %h = (1,2); print ref \($h{1}) 00:08:15 SCALAR 00:08:44 !perl sub test { 1 } %h = (1,\test); print ref \($h{1}) 00:08:45 REF 00:10:03 !perl sub test { 1 } %h = (1,\test); undef ${\$h{1}}; print $h{1} 00:10:09 whew. sanity. 00:11:25 perl voodoo is tiring. :P 00:12:25 uh oh, I'm using a nested loop. I better rewrite it with gotos and labels. 00:34:42 kallisti: clearly you mean comefroms. hth. 00:38:11 -!- calamari has quit (Quit: Leaving). 00:55:14 !perl @a = (1,2,3,4); $b = \@a; @c = @$b; $d = \($c[$#c]); $$d = 3; print @$b 00:55:15 1234 00:55:27 tricky. tricky. 01:20:32 When a DVD is recording and a VHS is playing at the same time, without using the copying feature, the on-screen display is different and component video out doesn't work and a few other differences. 01:21:25 (It also supports recording on VHS and play DVD at the same time, and recording on VHS or DVD and playing a file on SD card or USB. But you cannot record on two drives at the same time.) 01:37:07 `frink 8 million km/h -> c 01:37:18 Conformance error \ Left side is: 1.2073523605465162560e+43 m^-1 s kg^-1 (unknown unit type) \ Right side is: 299792458 m s^-1 (velocity) \ Suggestion: multiply left side by energy \ \ For help, type: units[energy] \ to list known units with these dimensions. 01:38:05 `frink 8000000 km/h -> c 01:38:14 Conformance error \ Left side is: 1.2073523605465162560e+43 m^-1 s kg^-1 (unknown unit type) \ Right side is: 299792458 m s^-1 (velocity) \ Suggestion: multiply left side by energy \ \ For help, type: units[energy] \ to list known units with these dimensions. 01:38:28 `frink 8 million km/hr -> c 01:38:37 10000000/1349066061 (approx. 0.007412535448847823) 01:38:50 tsk tsk 01:42:55 zzo38: my brother is setting up lounge room as entertainment area.. my only fear is he will abscond with things from my room. 01:43:00 ill keep you posted :-D 01:51:45 itidus21: Then lock your room. 01:52:06 zzo38: oh, thats the problem. 01:52:26 i am such a person that can't say no to anyone who is prepared to use intimidation 01:52:41 intimidation? 01:52:57 if you extrapolate this idea sufficiently into all areas of my life, you will realize why i live in my moms basement without any friends or lovers or money :D 01:53:12 its not all that bad 01:54:01 what happens when your mother dies? or will you be dead too by then 01:54:15 i am not sure :D 01:54:22 excitement 01:54:25 adventure 01:55:03 you will then become like me and live in a small shared apartment without any friends or lovers or money. 01:55:08 when my mom dies my brother says "all those times i said we could share the house i was lying. now we will see if you were bluffing when you said you don't even care" 01:55:36 lol 01:56:00 basically, life ain't so hard once people stop leeching off you 01:56:13 it's the leeches themselves which represent the problems 01:56:28 they take many forms 01:57:28 when i was a lot younger, i figured out how my life would work out when if i poured a glass of cordial my brother would take it 01:57:40 and so, i learned, if i want a glass i need to pour one for everyone 01:58:07 but, it is all simply peoples way of responding automatically to someone who doesn't say no 01:59:13 its a bit like taking phrases like "sharing is caring" and just distorting them sufficiently that you can turn a profit 02:01:28 anyway i don't think i have anything in my room that he needs 02:06:35 oerjan: it's not so bad is it? 02:07:27 it's important to note for anyone reading my little monologue that i actually react like this towards most people, and it's not that i single my brother out 02:12:05 itidus21: YOU BETTER FIX YOUR PERSONALITY FLAWS OR I WILL BAN YOU 02:12:12 * oerjan whistles innocently 02:15:35 i used to argue inspite of his anger which he tended to take out on the plaster walls, by being a smartass which was perhaps not so wise 02:15:56 until one time he throw a stick at my head and i got the message then 02:16:20 itidus21: i think the general advice for people living with psychopats is "get the HELL out of there" 02:18:26 i think i just make him seem like a psychopath due to my own refusal to actually say no to anyone about anything 02:24:43 oerjan: no no it seems i am missing the point.. he may well be.. i would be lying if i didn't suspect him of it 02:26:47 well i'm getting this intuitive warning feeling which says to stop my own speculation - only you can know. 02:28:18 oerjan: i know how easy "get the hell out" sounds.. but it is the advice which would never be taken 02:40:47 -!- azaq23 has quit (Quit: Leaving.). 03:02:03 -!- Rachel88 has joined. 03:02:55 Facebook Traffic Generation Secrets Revealed , http://fb.weightdeals.com/ 03:03:10 oerjan: Banning secrets revealed? 03:03:17 indeed lol 03:03:28 -!- ChanServ has set channel mode: +o oerjan. 03:03:33 -!- oerjan has kicked Rachel88 Rachel88. 03:03:44 wait what 03:03:51 -!- Rachel88 has joined. 03:03:55 sorry 03:04:00 -!- oerjan has set channel mode: +b *!*prophaze@59.93.41.*. 03:04:00 -!- oerjan has kicked Rachel88 Rachel88. 03:04:02 oerjan: That was not a ban, that was a kick. 03:04:04 Better. 03:04:12 irssi autocompleted to the wrong command 03:04:16 Ah 03:04:18 -!- oerjan has set channel mode: -o oerjan. 03:04:19 kick instead of kickban? 03:04:22 yeah 03:05:23 Bizarre that it came back ... was there a human attached to that spam??? 03:05:42 should we care? 03:06:00 No, but that doesn't mean you can't consider it a curiosity :P 03:14:30 oh dude did I miss something? 03:14:46 bahahahahaha 03:15:43 oerjan: the pleas for reconsideration must be the most rewarding aspect of IRC operating. 03:16:41 what pleas? 03:16:42 lol.. what the 03:17:02 22:03 < Rachel88> wait 03:17:30 i didn't see that 03:17:52 this is the most exciting thing to happen in #esoteric all day? :-D 03:17:57 -!- MSleep has joined. 03:18:08 ^ s/day?/day 03:18:14 -!- MSleep has changed nick to MDude. 03:18:52 itidus21: probably 03:18:54 oh god I've changed so many things there's no way this is going to work first try. 03:32:34 kallisti: I love that feeling 03:37:49 -!- PiRSquared17 has changed nick to {{stub}}. 03:38:19 -!- {{stub}} has changed nick to PiRSquared17. 03:40:42 * kallisti completely gutted his IRC bot and put in a plugin system. 03:42:27 now you just need slow and buggy implementations of half of common lisp and sendmail. 03:43:33 uuuugh why does perl require modules to return a true value 03:43:47 so it knows you're not lying, duh 03:44:34 kallisti, oerjan update 03:44:48 Because I need to ping two people, don't I?) 03:46:06 only in Perl is it customary to end a file with a 1; 04:08:55 kallisti: I don't know; maybe just in case you sometimes need it to check something instead of always success 04:10:01 zzo38: well yes that's the purpose. 04:19:29 -!- Jafet has joined. 04:44:23 What is "usefulness of uselessness"? 04:45:38 -!- PiRSquared17 has changed nick to Picommand. 04:47:08 -!- Picommand has changed nick to Pi_Quadrant. 04:49:18 -!- Pi_Quadrant has changed nick to PiRSquared17. 04:52:08 -!- oerjan has quit (Quit: Good night). 04:52:41 -!- PiRSquared17 has quit (Quit: Bye! ...). 04:59:27 -!- augur has quit (Remote host closed the connection). 05:05:45 * kallisti loves making things unecessarily flexible. 05:28:05 zzo38, that's what exceptions are for. 06:12:22 -!- DCliche has quit (Quit: You are now graced with my absence.). 06:41:17 http://beust.com/weblog/2010/07/28/why-scalas-option-and-haskells-maybe-types-wont-save-you-from-null/ 06:41:26 This person is an idiot, but does he work on other stuff? 06:43:00 TestNG 06:44:39 he writes about a lot of stuff 06:44:43 many people think he's an idiot 06:44:51 I don't really mind him much, if I don't pay too much attention to what he says 06:49:27 -!- itidus21 has quit (Read error: Connection reset by peer). 06:49:47 copumpkin: That's not how you deal with people on the Internet who don't agree with you on everything. 06:49:56 oh 06:50:28 * shachaf is glad to have explained the matter. 06:53:52 "I find that hash tables allowing null values are rare to the point where this limitation has never bothered me in fifteen years of Java." 06:53:55 ........... 06:54:36 "See what’s going on here? You avoid a NullPointerException by… testing against null, except that it's called None. What have we gained, exactly?" 06:54:50 compile-time error vs. runtime error (er, well... in Haskell, I don't know anything about Scala) 06:55:26 Can still get the equivalent of a NullPointerException by doing fromJust 06:55:40 But if you use fromJust without any sort of checking, you're a moron. 06:55:58 Isn't the whole point of Option to... statically type for null types? 06:56:01 other good things to do: unsafeCoerce, unsafePerformIO, kill yourself 06:56:47 Are there valid uses of fromJust? 06:56:56 yes 06:57:06 there are also valid uses of unsafeCoerce, unsafePerformIO 06:57:11 Although I think I've seen a recommendation that even in those cases, better to use a case where the Nothing case points to an error "Blah blah blah" 06:57:32 Sgeo: it's generally safe to use fromJust if you know for certain that Nothing is impossible. 06:57:49 kallisti: Please don't use fromJust even if you know for certain that Nothing is impossible. 06:58:02 it happens so infrequently that I don't have to! 06:58:06 :) 06:58:10 Even when it happens, don't use fromJust. 06:58:18 Use let Just x = ..., or something. 06:58:24 is the reason: because I may be stupid? 06:58:34 fromjust is nice in ghci and friends at the very least 06:58:38 what's wrong with fromJust? 06:58:43 compared to pattern matching? 06:58:44 The reason is: If it turns out to be Nothing, the error message will be completely unhelpful. 06:58:54 > fromJust Nothing 06:58:54 *Exception: Maybe.fromJust: Nothing 06:59:10 Whereas if you do let Just x =, or fromMaybe (error "something useful"), the error message will tell you something. 06:59:14 Haskell's runtime errors could certainly use an improvement 06:59:20 Remember that you don't really get stack traces in Haskell. 06:59:29 > let Just x = Nothing 06:59:30 not an expression: `let Just x = Nothing' 06:59:32 just a line number would be nice 06:59:38 oh 06:59:39 > let Just x = Nothing in 5 06:59:40 5 06:59:40 > let Just x = Nothing in x 06:59:41 *Exception: :3:4-19: Irrefutable pattern failed for pattern Da... 06:59:45 oh right haha laziness wow 06:59:54 monqy: haha 06:59:56 I think fromJust is OK, although usually it should not be used. 06:59:57 kallisti: That's why you use let! 07:00:11 Giving you a line number would be equivalent to giving you a stack trace, more or less. 07:00:22 Unless you mean that you want the line number of the line that fromJust is defined in. 07:00:39 no. 07:01:27 Anyway, if you know that it's never Nothing, just don't use a Maybe. 07:03:24 it's a hypothetical scenario. Perhaps a function that could result in Nothing doesn't when given a certain input. 07:03:33 I'm not saying it's common as it's probably not. 07:05:34 If it's given a certain input, and you know the output, you don't need to call the function 07:05:35 >.> 07:06:12 -!- MDude has changed nick to MSleep. 07:06:38 Sgeo: uh... I didn't say I know the output 07:06:42 just that I know it's not a Nothing 07:07:01 but yes pattern matching gives better errors, that's true. 07:09:50 -!- itidus21 has joined. 07:17:11 -!- itidus21 has quit (Read error: Operation timed out). 07:21:03 !perl use File::Spec 07:21:10 !perl use File::Spec; print %INC; 07:21:11 warnings.pm/usr/share/perl/5.10/warnings.pmwarnings/register.pm/usr/share/perl/5.10/warnings/register.pmFile/Spec.pm/usr/share/perl/5.10/File/Spec.pmFile/Spec/Unix.pm/usr/share/perl/5.10/File/Spec/Unix.pmvars.pm/usr/share/perl/5.10/vars.pmstrict.pm/usr/share/perl/5.10/strict.pm 07:22:03 !perl use File::Spec; $INC{"/usr/share/perl/5.10/File/Spec/Unix.pm"} = undef; 07:22:07 yesssss 07:24:24 !perl print keys %INC 07:24:36 !perl use File::Spec; print keys %INC 07:24:37 warnings.pmwarnings/register.pmFile/Spec.pmFile/Spec/Unix.pmvars.pmstrict.pm 07:24:47 ah 07:27:16 I just sent one of those... what do you call it... a facsimile, or "fux" for short. How... 1980s? 07:27:29 fizzie: hey! I've done that before! 07:27:39 recently in fact. 07:28:36 It had my signature on it. It's crazy how that's seen as somehow reliable and tamper-proof and whatever, but an email with a scanned bitmap is obviously completely untrustworthy. (Let alone an email with just a digital signature.) 07:31:42 I have a package of four monad transformers: FinderT, InbindT, ReadthisT, WithoutT. 07:33:13 ReadthisT? 07:33:25 Actually, what are any of them? 07:33:40 ReadmeT, a monad transformer to force people to read your READMEs 07:34:01 ReadthisT allows a monad to access itself except for the return values. 07:35:53 newtype ReadthisT f x = ReadthisT { runReadthisT :: f () -> f x }; 07:37:11 Now do you know what it means? 07:38:02 Erm 07:38:09 Not really 07:42:54 readself x = x >>= ($ (() <$ x)) . runReadthisT; 07:43:04 readfunc = ReadthisT . (pure .); 07:44:59 readfunc fst :: ReadthisT ((,) String) String; (using (,) monad from Data.Monoid.Plus) Now you read the so far accumulated string 07:45:49 Now can you understand it better? 07:47:20 -!- augur has joined. 07:49:32 kallisti, update 07:55:39 -!- itidus21 has joined. 08:01:37 -!- myndzi has quit (Read error: Connection reset by peer). 08:02:02 -!- myndzi has joined. 08:35:08 -!- zzo38 has quit (Remote host closed the connection). 08:46:43 -!- monqy has quit (Quit: hello). 08:47:22 "You want to fuck with a mathematician? Just begin a sentence with, "Let ϵ → ∞." 08:47:28 *wince* 08:47:56 The limit as ϵ → ∞ ? 08:52:59 -!- Sgeo has quit (Ping timeout: 240 seconds). 08:54:03 -!- Sgeo has joined. 08:59:09 i can't see those characters :( 09:04:29 epsilon, rightarrow, and infinity 09:04:59 Wait, I don't know if that's an epsilon 09:05:11 it probably is 09:05:21 because epsilon is usually not used like that 09:05:27 I think it's big epsilon and not small? 09:05:35 It looks more like backwards "in set" thingy 09:05:35 dunno. I suck at greek. 09:05:56 Wait, not backwards 09:06:07 It looks like the in-set thingy 09:06:15 argh, this thing claims to have "unicode support", should i be seeing those? 09:06:23 yes 09:06:26 Probably 09:06:35 kvirc 09:07:58 i have 4.0.4 and 3.2.6 apparently already had unicode support 09:08:21 Check the font 09:09:43 dfd 09:09:49 hnnnngh 09:10:02 it would be awesome to have an OS that you could ask to do things. 09:10:23 and it would ask questions to clarify information until it was specific enough that it would confirm if you want to do something 09:10:41 what fonts do you use 09:10:44 i had consolas 09:10:57 * kallisti imagines typing something like "get more fonts" and then it responds with "would you like to install such and such font pack?" 09:11:15 if it's not monospace, please just say "i don't use a font, i'm a stupid" 09:11:22 Hold on 09:11:46 As it turns out, it is monospace. 09:11:53 Literally Monospace 09:11:56 oklopol: do you think monospace fonts are appropriate for all situations? 09:11:57 :P 09:12:01 kallisti: yes 09:12:12 I don't know how Monospace is a font, but it is 09:12:27 Unless it is codeword for "System default monospace font" 09:12:39 Sgeo: It's U+03F5 GREEK LUNATE EPSILON SYMBOL, aka 'straight epsilon'; as opposed to something like U+03B5 GREEK SMALL LETTER EPSILON. (TeXwise, it's \epsilon and not \varepsilon.) 09:12:55 Ah 09:13:09 so okay just the usual epsilon 09:13:13 I wonder what the Greeks would think of our use of their alphabet 09:13:21 my colleague is greek 09:13:26 Sgeo: "asshole" 09:13:28 They would say STOP STEALING OUR LETTERS YOU BASTURDS. 09:13:29 er 09:13:30 *assholes 09:13:38 yes, precisely. 09:13:58 They'd be all "soon we can't write at all because you've stolen all our letters". 09:14:23 all of their small epsilons will expand into nothingness. 09:14:28 as they write. 09:14:32 he uses them exactly like everyone else, except that he doesn't make a clear distinction between m and for instance and just pronounces each as em or mu at random 09:14:50 just like i don't differentiate between M, m and others in speech 09:15:39 µ2 09:15:43 (Sorry, I had to) 09:15:57 Sgeo: ahahahahahahahaihswerjwerjwejr 09:16:00 you should write 09:16:04 a webcomic bro 09:16:09 what was that 09:16:17 oh 09:16:29 oklopol: nothing, don't mistake my fake laughter for laughter at something interesting. 09:16:40 oklopol, mu 2 09:17:14 yeah, that i realized 09:17:19 still don't know what the joke is 09:17:36 There's a pokemon called Mewtwo 09:18:14 well yeah, true, it means something. 09:18:19 good one bro 09:18:27 :DDDDDDDDDDDDDDDDDD 09:19:25 was 2 the one that looked like random pixels in that one pokemon version 09:19:46 No, that's Missingno 09:19:51 o. 09:20:36 -!- TeruFSX has quit (Read error: Connection reset by peer). 09:20:37 Hmm, it might be Missingno. 09:21:19 i'm sure it is 09:23:32 Note that none of this should be taken to imply that I know much about Pokemon. 09:26:08 -!- cswords has joined. 09:48:47 `welcome cswords 09:48:54 `?welcome cswords 09:48:55 cswords: Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page 09:48:56 ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: ?welcome: not found 09:49:19 o.O 09:50:08 Sorry, I have no idea if you're a regular or not 09:50:39 Nope, new here. 09:50:51 Grad student in PL, looking for some neat hangouts. 09:52:14 Ah 09:52:45 The thing is, sometimes people come in who are looking for weird spiritual stuff, "esoterica" I guess. That's not what this is about. PL stuff is what this is about 09:53:03 So, just wanted to be sure. And welcome! 09:53:38 Isn't there a chanserv-driven automagical welcome message anyhow? Or does that sort of thing still exist? 09:53:53 Well, thanks for the welcome! It seems liek ti'll be a good time. 09:54:08 Hmm... 09:54:15 Does lambdabot break if you feed it little omega? 09:54:38 Hmm? 09:54:44 lambdabot is a Haskell bot 09:54:49 Yes, I know. 09:55:02 Ah. I'm not sure what you mean by little omega >.> 09:55:07 lambdabot, ((lambda (x) (x x)) (lambda (x) (x x)) 09:55:11 It's got an evaluation time limit. 09:55:14 Ah. 09:55:20 The ones I've seen don't. 09:55:26 So they hit that and die. 09:55:50 > (\x -> x x) (\x -> x x) 09:55:51 Occurs check: cannot construct the infinite type: t = t -> t1 09:56:12 :D 09:56:14 Nice. 09:56:14 Here's one long-running thing: 09:56:15 > fix id 09:56:19 mueval-core: Time limit exceeded 09:56:30 * cswords doesn't know much Haskell... yet. 09:56:40 :t fix 09:56:41 forall a. (a -> a) -> a 09:56:42 :t id 09:56:43 forall a. a -> a 09:58:08 Whoops, there's a department christmas lunch thing-thing now. -> 09:58:24 I need to go to sleep soon 10:07:25 -!- GreaseMonkey has quit (Quit: The Other Game). 10:08:19 ^source 10:08:19 http://git.zem.fi/fungot/blob/HEAD:/fungot.b98 10:08:27 There's another topical bot. 10:08:42 (Forgot to advertise it for a moment there.) 10:09:13 fungot: What do you have to say for yourself? 10:09:13 fizzie: fnord juhannusn fnord fnord 10:09:29 fungot: Nice first impression there, dude. 10:09:29 fizzie: i didn't know that. thanks catfive :) i need dynamic class support ( dynamic fnord of c modules", which means that i have 10:15:27 Night 10:16:43 Night at noon. 11:02:16 -!- op_4 has quit (Ping timeout: 240 seconds). 11:03:12 -!- op_4 has joined. 11:14:55 -!- kmc has joined. 12:26:44 -!- cswords has quit (Read error: Connection reset by peer). 13:37:37 -!- Patashu has quit (Quit: MSN: Patashu@hotmail.com , Gmail: Patashu0@gmail.com , AIM: Patashu0 , YIM: patashu2 , Skype: patashu0 .). 13:51:06 -!- elliott has joined. 13:53:54 hi 13:53:54 elliott: You have 5 new messages. '/msg lambdabot @messages' to read them. 13:54:00 lambdabot: hi 13:54:14 Gregor said 20h 57m 45s ago: DAAA DADADAAA DADA DADADADADADADADA DAAA DADADAAA DADA DADADADADADADADA 13:54:14 oerjan said 17h 11m 25s ago: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 13:54:21 What a beautiful collaboration. 14:02:56 -!- Ngevd has joined. 14:05:20 Hello! 14:11:11 -!- derdon has joined. 14:11:48 -!- derrik has joined. 14:25:34 hi Ngevd 14:26:41 -!- pikhq_ has joined. 14:26:50 -!- pikhq has quit (Ping timeout: 240 seconds). 14:28:40 -!- Taneb has joined. 14:28:44 Hello, try 2 14:29:25 hi 14:30:44 -!- Ngevd has quit (Ping timeout: 248 seconds). 14:45:10 -!- Ngevd has joined. 14:46:10 -!- Taneb has quit (Ping timeout: 252 seconds). 15:05:27 Aaaaaaaaaaaaaaaaa I am being sucked into the vortex 15:05:44 How big a vortex? 15:06:15 The biggest 15:06:16 vortex 15:06:27 Oh no 15:15:16 -!- MSleep has changed nick to MDude. 15:19:04 -!- copumpkin has quit (Quit: Computer has gone to sleep.). 15:46:49 -!- copumpkin has joined. 15:53:21 -!- nullbytes has joined. 15:53:40 Is it actually possible to write a brainhype interpreter? 15:58:24 No. 15:58:31 Assuming brainhype is what I recall it being. 15:58:58 "This language is "super-Turing-complete" because it solves the halting problem for Turing machines." 15:59:06 So, yeah, unimplementable, assuming the Church-Turing thesis is true. 15:59:14 (That means no. :p) 15:59:45 But it says "you can write a Brainhype interpreter in Scheme-omega." 16:00:17 nullbytes: Yes, but you can't write a Scheme-omega interpreter, either. 16:00:41 So, OK, you can write an interpreter, just not an interpreter in anything you can run :) 16:00:47 :( the wiki page doesnt make that part clear 16:01:00 The linked page does. Well, assuming you're familiar with the halting problem. 16:01:17 Technically you can't run any Turing-complete languages either because computers have finite memory. 16:01:27 But it's easier to fake that than it is to fake a solution to the halting problem :P 16:01:59 Cant the halting problem be solved for programs with very limited memory? 16:02:14 A Turing machine can solve the halting problem for finite state machines, yes. 16:02:23 However brainfuck is Turing-complete, not a finite state automaton. 16:02:32 And brainhype is brainfuck + extras. 16:03:37 But what if at every instruction you record the instruction and everything in memory. If this ever repeats or you run out of memory, theres an infinite loop 16:04:12 nullbytes: That works for finite state machines. 16:04:20 Turing machines have infinite loops with non-repeating states. 16:04:30 +[>+] -- this brainfuck program runs forever, but never repeats state. 16:04:56 (The original brainfuck interpreter only had some 30k cells, but the conventional version and the one brainhype is based on has infinite memory.) 16:04:59 well couldnt you limit the available memory and call every combination of bits a state? 16:06:10 If you limit the available memory, then it's no longer Turing complete, and it's no longer brainfuck. 16:06:21 ok thank you 16:06:24 -!- nullbytes has quit (Quit: Page closed). 16:06:39 I think I broke him. 16:06:55 Ngevd: Do you know the HORROR of the halting problem? 16:16:37 elliott, I do not 16:16:47 Ngevd: WEEP, MORTAL!!! 16:16:53 WEEP IN HORROR 16:17:27 -!- ais523 has joined. 16:19:10 hi ais523 16:19:17 we just tried to prove the halting problem a couple of times 16:19:21 erm 16:19:22 disprove 16:19:24 prove it possible 16:19:25 to solve 16:19:25 whatever 16:19:50 hmm 16:19:50 ais523: You have 1 new message. '/msg lambdabot @messages' to read it. 16:19:59 you were trying to write a general halt-detector? 16:20:18 well no not _me_ 16:20:22 you-plural 16:20:32 http://codu.org/logs/log/_esoteric/2011-12-15#155321 :p 16:20:34 Not very hard 16:20:36 ok, so it lasted all of ~30 lines 16:20:45 I'd be very surprised if the halting theorem turned out to be incorrect; its proof is pretty simple and it's stood up for years 16:21:19 ais523: But it'd make all those pesky problems about countable sets decidable! 16:22:08 Someone should figure out exactly how much you can solve with a halting oracle; I'm pretty sure you can nest it to solve some statements about uncountable sets, but I don't think it can do everything. 16:22:28 Probably somebody already has. 16:23:05 wow, security update in bzip2 16:23:17 that's a little surprising 16:23:31 (temporary file related) 16:23:38 It zipped too far. 16:23:41 also, vague arrgh at gksudo stealing focus 16:23:45 It was threatening the very integrity of the universe. 16:23:46 although, I can see why it /does/ 16:23:52 ais523: err, gksudo really really should steal focus 16:24:01 (it stealing focus and the user not expecting it is annoying, the other way round is insecure) 16:24:15 ais523: technically, it should steal focus and then not focus the password field 16:24:35 or a malicious program could time a gksudo to start right before you enter your email password or whatever 16:24:37 haha, beautiful 16:24:40 and hope that it's the same as your system password 16:24:59 gksudo takes a while to start, it'd have to time it quite accurately 16:25:20 it's also very noticeable, so I doubt it's a very plausible exlpoit :P 16:25:48 actually, not focusing the password field doesn't solve that 16:25:55 in case your email password field is in the centre of the screen 16:26:07 it should steal focus, freeze for a second or two, and then focus the password field 16:26:10 wow that sounds annoying 16:26:16 i bet openbsd gksudo does that 16:26:40 and randomize how long it freezes for 16:27:16 with a cryptosure randomizer 16:27:23 ais523: hmm, this means that optimising gksudo could cause a security exploit 16:27:28 thanks to making that attack more practical 16:27:41 *security hole 16:28:18 aaargh, why is this so addictive 16:28:30 why is what so addictive? 16:29:04 Stack Overflow; I joined yesterday to ask a git question and have somehow amassed 313 reputation since 16:30:23 elliott, you are good at answering other people's questions. 16:30:29 Consider making a talk show 16:30:32 elliott: hmm 16:30:32 I've only answered 4! 16:30:43 I actually went and uninstalled Dungeons of Dredmor, then deleted the .deb 16:30:53 I can redownload it, but that requires effort and an Internet connection 16:30:58 why did you do that? 16:31:31 because it's addictive in an MMO sort of way 16:31:38 and I noticed 16:31:49 heh 16:31:56 after being awake for 23 hours continuously, almost all of which were playing games 16:32:09 ais523: incidentally, how does scapegoat handle http://stackoverflow.com/questions/8500282/git-merging-changes-after-branching-before-a-revert? 16:32:11 it is basically a single-player MMO in terms of game design… 16:32:25 I would say "hopefully better than git", but I don't blame git for handling a really, really stupid user imperfectly 16:32:48 elliott: pull everything but the revert; if it can't automatically be resolved, you get a conflict 16:33:01 ais523: hey, you're not allowed to answer based on the url 16:33:04 it's more complex than that 16:33:07 elliott: I'm reading the page 16:33:11 oh :P 16:33:30 ais523: wouldn't future merges pull in the revert too? 16:33:34 elliott: that's an example of my "simplest thing git can't do" example 16:33:49 since it's part of master but not restructure, and ergo should be pulled in 16:33:55 elliott: no, you have to pull in all changes explicitly or implicitly; you can choose to not pull a dependency and then you get a conflict 16:33:58 ais523: oh, git can definitely do what you said 16:34:10 so you define tip as "all changes in master except change X" 16:34:13 I even did that, with git cherry-pick 16:34:16 actually, even darcs can do that 16:34:39 although I think it just refuses to merge, rather than giving a conflict, if you leave out a dependency 16:34:54 wait, you asked that question? 16:35:01 yes 16:35:07 is that surprising? 16:35:26 "Yeah, I tried this before, and it does bring the right changes over to restructure, but after trying to merge things back into master (just locally, to check that the cherry-picking hadn't broken anything), everything seemed to fall apart even more than previously." -- simplest thing git can't do 16:35:33 elliott: yes, in a way 16:35:44 I vaguely forgot you weren't Adeon 16:36:00 ais523: well, it didn't fall apart due to the cherry-picks, IIRC, but I don't remember exactly 16:36:02 and who's Adeon? 16:36:12 probably the best NetHack realtime speedrunner in the world 16:36:22 err, that sounds... relevant? 16:36:53 well, we once figured out it was him who got a record because he was insufficiently annoyed when the fact that his record had been broken by someone anonymous came to light 16:37:13 haha 16:37:18 I'm still not seeing the relevance, mind you 16:37:38 well, it's the way you were talking about the author 16:37:50 oh 16:37:59 I wouldn't call someone /else/ who asked that really, really stupid 16:38:20 that's reserved for, umm, I can't think of anything VCS-related you could do to earn that title 16:38:47 ais523: I assumed "I joined yesterday to ask a git question" made it obvious :P 16:40:51 hmm 16:40:59 I should probably switch to xmonad today, or I never will 16:42:47 why today in particular? 16:43:27 Tomorrow they remove the letter "m" from the alphabet 16:43:36 ais523: because I decided to yesterday 16:47:37 -!- Taneb has joined. 16:47:39 ais523: (that makes sense, right?) 16:47:45 yes, in a way 16:47:56 no if you've ever decided to use xmonad in the past and not acted on it, though 16:48:12 hmm, howso? 16:48:20 wow, Montclair State University has just sued Oracle for extortion 16:48:53 is a university large enough to successfully sue Oracle, I wonder? 16:51:38 -!- Ngevd has quit (Ping timeout: 276 seconds). 16:52:05 !logs 16:55:17 elliott: what's that meant to do? 16:55:24 what it does do 16:55:40 nothing visible in channel, at least 16:55:46 does it do anything via PM/PN/DCC? 16:55:53 yes 16:57:57 "The people in #haskell channel kept tolding me things that don't go." --zzo38, in these logs i'm gepping 16:57:58 grepping 16:58:20 "tolding" sounds like a time travel verb 17:00:24 "Toading" sounds like a sexual perversion in the Mushroom Kingdom. 17:00:37 the unabomber should destroy both oracle and montclair 17:00:38 -!- cswords has joined. 17:01:03 Uh oh, somebody in Indiana. 17:01:13 You know what they say about people in Indiana! Not much actually. 17:01:41 meanwhile, it seems that And Yet It Moves actually has an achievement called Gregor 17:02:02 ais523: Gregor is the greatest of all achievements. Many hope to achieve Gregor, few succeed. 17:02:14 well, I achieved it reasonably easily 17:02:23 (it's for doing five levels in limited rotations mode) 17:02:25 Lies 17:02:36 o.O 17:02:36 perhaps it's a different Gregor 17:02:37 What? 17:03:00 I'm a PL grad student in CS at IU Bloomington, if that gets me any street cred. 17:03:05 `? welcome 17:03:08 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 17:03:11 cswords: Uh oh, I think we're supposed to fight now. 17:03:22 cswords: 'cuz I'm a PL grad student in CS at Purdue West Lafayette :P 17:03:29 Well. 17:03:32 meh, just do what I do when I come across someone from Manchester 17:03:40 which is to ineffectually trade a couple of insults then get bored 17:03:45 My school has a Dan Friedman and a Kent Dybvig. Can I harness those? 17:04:01 cswords: My school has RCS and ... aww fuck. 17:04:50 You guys recently got Amal, right? 17:04:53 She's pretty legit. 17:04:56 hey, RCS was good for its time 17:05:34 ais523: I'm just making hyukjokes here :P 17:06:33 hmm, UK media are starting to cover the US election, now 17:06:35 what's it like over there? 17:07:00 ais523: The republican primaries are even more of a zoo than they usually are. 17:07:11 what do you mean by "zoo"? 17:07:12 ais523: And the democrats are basically standing back going "... dafuq" 17:07:17 That. 17:07:20 ais523: Where do I even begin. 17:07:25 The republicans have chosen a bunch of crazies to run. 17:07:30 It's like they thought 17:07:40 ais523: http://www.youtube.com/watch?v=0PAJNntoRgA Here's one contender 17:07:51 "We're never going to beat Obama. Let's just run one of those people we've been promising for decades because there's never a chance he'll win." 17:07:57 Gregor: go for it anyway, I know that the US election process probably /is/ as crazy as the UK media makes it look, but still find it hard to believe 17:08:04 cswords: ah, I see 17:08:15 I actually think Biden was the sanest Republican candidate there's been for a while 17:08:22 (Palin, not so much…) 17:08:29 Also, I lived in Texas for a long while. I would never, ever vote for Rick Perry. 17:08:48 he actually became noticeably crazier while campaiging for the election, then back to normal after Obama won 17:08:51 Joe Biden, the guy currentl in office as a democrat? 17:08:57 err, not hm 17:08:59 McCain 17:09:07 I get confused easily between American politicans 17:09:09 *politicians 17:09:33 Ah. 17:09:36 (presumably the same happens in reverse: how many Americans here know the deputy prime minister of the UK?) 17:09:43 George McBush and Alaska Spice, you mean? 17:09:47 So who's still really in the running? I guess Mitt Romney and .... Mitt Romney. 17:09:53 ais523, I can google it? 17:09:53 cswords: "Alaska Spice" X-D 17:10:02 Yeah, Mitt Romney is pretty much the only sane one. 17:10:04 And he's even crazy. 17:10:09 cswords: indeed 17:10:12 but that's not a case of knowing it 17:10:15 As republicans this year go, he's quite sane. 17:10:26 That doesn't make him especially sane, because it's a very biased polling group. 17:10:27 Gregor: ooh, I've even heard of him 17:10:28 But y'know. 17:10:57 I just want to beat politicians with sticks. 17:11:00 I feel like it would be more productive. 17:11:12 come to think of it, most UKians probably couldn't name the leader of the opposition at the moment 17:11:15 ais523: Herman Cain was a "major" candidate for a while. He was the CEO of a pizza chain and quoted an "anonymous poet" when he was actually quoting the theme of the Pokemon 2000 movie. 17:11:32 Gregor: well, does Pokémon 2000 have its poet credited? 17:11:36 if not, it's done by an anonymous poet 17:11:36 ais523, Ed whatshisname with the brother 17:11:42 Not Balls 17:11:43 The other one 17:11:47 Taneb: Milliband? 17:11:53 I know it's one of the Millibands, but can't remember which 17:11:53 ais523: It's not a secret, and it's not poetry, it's a piece of shitty music that's the theme to a movie :P 17:11:59 ais523, that one 17:12:07 And I know it's one of the Eds 17:12:10 let's see… the way to remember it is that there's two Eds and two Millibands 17:12:14 so we just take the intersection? 17:12:18 that's a surprisingly simple mnemonic 17:12:27 It's not Harriet Harman 17:12:37 just remember it doesn't matter who wins 17:12:51 itidus21: in the US, or the UK? 17:12:56 in the UK it generally does matter 17:12:57 Honestly, that pokemon thing was probably just his script writer messing with him. 17:12:57 hahahha.. anywhere? 17:13:08 Frankly I think the funniest wannabe-contender is Santorum. He honestly couldn't even get into the runnings because his name means "the frothy mix of lube and feces that is sometimes an unintended result of anal sex" 17:13:40 itidus21: you get occasionally noticeable third-or-subsequent-party wins in the UK 17:13:44 ais523: i doubt that it matters in any meaningful sense 17:13:58 and noticeable effects on the resulting policy too, especially on Europe 17:14:17 it's even possible that Scotland will referendum about independence some time soon 17:14:23 cswords: You can see we talk about esoteric programming a lot here. 17:14:31 after the results of the last election 17:14:38 OHHHH, CS words? Not C-Swords? Or both? 17:14:39 Gregor: hey, can't political bribery be considered an esolang? 17:14:50 Gregor: I was wondering that myself, I saw both expansions pretty quickly 17:14:51 We should make an esolang about European politics 17:14:52 ais523: Too mainstream :P 17:15:17 Taneb: of the EU government in particular? or the various member states? 17:15:18 And I was too busy trying to figure out what "csw" meant 17:15:21 Whois suggests it's probably C. Swords 17:15:22 their governments aren't that similar to each other 17:15:25 ais523, europe as a whole 17:15:35 Taneb: both? 17:15:37 With all the minutuae 17:15:42 Gregor, it's C. Swords. 17:15:47 Right down to the councillor for Hexham East 17:15:50 Though apparently I've been mistaken for a bot who spews CS terms. 17:16:02 Taneb: what constituency is Hexham in, btw? 17:16:02 hexham is full of idiots 17:16:07 is it large enough to have one for itself? 17:16:09 ais523, the handily named Hexham 17:16:16 Not large enough, remote enough 17:16:20 indeed, that's quite a convenient name 17:16:27 cswords: Haha, now we know who you are! 17:16:35 It's one of the largest in England 17:16:36 oh, it's the only place of note in the entire surrounding countryside, so the constituency it's in is named after it? 17:16:42 Yup 17:16:46 cswords: Although if you get a PhD, you'll be Dr. Swords, which is almost as good as my colleague Prof. Hammer 17:16:56 Haha. 17:17:00 It contains the point in the UK that is furthest from a road 17:17:01 That's part of why I'm working on my PhD. 17:17:02 I think 17:17:11 I can become a supervillain without even changing my name. 17:17:17 If I had a PhD, I'd sound like a supervillain almost as much 17:17:21 With a little keming 17:17:33 Dr. Richards. BORING NAME. *sobblecopter* 17:18:07 hmm, I couldn't become a supervillain without changing my name, but not because of the name 17:18:12 I'm just not cut out to be a supervillain :( 17:18:23 you're not evil enough 17:18:27 indeed 17:18:41 you're the margarine of evil, the diet coke of evil 17:19:14 I think he's closer to the Ghandi of evil 17:19:16 I'd probably be pretty bad even as a subvillain, to be fair 17:19:22 That is, not even evil 17:20:06 Actually, if I got a PhD, I think Marvel could have a could try at a lawsuit against me 17:20:27 Taneb: We don't know your surname :P 17:20:30 hexham in the UK? 17:20:35 itidus21, yes 17:20:35 itidus21: it is 17:20:40 Gregor, van Doorn 17:21:08 i live on the roof of the forum cinema in hexham 17:21:09 there are also three esolangers there: elliott, Taneb, and we don't know of the existence of the third but I'm claiming they exist now in order to be able to go "see? I was right" later 17:21:34 back 17:21:37 itidus21, I reckon you're closer to spoon's roof 17:21:49 oh, a new person! 17:21:50 ais523: Obviously itidus21 17:21:51 hi cswords 17:22:03 elliott: A /legit/ new person. Not locking us in a matrix of solidity or anything. 17:22:05 elliott: the funny thing is, I expected they'd probably been here before but `?welcomed them anyway 17:22:10 it sure is a small little hamlet 17:22:13 see, my plan paid off! 17:22:32 err, not hm 17:22:32 McCain 17:22:32 :D 17:22:44 Biden McCain 17:22:58 Gregor: Then who is going to lock us in our matrix of solidity? :/ 17:23:10 I can be found in Gallowsbank Wood... 17:23:10 itidus21, Dilston is a hamlet. Lowgate is a hamlet. /Fellside/ is a hamlet. Hexham is a TOWN godammit! 17:23:26 elliott: Don't worry, we'll ALWAYS be locked in a matrix of solidity. We lock it ourselves. 17:23:55 cswords: BTW: 17:23:57 `help 17:23:58 Runs arbitrary code in GNU/Linux. Type "`", or "`run " for full shell commands. "`fetch " downloads files. Files saved to $PWD are persistent, and $PWD/bin is in $PATH. $PWD is a mercurial repository, "`revert " can be used to revert to a revision. See http://codu.org/projects/hackbot/fshg/ 17:24:04 -!- Vorpal has joined. 17:24:07 hexham is full of idiots 17:24:09 :'( 17:24:12 I wsa here earlier this morning. 17:24:17 Because every new person has to go "huh?" and then try to hack the bot. 17:24:19 :O 17:24:30 Gregor: also, every old person? 17:24:32 cswords: oh, thanks for reminding me I haven't logread yet 17:24:43 How does it handle forkbombs? 17:24:44 * elliott will defer it until there isn't innocent newbies around. 17:24:53 cswords: they just vanish after a while 17:24:54 ` :() { : | :& }; : 17:24:56 ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: : not found 17:24:57 oops 17:25:00 `run :() { : | :& }; : 17:25:03 No output. 17:25:08 :D 17:25:12 ais523: they vanish a lot quicker than that; ulimits 17:25:14 That's good. 17:25:19 ais523: Herman Cain was a "major" candidate for a while. He was the CEO of a pizza chain and quoted an "anonymous poet" when he was actually quoting the theme of the Pokemon 2000 movie. 17:25:19 ais523: It's not a secret, and it's not poetry, it's a piece of shitty music that's the theme to a movie :P 17:25:29 I'm an innocent newbie? 17:25:30 Gregor: Hey, I want to live in a world where major political candidates quote the theme to the Pokemon 2000 movie. 17:25:31 now I'm trying to remember if I've watched Pokémon 2000 17:25:32 I don't feel like one :/ 17:25:37 cswords: Well, maybe a guilty newbie. 17:25:39 what was the plot about? I've watched exactly two Pokémon movies, I Think 17:25:40 *I think 17:25:48 cswords, I was probably the most innocent newbie here 17:25:57 We corrupted Taneb in, like, a day. 17:26:00 ais523, I've seen the first one, and the one with Celebi in it 17:26:03 `quote poultry 17:26:06 200) elliott: My university has two Poultry Science buildings. Two! \ 297) Gregor, yeah, but Purdue has poultry science facilities beyond the dreams of avarice. 17:26:12 cswords: How many poultry science buildings does /your/ university have? 17:26:31 elliott: I'm not aware that mine has any 17:26:33 cswords, I will now transform into my other alias! 17:26:38 -!- Taneb has changed nick to Ngevd. 17:26:39 http://www.google.com/search?rlz=1C1_____enUS420US420&gcx=c&sourceid=chrome&ie=UTF-8&q=IU+bloomington+poultry+science Looks line none. 17:26:39 but it has quite a lot of buildings, so it's possible I just haven't found one yet 17:26:42 `? Ngevd 17:26:43 ais523: it's the one with lugia nd the three islands 17:26:44 S~v8.y[$V&.F..m*`uޱsu#͔کף.Th.U.>-.i*.5eu6*q]q.ŕmL.#y.:VjĎNPH:'.V[OK+v.Z9ɚM*ԽH.k*Q]ia/]95rFԴ.W( B..?.^}]mM 17:26:49 Oy vey, we go CRAZY when there are new people. 17:26:49 one of the three I've seen 17:26:51 CRAAAAAAAAAAZY 17:26:53 cswords: Vastly inferior! 17:27:01 coppro: with the first gen legendary bird trio key to the plot? 17:27:03 Seriously. 17:27:07 in that case, I have watched it 17:27:08 Gregor: Um, we haven't even introduced the other bots yet?? We can get way crazier. 17:27:11 Gah, I have to study for this final at 5. 17:27:12 cswords: Say hi to fungot! 17:27:12 elliott: so i can unroll the loops it's always shorter than the other 17:27:21 It's on type inferencing and logic programming :() 17:27:23 It's written in Funge-98! 17:27:24 ^source 17:27:24 http://git.zem.fi/fungot/blob/HEAD:/fungot.b98 17:27:24 ais523: yes 17:27:32 > "I can do Haskell!" 17:27:32 cswords: ooh, type inference 17:27:33 "I can do Haskell!" 17:27:51 !c printf("And nobody loves me.\n"); 17:27:56 ais523, it's written in miniKanren... 17:27:57 And nobody loves me. 17:27:59 coppro: I always thought those diagrams which changed colour to show the balance of power between the birds would make a good board game, but never figured out how 17:28:08 cswords: Kanren! Didn't Oleg do that? 17:28:13 -!- Phantom_Hoover has joined. 17:28:15 Yeah, with Dan. 17:28:16 hmm, I've never heard of Kanren 17:28:17 ^ul (I have no idea if this will work)S 17:28:17 I have no idea if this will work 17:28:20 (Dan's teaching the class.) 17:28:23 now, elliott will mock me for never having heard of it 17:28:31 ais523, it's a logic programming language embedded in Scheme. 17:28:34 fungot does underload and brainfuck(?), too 17:28:34 * elliott has only ever seen Kanren referenced on Oleg's site. 17:28:34 Ngevd: what can we do it your way since it's your lang). xd. 17:28:37 Hello everyone? 17:28:39 And knows almost nothing about it. 17:28:45 hmm, how do you continue a /me on another line? 17:28:48 elliott: err what, that's out of character for you 17:28:55 both /me and /msg seem inadequate 17:28:58 Ngevd: yep, underload/bf 17:29:01 we need a /me... or something 17:29:05 elliott, http://mitpress.mit.edu/catalog/item/default.asp?ttype=2&tid=10663 Dan's teaching the class and Will is a guy I play starcraft with. 17:29:11 elliott: definitely /msg is better than /me, although I agree it isn't perfect 17:29:14 Egobot can do... 17:29:29 !userinterps 17:29:29 ​Installed user interpreters: acro aol austro bc bct bfbignum brit brooklyn bypass_ignore bytes chaos chiqrsx9p choo cpick ctcp dc decide drawl drome dubya echo ehird elmer fudd glogbot_ignore google graph hello helloworld id insanetemp jethro kraut lperl lsh map monqy num numberwang ook pansy pi pikhq ping pirate plot postmodern postmodern_aoler prefixes python redneck reverse rimshot rot13 rot47 sadbf sanetemp sfedeesh sffedeesh simplename slashes svedeesh sw 17:29:33 cswords: Oh no, not another Starcraft player. 17:29:41 That makes at least two. 17:29:46 elliott: it's quite common 17:29:58 That's almost as many as there are Hexhamites in here! 17:29:59 I was up to platinum back in March, but my thesis and grad school have been eating my skills. 17:30:00 !rot47 abcde 17:30:01 23456 17:30:03 (How long until the bloody Starcraft/Homestuck #esoteric civil war of 2012 begins?) 17:30:10 (Or the Hexham/Helsinki war, I suppose.) 17:30:15 (It could go either way.) 17:30:19 What's Homestuck? 17:30:23 :D 17:30:24 elliott: That ... that is an unlikely war in the real world :P 17:30:27 ::::D 17:30:30 hi 17:30:35 cswords: A very long webcomic. 17:30:42 Very short, too, in a way 17:30:43 Vorpal: this is probably a bad conversation to appear in the middle of 17:30:43 i wonder what properties of hexham inspire esolang 17:30:44 Gregor: Good thing this is IRC, then! 17:30:53 elliott: it's nowhere near as long as Mezzacotta 17:31:05 How 'bout Minecraft? We can get the TRIFECTA 17:31:06 ais523: YET. 17:31:21 Gregor: The Minecrafters seceded like a year ago, dude! 17:31:27 What is Hexham? 17:31:34 cswords: a town in the UK 17:31:35 All attempts to google it end poorly. 17:31:37 Oh. 17:31:37 cswords: A considerably shorter webcomic in Finland. 17:31:39 which is /just/ large enough for me to have heard of it 17:31:55 Helsinki is a Hexham-based RTS game with population ~10k. 17:31:58 elliott currently lives there, so does Ngevd 17:32:10 It seems the two most popular places for esolangers to live are Hexham and Helsinki 17:32:29 I tried to get a friend into esolanging 17:32:34 But he lives in Corbridge... 17:32:39 So he won't :( 17:32:57 So, for the exam, I need to know Monads (mostly just state and reader), type inferencing, logic programming (converting to, reading and explaining output). 17:33:00 This will be... fun. 17:33:02 * elliott will never ally with a despicable Corbdigea... Corbridigia... Corbri... I give up. 17:33:03 Vorpal: this is probably a bad conversation to appear in the middle of <-- okay, I just wanted to check for lambdabot messages really 17:33:18 cswords: Not just type inference but type inferen/cing/? 17:33:21 Ten times more verbed! 17:33:27 @tell Vorpal Hi. 17:33:27 Consider it noted. 17:33:29 Vorpal: #haskell would have been safer 17:33:31 elliott, .. 17:33:31 Vorpal: You have 1 new message. '/msg lambdabot @messages' to read it. 17:33:36 cswords: Dude, in #esoteric the 13-yr-olds know those. Ba-dum tish. 17:33:41 Ah. 17:33:43 elliott, you want "Corstopitan" 17:33:44 Well, nevermind then. 17:33:48 :P 17:34:06 ais523, really? I'm kind of busy and not about to really join into the discussion, but why is it a bad conversation to appear in the middle of? 17:34:15 They use Latin when available and not stupid 17:34:16 too much context required 17:34:26 Like "Oxonian" and "Novacastrian" 17:34:47 *Novocastrian 17:34:49 Sez google 17:34:53 cswords: what do you mean by "logic programming"? I'm pretty sure I know what it is, but am unsure at how to expan that name for it 17:35:07 ais523: Prolog, surely 17:35:08 elliott: just try with Birmingham, it doesn't work 17:35:11 or rather, Kanren :P 17:35:13 but Prolog-alikes, I mean 17:35:16 elliott: ah, OK 17:35:24 I thought that's what it meant, but it didn't seem to make sense in context 17:35:24 ais523, ah. 17:35:28 I wouldn't say Kanren is much like Prolog, to be honest. 17:35:32 ais523: That's easy, residents of Birmingham are referred to as "bums" 17:35:37 ais523: birminghamiltonian 17:35:40 From the original Latin. 17:35:52 coppro: hmm… 17:36:35 (diff) (hist) . . Language list‎; 09:06 . . (+215) . . 149.255.39.58 (Talk) (That's fine for the House and Senate but for president, there is no way any conservative should vote for either Democrat that will be stuffed down our throats next year. The House is the grand prize.) 17:36:39 What a good spam edit summary. 17:37:24 dammit now I have the song from pokemon 2000 stuck in my head 17:37:36 elliott: well, it's not like I can protect the language list 17:37:40 I can, but it'd be pointless 17:37:45 or rather, counterproductive 17:37:49 So glad I never watched a Pookieman movie. 17:37:49 ais523: I didn't tell you to :P 17:37:54 Or had any of the games. 17:37:55 Gregor: WHAT? 17:38:01 Or could name more than two Pookiemans. 17:38:04 elliott: I know 17:38:04 Gregor: Watching at least two is mandatory 17:38:08 Gregor: which two? 17:38:14 Gregor: Uhh, but do you not, to quote an anonymous poet, wanna be the very best, like no-one ever was? 17:38:18 I'd expect you to have at least one in short-term memory as it was mentioned earlier 17:38:21 Gregor, I named a Pokemon after you! 17:38:27 ais523: Pikachu and Squirtle (if I'm spelling that right) 17:38:27 It's now a Kirlia! 17:38:34 Gregor: Not even Bulbasaur? 17:38:36 Gregor: indeed you are 17:38:46 Gregor: The games are also awesome 17:38:49 elliott: I know that names one, but I couldn't associate it with the actual Pookieman. 17:38:55 Gregor: Leaf turtle. 17:38:58 Angry leaf turtle. 17:39:01 you know, some day there'll be someone who says "I only know one/two Pokémon", then names a really obscure one rather than one of the starters 17:39:13 elliott: Then it should be Angryliefturtlemon :P 17:39:15 elliott: hey, it doesn't get leaves until it evolves to Ivysaur 17:39:20 Gregor: but that's /Digimon/'s naming scheme! 17:39:26 ais523: BULBS THEN!! 17:39:27 *gasp* 17:39:29 Tropius and Luvdisc 17:39:42 you know, some day there'll be someone who says "I only know one/two Pokémon", then names a really obscure one rather than one of the starters 17:39:49 ais523: How many Pokemon games until everyone forgets the original starters? 17:39:51 are we now having a Most Obscure Pokemon Naming Challenge? 17:39:55 But yeah, I'm stuck on Petalburg gym 17:39:58 hm I actually played a bit of a pokemon game, yet I can only name Pikachu and Magikarp 17:40:05 I don't remember the names of any other ones 17:40:07 elliott: infinity, they keep plowing on the original starters for marketing value even when they aren't actually in the game 17:40:12 Well it was nice to meet you people! I'm gonna idle here, but disappear to coerce knowledge into my head. 17:40:16 Vorpal: well, Magikarp isn't a starter 17:40:27 ais523, I just remember it being bloody useless 17:40:28 Imagine if it was! 17:40:30 Ngevd: Ruby or Sapphire? 17:40:33 Emerald 17:40:35 I have prepared to war with you depending on the answer. 17:40:36 ais523, anyway neither was Pikachu iirc in that game 17:40:37 Oh. 17:40:43 The Lib Dem option! 17:40:44 What other popular things do I know nothing about ... 17:40:45 ais523, it was some GBA one. Don't remember which. 17:40:48 Vorpal: Pikachu's a starter in Pokémon Yellow 17:40:59 which was based on the plot of the anime 17:41:04 (it's the game of the anime of the game…) 17:41:06 I think it might have been emerald or something like that? 17:41:08 cswords: try unsafeCoerce 17:41:10 that I played a bit of 17:41:22 elliott, I'm left wing anti-unionist. And Emerald is Green. The last Lib Dem Pokemon game was Heart Gold, and before the Gold, and before that, Yellow Pikachu Special 17:41:24 Vorpal: well, Magikarp is not a starter in any game 17:41:27 because it's /Magikarp/ 17:41:27 Emerald was very good 17:41:28 some gem stone anyway 17:41:31 ais523, indeed 17:41:39 gemstone* 17:41:46 Ngevd: Pokemon politics are so confusing. 17:41:50 ais523: Magikarp would be the best starter. 17:41:53 obligatory: http://www.youtube.com/watch?v=ye7b3bOQ6lY 17:41:54 Vorpal: it'd have been Ruby/Sapphire/Emerald 17:41:56 Pokemon Horrific Crippling Failure 17:42:10 elliott: well, it /is/ possible to complete the game without your starter being able to deal damage 17:42:12 ais523, I think the bad guys were "team magma" or something like that 17:42:15 ais523: :D 17:42:16 Vorpal: Sapphire 17:42:17 ah 17:42:30 I love the newest pokedex text for magikarp 17:42:34 that was genuinely the missing piece of information, as one of the few things that varies between third-gen games 17:42:40 Vorpal, or Emerald, but that had team Aqua as villains, too 17:42:44 coppro: what is it? (and is it the same in black and white?) 17:42:58 hm 17:43:08 ais523: It's the same as one of the earlier ones. Basically "It can use Splash to jump over a mountain, but the move is still entirely useless." 17:43:08 *in black as in white 17:43:14 and yeah, it's the same between games 17:43:14 coppro: right, OK 17:43:25 Ngevd, how could I tell which one from a vague recollection of playing a few hours of a game I found rather repetitive. 17:43:28 :P 17:43:46 Vorpal: were you playing on someone else's completed game? or on a new game file? 17:43:46 I mean sure, it was fun for the first hour or two. But then it was just more and more of the same stuff. 17:43:57 ais523, I think I was playing in an emulator. And new game 17:44:10 hmm 17:44:22 one problem with the Pokémon games is that they've mostly gotten easier over time 17:44:24 What colour was your character's headthingy band 17:44:27 with the result that there isn't a whole lot of skill in it any more 17:44:31 ais523: Sort of like all other games? 17:44:45 Ngevd: that varies between third-gen games? 17:44:47 ais523: I always felt that RSE was the worst for difficulty 17:44:47 Gregor: "Games are sooo easy" -- person who doesn't play any games 17:44:51 8-D 17:44:54 ais523, I do believe I got near some sort of temple or something with really hard guys at the very right side of the map before I got too bored and stopped playing. 17:44:55 ais523, between R/S and E 17:45:07 elliott: Back in my day, I didn't have to walk with a cane, but I couldn't shake it at kids on my lawn either! 17:45:08 ais523, R/S is red, E is green 17:45:08 also, you're assuming that Vorpal was playing as Brendon rather than as May 17:45:12 ais523: maybe I'm just bad, but the final fights in BW were a pain, and then the postgame does a massive difficulty spike 17:45:13 `addquote elliott: Back in my day, I didn't have to walk with a cane, but I couldn't shake it at kids on my lawn either! 17:45:13 which is probably quite a safe guess 17:45:15 763) elliott: Back in my day, I didn't have to walk with a cane, but I couldn't shake it at kids on my lawn either! 17:45:17 ais523, who? 17:45:29 Ngevd: err, I thought Brendon's headband was white? 17:45:29 Vorpal: what answer do you expect to that question? 17:45:41 ais523, his hair was, his headband wasn't? 17:45:49 Ngevd: aha, that could have been it 17:45:49 elliott, well, could you select gender or name or something? I don't remember. 17:45:56 Vorpal: you can select gender 17:46:00 ah 17:46:12 Brendon and May are the canon names for the male and female characters that aren't just "Ruby" and "Sapphire" 17:46:14 -!- pikhq_ has quit (Ping timeout: 252 seconds). 17:46:18 -!- pikhq has joined. 17:46:44 ais523, well I /probably/ played as a guy. 17:46:52 What colour was your character's headthingy band <-- you think I could remember that? 17:46:59 no chance 17:47:10 Well, if you remember a temple... 17:47:19 or something like that 17:47:29 might not have actually been called a temple 17:47:33 Probably not the oceanic museum 17:47:45 Probably not the volcano 17:47:50 hmm, have there been /any/ temples in Pokémon? 17:47:56 ais523, in Ranger 17:48:01 Ngevd: definitely, agreed 17:48:05 Ngevd, oh some sort of museum with somewhat educational signs in it sounds familiar now that you mention it 17:48:07 elliott: game difficulty is perhaps the greatest allure of the game... how exactly a game comes to be difficult 17:48:09 I think there was such a thing 17:48:12 oh no, I might have to abort this logread 17:48:16 in the main games, Spear Pillar probably counts, so does that Sinjoh event place in HeartGold/SoulSilver 17:48:31 who can say 17:48:32 And the church in one of the cities in Pearl/Diamond 17:48:40 Ngevd: but that's a church 17:48:41 ais523: The Regigigas temple 17:48:44 hmm, have there been /any/ temples in Pokémon? <-- I don't know what it was actually called. Final dungeon? Whatever. 17:48:44 does that count as a temple 17:48:55 think so 17:48:56 coppro: right, indeed, definitely; "Snowpoint Temple", I forgot about that 17:48:57 It just reminded me of a temple, that was all 17:49:05 Vorpal, hmm 17:49:09 Vorpal: the final dungeon is Victory Road in every Pokémon game so far 17:49:10 Was there lava? 17:49:15 in no game has it even vaguely resembled a temple 17:49:24 ^ 17:49:35 BW had a great Victory Road 17:49:39 Ngevd, at some point in the game yes. There was also some water at in a lake or something :P 17:49:39 ais523, Leaf Green and Fire Red, it did a bit 17:49:43 (note: it's /called/ Victory Road in each game, but is different in each) 17:49:57 in no game has it even vaguely resembled a temple <-- so my memory might be off then. 17:50:04 coppro: hmm, all of them are pretty good 17:50:08 Could it be Mt. Pyre? 17:50:14 eh, no clue 17:50:20 Ngevd: Vorpal said the bosses were to the right 17:50:23 ais523: I found RBY's to be a bit annoying 17:50:25 in Mt. Pyre, they're upwards 17:50:26 -!- Ngevd has quit (Quit: Goodbye). 17:50:35 shurg 17:50:38 coppro: RBY had the best puzzles 17:50:42 ais523: true 17:50:46 well we know it was sapphire or emerald I guess 17:50:48 ais523: is Pokemon Blite/Whack worth playing? 17:50:50 and the Victory Road puzzle is quite a good one 17:50:51 BW's puzzles sucked 17:51:00 and does it really matter which one? 17:51:05 I was especially annoyed by the last gym 17:51:06 elliott: it's not as good as some of the other Pokémon games, but it's still quite good 17:51:12 which the NPCs keep talking about as if it's a real headscratcher 17:51:13 it's extremely linear, unlike most of the others 17:51:14 but it's not 17:51:17 ais523: the only other one I've played is Sapphire 17:51:19 you only have one direction to go 17:51:35 and it's /literally/ linear, in that the accessible-before-endgame world map is literally topologically equivalent to a line 17:51:41 yeah 17:51:48 except Anville Town, but it's intended for competitive players and most other players don't spot it at all on their first run through 17:51:54 HG/SS are definitely the best 17:52:00 coppro: agreed 17:52:30 elliott: Black/White are pretty streamlined and low on annoyances, anyway 17:52:40 after that, probably the original G/S 17:52:56 it has the look about it of a game in an established series that isn't trying to annoy anyone and isn't trying to do anything vastly amazing and new 17:53:00 I really enjoyed FR/LG too, probably above B/W 17:53:00 most of the innovations are in the graphics 17:53:12 D/P are the worst in my opinion 17:53:17 hmm, interesting 17:53:31 perhaps if you ignore the battle system 17:53:34 ais523: hmm, I might play it if DS emulation is good enough; I probably don't care enough to play it on a physical DS 17:53:41 ais523: What would you say is the worst? 17:53:49 elliott: Black/White have anti-emulator code, although it's probably been patched around by now 17:54:00 coppro: well, I haven't actually played FR/LG 17:54:07 ais523: ah 17:54:16 anyway there are two major problems I have with the pokemon games: 1) to me they get repetitive after a few hours 2) Nintendo released multiple versions of the same game basically. I mean, the difference between red/green, sapphire/ruby are basically just that a different team are the bad guys. Sure it is cheaper for nintendo, but I don't think it is fair towards the buyers really 17:54:17 they're all good in different ways 17:54:21 true 17:54:25 Vorpal: "fair"? 17:54:26 R/B hasn't held up all too well with time, I think 17:54:28 you buy one and exactly one of them 17:54:29 I agree 17:54:37 although all the glitches that have been discovered since make it fun just for that 17:54:38 so the buyers end up paying... um, the exact same amount as they would 17:54:54 RBY don't have the improvements in interface that started around 3rd gen 17:55:19 coppro: well, HGSS wins on interface, hands down 17:55:23 yeah 17:55:35 it's kind of annoying to me that they didn't bring the good features back 17:55:36 elliott, right, and then you miss out on content from the other game. They could just have put both stories in the same game with a selection at the start. The difference are rather small from what I understand. 17:55:41 it's the AceHack to gold/silver 17:55:42 Vorpal: there is no content from the other game 17:55:43 you could play HGSS without the ABXY buttons 17:55:48 Vorpal: apart from one pokemon and like 17:55:52 a mirror storyline 17:55:53 which you can trade 17:56:06 if you have one game, you can mathematically derive the other one 17:56:07 elliott, to me, story is important 17:56:15 Vorpal: Emerald's is better anyway 17:56:15 coppro: the explanation to that is that multiple Pokémon games are developed at once 17:56:16 Vorpal: the stories are literally identical, you just s/word/inverse/ 17:56:21 ais523: yeah 17:56:29 e.g. Diamond and Pearl and FireRed/LeafGreen were being developed at the same time 17:56:34 elliott, and different enemy base maps and such. 17:56:36 sapphire: team magma want to get rid of water!!! ruby: team aqua want to get rid of land!!! 17:56:39 I don't know for a fact that that's true with HGSS/BW, but it wouldn't surprise me at all 17:56:42 Vorpal: not to my knowledge 17:56:47 Hopefully Gy will have the non-suck interface from HGSS 17:56:49 Vorpal: the enemy base maps are the same 17:56:57 What really frustrates me about BW is the inconsistency 17:57:00 ais523, heh really? 17:57:06 also, anyone who cares most about story is going to be incredibly disappointed by the pokemon games :P 17:57:16 There are menus where you can't use the touch screen, and menus where you can't use the buttons 17:57:19 elliott: hmm, they've actually made an effort with the story in BW 17:57:19 ais523, so they have to do neutral bases then, rather than theme them after the team? 17:57:23 -!- NihilistDandy has joined. 17:57:32 ais523: huh 17:57:42 it's true 17:57:43 hm is pokemon an RPG? I think it kind of is in that genre 17:57:46 not only is it internally consistent, it's even vaguely plausible, and has something resembling plot 17:57:47 Vorpal: yes 17:57:53 Vorpal: ofc it is 17:57:59 ais523: And, most importantly, emotional investment 17:58:02 well then, how can you say story is not important 17:58:04 I found myself feeling sorry for N by the end of it 17:58:07 coppro: meh, I ignore that 17:58:12 Vorpal: because it isn't? 17:58:15 RPGs have gameplay, too 17:58:20 you can feel sorry for N, but if you think about it, the ending treats him pretty well 17:58:38 "His full name was revealed to be Natural Harmonia Gropius" 17:58:46 elliott, sure, but story is kind of important to them. Much more so than many other genres. 17:58:47 --bulbapedia 17:59:04 ais523: It certainly does; that doesn't mean I can't feel sorry for his history 17:59:06 in that his actions throughout most of the game can be interpreted as an attempt to find out the truth with respect to something in particular, and at the end, he actually discovers it 17:59:23 ais523: ooh, it's spoiler-free spoiler communication 17:59:25 this is always fun! 17:59:30 elliott: indeed 17:59:32 * elliott tries to deduce the spoilers involved through pure reason 17:59:54 well, the whole point in that communication style is that you probably can figure it out if you want to, but it takes enough mental effort that you won't do it without trying 17:59:58 ais523: /most/ of his actions can. Initially he's not; it's encountering the player that causes him to doubt himself and seek the truth 18:00:07 (well, and everyone else. But especially the player) 18:00:21 coppro: hmm; that's one of the possible interpretations, I'm not sure it's the only one 18:00:29 ... goddamit I'm having a discussion about the literary qualities of a Pokemon game 18:00:34 anyway there is little variation in the battles. It is just basically the same all the time. Sure there are different pokemons and leveling them up and items and different techniques and so on. But it is all just "think a bit, select action from menu" 18:00:37 really, if half the world's electorates were anything like N, the world would be a much better place 18:00:41 I don't really enjoy that sort of combat 18:00:45 pikhq: Mr. Emulator! How good is DeSmuME? 18:00:51 ais523: hah, true 18:00:54 `addquote ... goddamit I'm having a discussion about the literary qualities of a Pokemon game 18:00:57 764) ... goddamit I'm having a discussion about the literary qualities of a Pokemon game 18:00:58 elliott, fairly okay for some games at least 18:01:21 elliott: I think desmume is what's used for researching information in Pokémon 18:01:24 like RNG research, etc 18:01:34 elliott, I think I played two games in it. Was a while ago. 18:01:36 Black/White have DRM that attempts to detect it 18:01:46 ais523: well, that's promising; although it might be just because it's open source, rather than an especially good emulator 18:01:47 elliott, not bsnes quality, not even zsnes quality. But okay. 18:01:51 still, if you want to play the games, you should really buy them if you think it's worth the money 18:01:54 which makes it possibly easier to automate 18:02:05 elliott: well, makes it easier to implement features like rerecording 18:02:33 anyway I presume that future pokemon games are going to be on the 3DS? 18:02:34 ais523: I would buy it if Nintendo would sell me ROMs 18:02:54 but given the information I have, I don't think it'd be worth the hassle of playing it on a physical system 18:03:13 Vorpal: not confirmed, but it seems pretty likely 18:03:24 -!- kmc has quit (Quit: Leaving). 18:03:32 especially considering the 3DS's sales figure; Nintendo probably want to put out a Pokémon game to persuade people to buy the console 18:03:36 ais523, I wonder how they will make use of the 3D technology in a pokemon game... 18:03:51 Vorpal: Pokémon's been based on a 3D engine since Platinum? 18:03:53 Vorpal: they've been doing that for multiple generations by now... 18:03:56 ais523, oh okay 18:04:11 Well the overworld has been 18:04:13 although all the sprites are 2D 18:04:14 ok guys we are short on vocabulary and i am not a smart guy 18:04:15 coppro: right 18:04:20 so lets clarify :D 18:04:21 oh, the 3DS isn't actually a DS 18:04:31 I think some of the battle animations are 3D as well 18:04:33 ais523, first person perspective? 18:04:35 regular 3d vs stereoscopic 3d 18:04:48 elliott: 3DS is the successor platform 18:04:49 coppro: seems plausible 18:04:51 even nintendo64 pokemon has regular 3d 18:04:51 actually pretty cool 18:05:00 elliott: and it's backwards-compatible one generation, just like most Nintendo portables 18:05:09 ais523: Well look at ones like Surf, or the Pledges 18:05:13 at the moment, its major problem is that it doesn't have too many good games 18:05:18 ais523: right, I was just so used to the endless DS revisions 18:05:22 nintendo ds was super backwards compatible 18:05:25 that I assumed the 3DS was still basically a DS 18:05:31 itidus21: No, it went back one gen 18:05:33 most of the games fans I've talked to agree that Super Mario 3D Land is very good 18:05:39 Yeah, I need to get that 18:05:41 Also Mario Kart 7 18:05:43 DS could play original gameboy games i think 18:05:44 itidus21: it's the GBA you're thinking of, that went all the way back to the original Game Boy 18:05:49 oh.... 18:05:54 maybe.. 18:05:59 but then again 18:06:00 coppro: whereas Mario Kart 7 is "it's a Mario Kart game; do you like those?" 18:06:05 (Incidentally: What is with 7 that the seventh piece of software in series X gets called X 7 regardless of prior naming schemes?) 18:06:09 ais523: True, but I do :) 18:06:15 fair enough 18:06:17 most of the games fans I've talked to agree that Super Mario 3D Land is very good <-- well of course a mario game is going to help selling the platform 18:06:24 reviewers have been really stuck on it 18:06:32 (Incidentally: What is with 7 that the seventh piece of software in series X gets called X 7 regardless of prior naming schemes?) 18:06:36 I mean that is probably one of the most known game series in the world 18:06:37 super mario is a bit old hat 18:06:37 coppro: dammit, now I need to find that gif again 18:06:39 because they can't say much about it except that it's just like the others in the series 18:06:58 The 2D mario games that Nintendo's made over the past few years have all been very good 18:07:01 itidus21: well, some people that I respect the opinions of (but don't always agree of) call Super Mario 3D Land the best Mario game ever 18:07:04 NSMB and NSMBW 18:07:19 ais523, I assume there will be/already is some zelda game for 3DS as well? 18:07:27 Vorpal: Ocarina of Time, didn't you hear? 18:07:28 they ported it 18:07:31 ais523, heh 18:07:34 * elliott liked NSMBW but not as much as SMG; this seemingly-irrelevant comparison is made relevant by my playing them at the same time 18:07:45 ais523, upgraded the graphics I hope? 18:07:49 elliott: DeSmuME is imperfect, but still a decent DS emulator. 18:07:50 SMG1 was a true work of art 18:07:51 and it's apparently the best Ocarina of Time version ever, although a little redundant if you've played the original 18:07:53 Vorpal: yes 18:08:01 Yeah, they fixed a bunch of flaws 18:08:02 coppro: SM3DL is made by the SMG people 18:08:08 ais523: ah, cool 18:08:15 SMG2 was exactly that, sadly 18:08:16 coppro: I liked SMG2, even if it was a bit too similar, and I missed the hub world 18:08:26 and it's apparently the best Ocarina of Time version ever, although a little redundant if you've played the original <-- "best ever" out of 2? 18:08:32 Vorpal: out of 3, I believe 18:08:33 well and http://www.youtube.com/watch?v=P29JNk7945k 18:08:34 oh 18:08:35 coppro: this perception is again made relevant by my playing SMG2 like a month after SMG1 18:08:38 ais523, what was the third one? 18:08:41 Wii 18:08:42 :| quick, rush out and buy uh.. (googles) phantom hourglass and spirit tracks... uhh.. go. go. go. 18:08:47 coppro: it would probably have been a disappointment if I'd waited 3 years 18:09:14 itidus21: hourglass was meh; spirit tracks was pretty good 18:09:22 ais523, anyway Ocarina of Time was a really good game. 18:09:26 SMG2's main disappointment is that its version of Luigi's Purple Coins is really easy :'( 18:09:29 Vorpal: right 18:09:35 elliott: YES 18:09:40 elliott: which of the games is The Perfect Run in? 18:09:41 even all the green stars were fairly easy 18:09:43 ais523, also I liked zelda 2. *waits for reaction* 18:09:49 most involved just doing a triple jump + spin 18:09:52 Vorpal: which one was that? 18:09:54 i emulate windwaker on my pc but it leaves me with that painful feeling that my pc is way too old 18:09:56 once you realized this, they were simple 18:10:02 ais523, the one that wasn't very much like any other zelda game 18:10:04 ais523: SMG2 18:10:04 ais523, for the NES 18:10:06 i wish i had economic freedom to have always up to date PC 18:10:07 I just googled it, didn't recall the name 18:10:17 elliott: hmm, OK, there's your Luigi's Purple Coins equivalent 18:10:24 ais523: I forget what it is 18:10:34 it unlocks when you've done everything else in the game, and is freakishly difficult, although mostly in the fake-difficulty sort of way 18:10:38 itidus21, was windwaker the one with cell shading? 18:10:51 ais523: are you talking about the green stars? 18:10:54 ais523: what is it, though? 18:11:00 oh! 18:11:03 is it the one with all the bosses? 18:11:04 coppro: those are one of the prerequisites 18:11:05 Vorpal: yeah... its a sweet game. except my pc is not built for emulating gamecube 18:11:06 and you only have 1 heart? 18:11:08 ais523: oh 18:11:10 (I youtube'd it) 18:11:12 I'm looking for a YouTube video 18:11:13 I may have missed this then 18:11:19 yep, it has bosses, and platformy sections, and other things too 18:11:23 and no continues and one health point 18:11:27 ais523: yeah, I did that 18:11:29 i can run it, but i have to turn down the resolution 18:11:31 anyway, are nintendo still basically aiming their platforms just at kids? (I mean, as far as I know games like Battlefield and so on are basically PS3/xbox/PC) 18:11:31 or, hmm 18:11:33 I think I did 18:11:45 I certainly got all the green stars, but that's not saying much 18:11:48 since the game proper is so easy 18:11:50 itidus21, is there actually a good gamecube emulator nowdays? heh 18:11:50 and.. also areas where there is a lot of grass in windwaker makes framerate drop for me on my old pc in meulator 18:11:52 Vorpal: Yes and no. 18:11:55 here, I'll link a speedrun of it, because they tend to be more fun to watch for really difficult bits than regular runs: http://www.youtube.com/watch?v=I1zValdb0y4 18:12:05 itidus21, got a link? 18:12:14 ais523: I was watching a 4 minute one but I'll watch this one instead :P 18:12:21 Vorpal: ill just find the name of it 18:12:26 itidus21, that works too 18:12:27 ais523: wow, 4:3 18:12:28 that's weird 18:12:35 ais523: anyway, if it's what I'm thinking of, it is easier than Luigi's Purple Coins by far 18:12:42 Vorpal: The critical points are a) The Wii's graphical capabilities lag behind its competitors and b) Nintendo's approach to online play is /very/ kid-oriented 18:12:52 coppro, ah 18:12:57 elliott: hmm 18:13:08 its basically just caled dolphin 18:13:08 I actually know people who say that Luigi's Purple Coins is not as hard as it's widely considered 18:13:13 ais523: because all these sections are from previous levels 18:13:14 my guess is that it gets easier with practice 18:13:18 elliott: indeed, they are 18:13:18 and SMG2 is not very difficult 18:13:21 ais523: Yes 18:13:25 coppro, what about non-online play? I just can't imagine a TES game on a nintendo platform. Ever. 18:13:29 By the time I beat it with Mario, doing so with Luigi was easy 18:13:35 it was easy with luigi 18:13:36 my personality flaws mean if i ever try to get anything nice for myself someone else will sabotage my efforts. its very frustrating 18:13:38 ais523: Luigi's Purple Coins is really shallow difficulty 18:13:47 you just fail in stupid ways a few hundred times and then get it without trying 18:13:50 Vorpal: There's been Call of Duty, James Bond, etc. 18:13:54 but it's really aggravating 18:13:56 heh 18:13:56 Vorpal: No reason it couldn't happen 18:14:02 except system power 18:14:05 also yeah I heard the Wii sucks 18:14:17 Vorpal: depends how you define "good".. if you cannot afford a gamecube,,, it is the only option 18:14:22 ais523: basically, every time you play it you feel like you have to be doing something wrong 18:14:26 at least that's what it felt like to me 18:14:26 coppro, and skyrim isn't a high end game, at least not when you compare to high end PC-exclusive titles. 18:14:31 coppro, like Witcher 2 18:14:35 and if your pc kicks ass... the dolphin emulator likewise kicks ass 18:15:07 ais523: yeah, pretty sure I've done The Perfect Run 18:15:14 computing power is probably the largest reason that Nintendo announced their next console first 18:15:14 my personality flaws mean if i ever try to get anything nice for myself (like a kickass PC) someone else will sabotage my efforts (taking my things, taking my savings, pawning my things, giving my things away as a gift to someone else). its very frustrating 18:15:20 blah.. venting 18:15:25 itidus21, well my PC might not kick ass, but I'm sure it could propel a donkey quite a far distance if I wanted to. 18:15:39 itidus21: how does that have to do with your personality 18:15:50 coppro: you would be surprised. 18:16:14 itidus21: you're non-confrontational so people take advantage of you or something? 18:16:21 btw does anyone here know about compressive sensing theory? 18:16:35 coppro: essentially, yes. :-) 18:16:44 itidus21: :( You should be more confrontational 18:16:53 (I /need/ to learn more on the subject, and I would like some good resources on it) 18:17:23 coppro: just as the rich get richer, the non-confrontational become less confrontational 18:17:33 hmm actually I might have done grandmaster galaxy 18:17:38 i am starting to think it's actually systemic 18:19:07 it took me many years to realize that the people who take advantage of me aren't to blame for my being non-confrontational 18:19:16 and even now i struggle to be sure of that 18:19:25 oh well 18:19:52 it gives me insight into third world countries 18:21:25 itidus21: find a friend to lean on 18:21:43 or a lawyer to sue with 18:21:52 either works ;P 18:21:58 -!- Ngevd has joined. 18:23:35 its ok.. somehow.. this universe curses everyone with problems day in day out. 18:23:53 yeah, but you shouldn't denied your own property 18:23:56 there is no escape 18:23:57 * elliott achieves bingo 18:23:59 *be 18:24:05 you can make your problems suck less though 18:24:14 elliott: grats 18:24:23 coppro: i couldn't have done it without your help 18:24:30 if applying sufficient logic, i am a colonialist 18:24:40 >:-) 18:25:42 i am not being denied "much" property 18:25:49 its all exaggerated in my head 18:26:05 its hard to explain ehehhe 18:26:13 :/ 18:26:31 well.. i escaped the people who really did deny me a lot 18:26:41 that's good 18:27:02 my brother is a bit more weird about it 18:27:52 the important thing, more important than anyting else is my side of the problem 18:29:32 -!- kmc has joined. 18:29:48 elliott: you know how Agora has trouble if every judge gets recused from a case? 18:30:00 I think something similar may happen in SCO vs. IBM 18:30:03 haha 18:30:20 there are only a finite number of judges in Utah; by some calculations, there are only two left 18:31:06 and both have reasonably obvious reasons to recuse themselves 18:31:32 O_O 18:31:34 link? 18:31:37 itidus21: I suggest you practice saying the following phrase: Fuck off. 18:32:08 coppro: based on following it at Groklaw 18:32:15 this video is kind of funny in a way http://www.youtube.com/watch?NR=1&feature=endscreen&v=tZ46Ot4_lLo 18:32:18 the latest article is http://www.groklaw.net/article.php?story=20111214164953543 but is missing most of the context 18:33:35 coppro: aha, here's the context: http://www.groklaw.net/article.php?story=20111210010653565 18:34:34 wow sometimes I forget everything about interfaces. 18:34:40 * kallisti just tried to tab-complete a word in irssi 18:34:41 kallisti: which meaning of "interface"? 18:34:46 kallisti: oh, I do that quite a bit, too 18:34:57 once I changed my nick to a word I was having trouble spelling, to make it easier to tab-complete 18:35:01 * kallisti tapped the tab key madly. WHY ARE YOU NOT COMPLETING MY WORD. 18:35:15 -!- GreaseMonkey has joined. 18:35:15 -!- GreaseMonkey has quit (Changing host). 18:35:15 -!- GreaseMonkey has joined. 18:35:16 ais523: ... wow 18:36:19 ais523: also now I have a bad habit of typing ctrl+s when I mean ctrl+f in many programs 18:36:22 thanks to emacs. 18:36:35 I use / 18:36:39 it works in most sane program 18:36:40 heh 18:36:45 like less! 18:36:46 s/$/s/ 18:36:58 oh no, you deleted the end of that string 18:37:01 so now it's infinitely long 18:37:15 elliott: hmm, I actually got the 100% ending of Braid today, complete with the waiting two hours 18:37:19 umm, yesterday 18:37:52 ais523: heh 18:38:22 I think most people getting into the pretentiousness of Braid have misinterpreted 18:38:24 *misinterpreted it 18:38:30 by time-reversing the wrong parts of the game 18:38:50 wait what, is SCO still going? 18:38:51 how? 18:39:49 Vorpal: they were given a loan, under mysterious circumstances 18:39:58 ais523, by whom? 18:40:03 then they sold off everything but the litigation to a company called unXis that nobody seems to know much about 18:40:08 Vorpal: some of their former shareholders, IIRC 18:40:11 heh 18:40:17 what is the point? 18:40:25 I said the circumstances were mysterious 18:40:45 some sort of money scam to get money out of the company somehow? 18:40:54 that is the only reason to keep going that I can think of 18:41:17 Vorpal: everything that's going on makes it reasonably clear that there's at least one, probably two, scams somewhere 18:41:30 ah 18:41:31 the straightforward one seems to be being run by Ocean Park, who ended up with most of the money SCO originally had 18:41:41 I see 18:41:43 (in a completely legal manner, of course) 18:41:50 right 18:41:52 but there's something much more complicated going on too, and I'm not sure what 18:42:06 what makes you think it exists then? 18:42:15 -!- augur has quit (Remote host closed the connection). 18:42:17 also who are Ocean Park? 18:43:31 ais523, ^ 18:44:02 SCO's bankrupcy trustee's accountants 18:44:14 Vorpal: the actions of various people make no sense on information currently known 18:44:25 ah 18:44:29 and I'm guessing it's because there's information missing 18:44:41 reasonable assumption 18:44:54 The Santa Cruz Operation would be a good title for a heist film. 18:45:01 elliott: indeed! 18:45:20 let's hope there's one going on now, so it has a possibility of being made 18:46:22 truth often makes better fiction than actual fiction 18:46:26 Potentially the loan was granted by people who just want to see novell suffer legal costs 18:46:32 elliott: Oh, hey. Sometime while I wasn't paying attention, that torrent came in. 18:46:40 I now have a 16 MiB file called "random". 18:46:44 pikhq: ...what. 18:46:49 pikhq: I haven't run Transmission since I gave up the first time. 18:46:54 Which was while I was talking to you about it. 18:46:56 The fuck? 18:47:02 coppro: indeed; or even IBM 18:47:09 coppro, but doesn't the loosing party have pay the legal costs? 18:47:13 pikhq: And I never /once/ saw a peer. 18:47:17 Vorpal: Not if they're bankrupt 18:47:21 I see 18:47:24 pikhq: And I can't upload 16 megs fast enough to not notice it while I was watching Transmission. 18:47:36 Vorpal: Also the US generally does /not/ award costs 18:47:36 elliott: Well, I have the file. 18:47:47 (one of the biggest flaws of their legal system) 18:47:52 md5sum f6bc78d996ade6145815ab5de9d8cf3f, right? 18:47:53 pikhq: M...maybe someone generated the same random bits themselves later on? 18:47:57 coppro, I couldn't parse that 18:47:59 Vorpal: note that typically they have to pay the /court's/ costs, but not the other party's legal fees, which are much larger 18:48:05 ah 18:48:06 the costs of running a court aren't massively high 18:48:06 pikhq: Correct 18:48:15 elliott: The hell. 18:48:22 is that really just a file of random data? 18:48:26 ais523: yep 18:48:31 why torrent it? 18:48:33 ais523: He was just testing DHT. 18:48:41 pikhq: Hmm, maybe you actually downloaded it from me while we were talking, and Transmission just failed at showing you? 18:48:47 elliott: Could be? 18:48:48 pikhq, I remember elliott testing DHT like months ago 18:49:04 Vorpal: I WAS READING ABOUT DISTRIBUTED HASH TABLES AND WANTED TO FEEL THE MAGIC 18:49:12 elliott, I see 18:49:15 Vorpal: Basically, the US fails to make the courts the ideal venue for resolution of disputes 18:49:21 elliott, I find a tracker is generally more reliable :P 18:49:28 coppro, yes 18:49:35 -!- boroda_ has joined. 18:49:38 coppro: Small claims courts are the ideal venue, though. 18:49:48 Vorpal: DHT works fine as soon as you get a peer 18:49:52 getting a peer is the problem 18:49:54 pikhq: True. But not for large-scale claims 18:49:54 `welcome boroda_ 18:49:55 pikhq: but only for claims that are actually small 18:49:55 This is *primarily* because your cost consists of filing fees. 18:49:56 elliott, indeed 18:49:57 boroda_: Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page 18:50:00 ais523: Well, yes. 18:50:05 elliott, and I generally want stuff done quickly 18:50:15 Vorpal: DHT is fast on popular torrents 18:50:16 Beyond that, the courts are the worst venue for resolution of disputes. 18:50:29 elliott, yes but your test ones are not popular! 18:50:34 You would literally be better off going for a duel in many cases. 18:50:37 Vorpal: my test ones aren't on trackers 18:50:45 elliott, indeed 18:50:47 pikhq: aren't courts about enforcement, not resolution? 18:50:54 the problem is that they have to resolve it first to know what to enforce 18:50:58 elliott, small + no trackers = sloooow 18:51:01 and no, with duelling then the wrong person would lose half the time 18:51:06 well, small as in not popular 18:51:14 ais523: US courts handle civil and criminal cases. 18:51:15 Courts are also supposed to be about resolution 18:51:15 probably more, actually, as good duelists would be able to get away with almost anything, so would be more litigious 18:51:23 Vorpal: actually, if you both connect to the same popular torrent, it'll go instantly 18:51:25 Civil cases are about resolving disputes. 18:51:32 two people downloading an ubuntu ISO can DHT with each other perfectly 18:51:42 *In practice*, people who can hire good lawyers are able to get away with almost anything. 18:51:45 pikhq: but the main purpose they're used is that the court is (typically) capable of enforcing the result 18:52:09 elliott, popular torrents are generally not DHT-only 18:52:13 ais523: Yes, but that's because of a flawed system, not because the point isn't to resolve disputes 18:52:13 pikhq: And then publish a book detailing how they did it, with the title "If I did it", and laugh all the way to the bank. 18:52:15 At least with duels for resolving disputes, you can personally improve your ability at it. :P 18:52:24 Gregor: Or, in his case, to jail. 18:52:41 In my view, courts should aim to be the ideal venue for resolving disputes; binding arbitration sucks 18:52:46 Gregor: OJ Simpson, complete moron, decided to commit robbery and kidnapping afterwards. He is now serving a 33 year sentence. 18:53:01 -!- Ngevd has quit (Quit: Goodbye). 18:53:03 pikhq: Well yeah, but he got away with the murder, he just shot too high is all :P 18:53:04 Gregor, someone did that? 18:53:13 Vorpal: OJ Simpson. 18:53:13 elliott, popular torrents are generally not DHT-only 18:53:14 I should probably ask who OJ Simpson is 18:53:16 Vorpal: I never said they were 18:53:20 pikhq, wow, how stupid 18:53:22 I've heard of him, and know he's famous for being involved in a criminal trial 18:53:24 but not much else 18:53:33 ais523: Some football player, mostly famous now for being acquitted for murder. 18:53:41 ais523: he wrote a book called If I Did It 18:53:47 ais523: saying /how/ he would have committed the crime /if/ he did it 18:53:48 elliott, then how are you able to get data on it? 18:53:49 while maintaining his innocence 18:54:10 elliott: hmm; such behaviour wouldn't seem sensible for persuading people of your innocence 18:54:20 ais523: it eventually got published with this cover: http://upload.wikimedia.org/wikipedia/en/4/4f/If_I_did_It_2.png 18:54:25 Vorpal: If you just punch in the infohash, your client will use DHT. 18:54:25 ais523: The US's stupid double jeopardy rule 18:54:26 (http://en.wikipedia.org/wiki/File:If_I_did_It_2.png to make ais523 happy) 18:54:41 elliott, wow the small "if" there 18:54:42 ais523: Everyone's convinced he actually committed it, anyways. 18:55:03 ais523: "It was originally planned that the book would be promoted via a television special featuring an interview with Simpson on Fox Broadcasting Company. Fox and HarperCollins are both owned by the News Corporation. This special had the longer title, O. J. Simpson: If I Did It, Here's How It Happened. Like the original release of the book, the special was canceled." 18:55:17 -!- boroda_ has left ("Ухожу я от вас (xchat 2.4.5 или старше)"). 18:55:44 pikhq: and he was eventually thrown in jail for something else, presumably? 18:56:02 well, by "presumably" I mean "based on what was said slightly earlier in-channel" 18:56:18 Yeah, no double jeopardy. But he decided "Well if I got away with murder, I'll turn into a full-on gangster." and kidnapped and robbed and wtf dumbass. 18:59:00 the double jeopardy rule in the US is retarded 18:59:38 It just states that you can't be tried twice for the same crime, right? 19:01:16 Yes 19:01:27 But there are two levels of stupid in it 19:01:46 First, due to the principle of separate sovereigns, someone can be tried twice; once by the state and once by the federal government 19:02:03 since the federal government can't, except by law, limit the states 19:02:11 Second, it is interpreted as being absolute 19:02:30 Phantom_Hoover: You can't be tried twice for the same crime in the same jurisdiction. 19:02:37 If you are acquitted, the government can appeal only by grounds that the trial was manifestly unfair (i.e. the judge or jury was bribed, or the like) 19:02:43 pikhq, not particularly stupid? 19:02:47 The government can't appeal on any other error of law 19:02:49 If you commit the same crime in two states, congrats, you can be charged thrice. 19:02:57 -!- cswords_ has joined. 19:03:33 Also, yeah, if you get an error in law happening you're basically walking away. 19:03:52 And the police here *love* making those. 19:04:27 In Canada, the government can appeal, but only errors of law since the jury is assumed to be correct in its verdict (which makes sense) 19:06:03 What really bothers me is that juries are instructed to only focus on strict matters of fact or law, even though in US court tradition and law, it's perfectly acceptable for juries to go "We find this law unjust; we find not guilty"... 19:06:08 -!- cswords has quit (Ping timeout: 252 seconds). 19:07:15 pikhq: forget what the legal term for that is 19:07:26 it has a bizarre position in Canadian law 19:07:34 Jury nullification. 19:07:40 right 19:07:54 In Canadian law it is legal, but not a right of the defendent to have the jury informed of it 19:08:01 It's 100% legal in US law, judges just try very hard to get a mistrial if someone dares mention it. 19:08:15 pikhq: actually, the lawyers for the sides select for juries who haven't heard of it 19:08:22 Ah, yes, that too. 19:08:23 (having lawyer-selected juries is a little insane in its own way) 19:08:45 ais523: Don't they use the same process in the UK? 19:08:47 Yeah, if juries were *sane* they'd go for a random sample. 19:09:13 coppro: 12 random people plus 1 random alternate 19:09:18 -!- kmc has quit (Quit: Leaving). 19:09:20 who can only be objected to if obviously biased, IIRC 19:09:24 such as being related to the defendant 19:09:29 ais523: There's no preremptory objections? 19:09:35 I think there might be one per side 19:09:39 certainly nowhere as many as in the US 19:09:52 They're unbound in the US, IIRC. 19:10:01 Sweden doesn't use juries except in a few special types of cases. 19:10:03 You basically have the lawyers *selecting* jurors. 19:10:10 What really bothers me is that juries are instructed to only focus on strict matters of fact or law, even though in US court tradition and law, it's perfectly acceptable for juries to go "We find this law unjust; we find not guilty"... 19:10:17 ais523: wikipedia tells me it was eliminated in 1988 19:10:19 iirc related to right of free speech stuff, then you get a jury in Sweden 19:10:21 otherwise, not 19:10:30 Yes, but their *instructions* are to only focus on strict matters of fact and law. 19:10:30 Vorpal: The US doesn't use juries unless the defendent requests it, IIRC. 19:10:32 coppro: that'd explain why I thought they didn't have it 19:10:41 pikhq, and they usually request that? 19:10:42 ais523: Don't they use the same process in the UK? 19:10:50 pikhq: the jury instructions are also written by the lawyers 19:10:54 Vorpal: Not really. 19:10:57 Scots law differs significantly from English. 19:10:59 however, they tend to disagree a lot about what they should say, for obvious reasons 19:11:10 pikhq, I see 19:11:10 Phantom_Hoover: oh right, I was talking about the England/Wales court system 19:11:15 We have juries of 15, and verdicts are by majority, for instanc. 19:11:16 I know it's diferent in Scotland 19:11:16 Scots law isn't even in the tradition of common law. 19:11:18 *instance 19:11:31 And there are 3 possible verdicts. 19:11:36 3? 19:11:37 Phantom_Hoover: Nobody cares Mr. Phantom "Waah Scotland matters" Hoover. 19:11:45 Guilty, not guilty, not proven. 19:11:50 Making it more distinct from English law than US law is. :P 19:11:52 in Canada, it's 20 for high treason or murder, 12 if there is a prison term of 5 years or more on the line, and 4 otherwise 19:12:02 Phantom_Hoover, what happens after "not proven"? 19:12:03 Phantom_Hoover: hmm, shouldn't it be "innocent" if there's another "dunno" one? 19:12:18 elliott: Hexham's near enough to Scotland for Scotland to matter to you, surely? 19:12:28 it'd probably be at risk of invasion if the Scots ever cared to try 19:12:45 anyway I find this Scottish system quite interesting 19:13:02 There seems to be literally no functional difference between not proven and not guilty. 19:13:22 `quote don't even 19:13:24 No output. 19:13:27 Oh, it's 'proven', not 'guilty'. 19:13:28 `quote first! 19:13:30 btw didn't some party that wanted to separate from the UK win the Scottish election? Whatever happened to that? 19:13:31 662) Also you steal Berwick from us and then say you don't want it? You stole it from us first! 19:13:33 ais523: ^ 19:13:37 that's where all the warring goes on 19:13:53 elliott: right, indeed 19:14:04 Berwick? 19:14:12 Vorpal: it's the SNP; their problem is that they can't make Scotland independent without a referendum 19:14:26 and all the statistics indicate that if they try a referendum, which they can do, they'll lose it 19:14:32 heh 19:14:33 so they're trying to find excuses to not do it yet 19:14:42 that must be awkward for them 19:14:49 Why the heck would Scotland want to become independent, anyways? Near as I can tell, it's only to their benefit. 19:14:49 ais523, anyway, lose by how much? 19:14:54 they're just waiting for more english pansies to die 19:14:56 To the detriment of England, but hey. 19:14:57 :P 19:15:01 pikhq, something something something oil. 19:15:09 Vorpal: I don't know, and you could look it up as easily as I could 19:15:09 Also EU. 19:15:24 Phantom_Hoover: EU? More like EUuuuuwwwwww, that's gross! 19:15:26 (I vehemently oppose the SNP because they want closer ties with Sweden.) 19:15:26 Phantom_Hoover: What, becoming a more proper EU member, or leaving it? 19:15:31 ais523, well, I thought you might remember if it was a close thing or far from being likely. 19:15:32 incidentally, the SNP wants Scotland to stay fully part of the Commonwealth 19:15:33 pikhq, more proper. 19:15:36 dammit thundurus, why can't you be nice like kyurem was? :( 19:15:41 Vorpal: I think it's somewhere in between 19:15:44 ah 19:15:51 ais523, that is good enough for me 19:15:56 coppro: I still haven't caught kyurem yet; I need to manipulate it to perfect stats like I did with Zekrom 19:15:56 `addquote (I vehemently oppose the SNP because they want closer ties with Sweden.) 19:15:59 765) (I vehemently oppose the SNP because they want closer ties with Sweden.) 19:15:59 ais523: A Commonwealth country, or a Commonwealth realm? 19:16:07 (I vehemently oppose the SNP because they want closer ties with Sweden.) <-- they do? 19:16:08 why? 19:16:08 pikhq: I don't know the difference 19:16:08 ais523: RNG manipulation? 19:16:11 coppro: of course 19:16:18 only time I've ever used a Max Repel in a no-encounter area 19:16:19 ais523: A Commonwealth realm has the Queen as monarch. 19:16:26 in order to count steps 19:16:30 A Commonwealth country is just a country in the Commonwealth. 19:16:34 ais523: I thought legend stats were generated in advance in modern games? 19:16:37 pikhq: in that case, I don't know the answer 19:16:40 coppro: I still haven't caught kyurem yet; I need to manipulate it to perfect stats like I did with Zekrom <-- huh? 19:16:44 pokemon? 19:16:50 coppro: they can be, but the precise meaning of "in advance" differs from pokemon to pokemon 19:16:51 Vorpal: yes 19:16:53 ah 19:16:55 ais523: ah 19:17:03 in the case of Zekrom, it's generated upon talking to it 19:17:11 ais523: by 'in advance', I meant game start 19:17:16 no, nowhere near that early 19:17:36 it's typically either the event where you encounter them, the event that makes them possible to encounter (i.e. adds them to the map), or beating the elite four 19:17:36 ais523: If they were to *just* seperate right now, then it'd end up being a realm... But it wouldn't be too hard to imagine Scotland also getting rid of its monarchy. 19:17:38 it sounds almost as if they wanted people to manipulate the RNG then 19:17:51 I might do that in a future game; in this game, I'm not doing anything like that 19:17:58 Vorpal: Seems like it. 19:17:58 Vorpal: they took deliberate steps to make the RNG more complicated in fifth gen 19:18:03 and ended up making it easier as a result 19:18:09 There's a lot of randomness in the games. 19:18:09 heh 19:18:21 ais523, I meant, why not just generate those stats on new game 19:18:25 (I vehemently oppose the SNP because they want closer ties with Sweden.) <-- they do? 19:18:26 why? 19:18:29 Vorpal: *whoosh* 19:18:38 Vorpal: because then people would manipulate them on new game 19:18:41 elliott, that was not obviously a joke 19:19:06 seriously, trainer ID manipulation has been done on new game routinely in gen IV, because there, shiny flawless legendaries are impossible without particular trainer ID/secret ID combinations 19:19:10 so people manipulate for those 19:19:21 ais523, right, but they can just manipulate it later now, and it is easier to check the results if you don't have to play through the whole game. 19:19:38 Vorpal: you would have got it if you read his previous line 19:19:44 ais523: What resource do you use for the RNG? 19:19:52 coppro: depends on which game 19:20:07 for fifth gen, and various things that I can't otherwise handle in fourth gen, mono + RNG Reporter 19:20:14 as it's the most complete program in that respect 19:20:31 ais523, mono as in the .NET environment?! 19:20:38 Vorpal: yes 19:20:42 because RNG Reporter is a .NET program 19:20:44 ah 19:21:00 for fourth gen catches, I use this: http://shaym.in/apps/iv_checker 19:21:03 which I wrote myself 19:21:29 ais523: I mean a resource explaining the systems 19:21:48 ah; Smogon has some guides, and there are various YouTube videos 19:22:02 but I find it best to understand how the game works, and then do the manipulation on that basis 19:22:09 yeah 19:22:22 hence why I ask if you have resources explaining the mechanics 19:22:28 I assume doing RNG manipulation on real hardware would be near impossible? 19:22:30 note that the help information on the page I link explains how to use that page to do a flawless catch 19:22:38 since there would be various inputs that would be hard to control 19:22:41 Vorpal: no? it's real hardware I do it on 19:22:54 the basic point is that you only need to control one of the inputs, and just hold everything else consistent 19:23:27 ais523, what? On something like a modern handheld system with wifi it would be trivial for the system to generate new random seeds every so often 19:23:41 like /dev/random on linux does 19:23:45 Vorpal: what if someone puts it on airplane mode? 19:23:58 (which is exactly what I do for black/white RNG control, for exactly that reason) 19:24:06 ais523, hm, there are sure to be other sources of randomness. Clock drift between CPU cores? 19:24:22 Vorpal: yes, indeed, but it only drifts between two values 19:24:27 hm 19:24:30 so you just keep retrying until you hit the one you want 19:24:36 right 19:24:44 nintendo probably don't spend thousands of dollars on preventing RNG abuse :P 19:24:58 elliott: they do seem to have been given an order "make the RNG more complicated" 19:25:01 because it is 19:25:06 elliott, you don't exactly need to spend 1000s of dollars to do these kind of things 19:25:06 ais523: for trading, perhaps/ 19:25:07 ? 19:25:10 but it wasn't so hard it wasn't cracked 19:25:15 anyway aren't there any good, hard to predict RNGs? 19:25:17 Vorpal: yes you do, you need to employ someone who could think of them 19:25:25 elliott: probably by tPCI, who don't really like RNG abuse in official tournaments but haven't found any way to ban it 19:25:31 Vorpal: and then implement them 19:25:49 elliott, there are often reference implementations available for many 19:25:50 ais523: hmm, I assumed tournaments gave you predetermined pokemans 19:25:55 but I guess kids wouldn't like that 19:26:00 indeed, that'd defeat the whole point 19:26:03 Vorpal: I'm talking about things like seeding with clock drift 19:26:09 the tournaments are basically just advertising 19:26:09 well right 19:26:23 elliott: the seeding with clock drift seems to be a mistake 19:26:27 -!- oerjan has joined. 19:26:32 heh 19:26:57 in gen 4, it was seeded with the number of frames it took to dismiss the cutscene at the start of the game, which is a good entropy source (also the ones that players manipulated in practice, although it requires timing a keypress to 1/60 second) 19:26:59 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds). 19:27:00 ais523: your page doesn't explain things like 1, J, K 19:27:08 in gen 5, the check was at the start of the cutscene 19:27:18 coppro: yes it does, "which RNG method should I choose?" 19:27:23 ah 19:27:24 elliott, it isn't really hard to do. Read the TSC (for x86 that is, I assume there are/could be similar things for, say, ARM) on the two CPUs several times and use the differences to generate randomness 19:27:41 ais523, why don't they just re-seed it, I don 19:27:45 don't* get it 19:27:56 Vorpal: from what? 19:28:03 Vorpal: you realise that programmers at Nintendo are probably paid enough to make a few thousand in not all that long a time, right? 19:28:27 making the RNG seeding perfect probably comes considerably lower than "making a decent game" 19:28:31 Vorpal: besides, if the reseed interval wasn't /very/ fast, people would just do the catch before the first reseed 19:28:49 ais523, every few seconds sounds reasonable to me 19:28:54 too slow 19:28:54 -!- augur has joined. 19:28:59 ais523, really? heh 19:29:08 ais523: it still doesn't really explain how they work though 19:29:16 Vorpal: I would typically cause the stat generation to happen in the first second or so of poweron 19:29:21 ais523, hm, if wifi is on, that is an obvious source. Also couldn't you passively listen to radio noise even in airplane mode? I thought the point of the airplane mode was to not /emit/ anything? 19:29:33 Vorpal: not the way that the DS's antenna works, I think 19:29:39 hm 19:29:43 that would use power, wouldn't it 19:29:52 elliott, well yes, but you can't have everything 19:29:59 Vorpal: better rng <<<<<<<<<<<<<<<< decreasing battery life 19:30:02 erm 19:30:04 right 19:30:04 coppro: it might be simplest if you just ask me, I don't think there are any good explanations around about what's actually going on that aren't terribly technical 19:30:05 flip one of those 19:30:06 or whatever 19:30:13 well you could require wifi on in tournaments 19:30:22 ais523: i believe that is what he was doing. 19:30:27 Vorpal: umm, what? 19:30:28 Vorpal: we're talking about catching Pokémon before the tournament 19:30:28 that would solve it for that use case at least 19:30:29 which is done at home 19:30:33 ais523, oh I see 19:30:43 ais523, then what prevents you from doing memory hacking? 19:30:50 -!- GreaseMonkey has quit (Quit: The Other Game). 19:30:59 ais523: I'm fine with terribly technical 19:30:59 Vorpal: they try to detect that 19:31:02 in fact, that's preferred 19:31:21 they aren't as good at detecting that as the people who do the RNG manipulation are, though 19:31:23 ais523, hard if you just modify the stats to the best plausible levels from rng trickery? 19:31:36 Vorpal: what if the stats are valid, but couldn't be generated by the game's RNG? 19:31:48 the RNG can't return every possible sequence of numbers, after all 19:32:02 (it can in Black/White, incidentally, by using two RNGs that go through seeds at different rates) 19:32:10 heh 19:32:24 you would have to ensure that it would be possible with the RNG 19:32:31 anyway how can you time it right? 19:32:54 Gamers are freaks. 19:32:54 coppro: for 4th gen, this forum thread: http://www.smogon.com/forums/showthread.php?t=52180 19:33:01 ther's another thread in the same forum for 5th gen 19:33:28 Last I checked, the difference between the human speedrun and the TAS run of Super Mario Bros. was a few seconds. 19:33:36 ais523, I mean if you use the current time in clock cycles or even in microseconds as part of the randomness when the value is requested you couldn't do it feasibly on non-modified hardware 19:33:48 Vorpal: on average, how many tries do you think it takes someone who's been practicing for 10 hours to time a keypress to within 1/60th of a second, using any tools (metronomes, countdowns, etc) they want? 19:34:06 ais523, 1/60th? really? 19:34:07 note that the buttons on the DS are only read once per frame 19:34:10 hm 19:34:14 okay that is an issue 19:34:18 so the timing won't be any more accurate than that 19:34:23 ais523, I would have assumed they gave interrupts 19:34:30 really? that's incredibly rare in games 19:34:35 I see 19:34:38 so why would you expect consoles to support it? 19:34:46 ais523, I wasn't aware it was rare in games 19:34:48 why is it rare? 19:35:06 in fact, most PC games engine use a simple interrupt handler that makes it look like polling 19:35:13 heh 19:35:26 and basically because most games have a physics engine that can only process input once a frame; the rest of the time, it's busy calculating motion on that frame 19:35:30 It's much easier to do a while(1) {check_buttons(); update_state(); render();} loop than do interrupts. 19:35:41 ais523, hm is the PC keyboard polled or interrupting? I would assume at least the USB case is interrupting 19:35:48 not sure about the PS/2 case 19:35:57 Vorpal: Interrupts. 19:35:57 I mean, to the OS level 19:35:58 Vorpal: it's interrupting, but the BIOS can make it look like polled 19:36:02 right 19:36:19 and it's up to the OS whether it looks at the BIOS or whether it overrides the interrupt table to get the interrupts directly 19:36:38 well, most modern OS tries to avoid using the BIOS 19:36:58 also using the BIOS presents some major problems from long mode iirc 19:37:17 Yeah, usually an OS just handles the interrupt itself. 19:37:26 never mind long mode, you can't use the BIOS in protected mode 19:37:46 elliott, oh okay, I thought you could do virtual 8086 mode then or something 19:37:52 or whatever it was called 19:37:59 oh, maybe 19:38:02 virtual 286 mode? 19:38:04 something anyway 19:38:09 sounds more painful than rewriting the bios routines though 19:38:13 well yes 19:38:38 virtual 8086 it is called 19:38:42 iirc dosemu uses it 19:38:50 won't work in long mode of course 19:39:12 Vorpal: one of the few things in the "deliberately unsupported because I can't figure out wtf effect it would have" list in Web of Lies 19:39:38 ais523, what are the other things on that list? 19:39:44 *Web o' Flies 19:39:48 Gregor, no 19:39:57 Vorpal: I'm trying to remember, now 19:40:01 Vorpal: yes 19:40:40 Vorpal: ptrace is probably the biggest one 19:40:45 well right 19:40:51 ais523, anything else? 19:40:56 also, modify_ldt, personality, lookup_dcookie, and unshare 19:40:57 -!- augur has quit (Remote host closed the connection). 19:41:13 I never heard of those 19:41:29 -!- augur has joined. 19:41:38 wait, I found personality was actually being used 19:41:55 so it's only unsupported with certain arguments (which it silently replaces with different similar arguments in the hope that the system will still work) 19:42:25 -!- augur has quit (Remote host closed the connection). 19:42:25 ais523, after reading man page I'm surprised the first one even exists in user space. Wtf. And there is no EPERM or such in the ERRORS section either. What. 19:43:24 -!- augur has joined. 19:44:33 ais523, I assume wol uses personality though? 19:44:44 it does 19:44:44 ais523, stuff like ADDR_NO_RANDOMIZE looks like cut out for it 19:44:48 to turn off ASLR 19:44:52 yeah 19:45:04 so what it does in other process's calls to personality is to add ADDR_NO_RANDOMIZE to the argument list 19:45:06 Vorpal: ptrace is probably the biggest one 19:45:07 whether they specified it or not 19:45:13 ais523: but how will you calculate weboflies' eigenratio? 19:45:15 ais523, ah 19:45:22 elliott, :P 19:45:25 elliott: I don't think I've even tried running it inside itself 19:45:45 it causes valgrind to internal-error (I think even with valgrind on the outside) 19:45:45 16:20:22: you-plural <-- i hear the technical term is "all y'all". hth. 19:45:50 which is resaonably impressive 19:45:52 *reasonably 19:46:00 haha, modify_ldt must be root-only, surely 19:46:10 valgrind in wol in valgrind? 19:46:26 elliott, yes that was my reaction too. Then I looked at "errors" and I was even more wtf 19:46:38 it's probably just omitted 19:46:41 -!- derrik has quit (Quit: left). 19:46:44 hopefully 19:46:44 well, the LDT /is/ per-process… 19:47:00 unsigned int read_exec_only:1; 19:47:00 hm 19:47:06 it /must/ be unsafe to let you modify that, surely 19:47:09 unsigned long base_addr; 19:47:09 unsigned int limit; 19:47:10 especially these 19:47:12 yes 19:47:17 I believe so 19:47:20 slightly unsafe 19:47:25 unless it only permit valid values 19:47:40 elliott, look at the EFAULT description 19:48:00 Vorpal: that's if you specify the argument to modify_ldt as outside your own address space 19:48:08 EFAULT is what you get when passing NULL pointers to the kernel, or whatever 19:48:09 ais523, right 19:48:35 hmm, actual thing I have thought: "this thing just isn't fast enough, I wish it used exec() directly rather than the shell" 19:48:51 EFAULT is what you get when passing NULL pointers to the kernel, or whatever 19:48:56 ais523: there have been kernel bugs caused by failing to check this, btw 19:49:02 guess what type of bug doesn't apply to @? 19:49:08 anyway modify_ldt looks to me as if it belongs in the same category as ioperm and such. That is the category of "oh god, who thought exposing this to the user space was a good idea" 19:49:47 elliott: heh, I have to keep remembering to check EFAULT in weboflies 19:49:57 if I'm simulating a syscall myself 19:50:01 heh 19:50:54 So is Web o' Flies totally non-secret now? 19:51:01 Or is the code still a jealously-guarded secret? 19:51:19 I believe I have a copy of it somewhere. Couldn't tell where though 19:51:24 never ran it, it scared me too much 19:51:32 it's still secret 19:51:37 I have a copy too, I didn't bother to get it to compile. 19:51:37 but this channel knows of its existence 19:51:40 the source code is available on request 19:51:43 But still, come on. 19:51:48 Tomorrow they remove the letter "m" from the alphabet <-- and in 9-10 days, they'll remove "l". 19:51:51 it required root (for obvious reasons) and there was NO way I was going to run that sort of crazy stuff as root :P 19:51:56 When I write two lines of source code to do something nobody else has ever wanted to do, I release the source. 19:51:56 apparently, it compiles fine, but on most people's kernels fails with EPERM for reasons most people don't understand 19:51:57 Gregor: it needs to be secret otherwise the effort is wasted 19:52:01 Vorpal: it does nothing on x86-64 19:52:10 including me 19:52:17 elliott: anyway, that reminds me of an idea I had 19:52:24 elliott, but you can run 32-bit programs on x86-64 fine usually? 19:52:27 instead of getting the control process to drop permissions entirely 19:52:30 elliott, you say that doesn't work here? 19:52:33 Vorpal: it fails 19:52:38 elliott, where does it fail? 19:52:42 and why? 19:52:42 well, it seems to be 64-bit kernels that it fails on 19:52:44 get it to suspend them, and then set itself back to root where it fails 19:52:46 it fails on my x86-64 arch 19:52:48 and works in a 32-bit arch vm 19:52:51 Vorpal: /proc permissions 19:52:58 elliott, "huh" 19:53:06 elliott, that is bizarre 19:53:07 Vorpal: yep, the permissions of /proc seem to be not what we'd expect them to be 19:53:18 why would they differ between architectures!? 19:53:18 also, whenever I attempt to debug the problem, it starts working 19:53:24 wha 19:53:32 aha, it just wants some attention 19:53:34 anyway, I recommend using a 32-bit VM and solve all your problems that way 19:53:42 ais523: I wonder if it works in qemu-system 19:53:48 both the "crazy code as root" problem, and the "confuses 64-bit kernels" problem 19:53:58 why would they differ between architectures!? 19:54:06 Vorpal: well, /proc/ needs architecture-specific info... 19:54:13 elliott, oh right 19:54:23 /permissions/ changing is weird, admittedly 19:54:29 yes 19:54:42 I mean, sure if there was an extra file or a file was missing. 19:54:51 elliott, what was the permission difference though? 19:55:04 Vorpal: /proc//fd failed to stop being owned by root on weboflies' complicated permissions drop 19:55:08 Vorpal: something was owned by root that should have been owned by woluser 19:55:23 I see 19:55:37 ais523: *nobody :) 19:55:45 well a quick check of /proc/self/fd indicates it is owned by the user in the normal case. 19:55:51 Vorpal: no shit 19:55:59 ais523, does wol depend on that permission being like that? 19:56:01 if so why? 19:56:11 Vorpal: because it's trying to read its own procfiles 19:56:14 and failing because it isn't root 19:56:15 ah 19:56:42 the process was started as nonroot, by a process that wasn't root (but had been root at some point in the past) 19:56:47 ais523, sounds like this might be a kernel bug in either 32-bit or 64-bit 19:56:59 but normally, if you drop permissions and then fork a process, the resulting process can read its procfiles 19:57:01 hmm, /me tests 19:57:06 64-bit if anything, definitely 19:57:08 wait, me testing is pointless, I don't see the bug 19:57:43 elliott: on your computer, try starting a root shell, then using su to start a shell as a regular user, then checking the /proc/self's permissions 19:57:54 does it happen on a trivial test case? As in, doing the basic uid changing and forking and such but not all the other crazy stuff that wol does? 19:57:57 ais523: sudo -s is root shell enough, yes? 19:58:08 yep 19:58:15 it was /fd, btw 19:58:17 not just /proc/self 19:58:26 right, indeed 19:58:30 ais523: that won't work, su forks a shell 19:58:37 well, rather, su execs a shell 19:58:38 and is forked itself 19:58:44 -!- monqy has joined. 19:59:01 elliott: the situation in wol is fork, drop permissions, exec 19:59:07 isn't that what su is doing? 19:59:16 or well, it probably doesn't need the fork 19:59:22 but I don't see how it'd matter 19:59:38 [root@dinky esoteric]# ls -ld /proc/self/fd 19:59:38 dr-x------ 2 root root 0 Dec 15 19:58 /proc/self/fd 19:59:38 [root@dinky esoteric]# su elliott 19:59:38 [elliott@dinky esoteric]$ ls -ld /proc/self/fd 19:59:38 dr-x------ 2 elliott users 0 Dec 15 19:58 /proc/self/fd 20:00:09 $ su - arvid /bin/ls /proc/self/fd 20:00:09 /bin/ls: /bin/ls: cannot execute binary file 20:00:10 what 20:00:26 what am I missing here 20:00:36 plain /bin/ls works fine 20:00:47 wait, where's PH? 20:00:54 not here 20:00:59 That's not how su works, that's how sudo works. 20:01:05 oh, pinged out half an hour ago 20:01:09 su - whatever -c 'command' 20:01:15 30 over 4, anyway :( 20:01:19 Gregor, I thought that was sudo 20:01:21 oh well 20:01:35 $ sudo ls # Vorpal thinks this doesn't work 20:01:52 Vorpal: Arguments to su are arguments to the shell. e.g. bash /bin/ls 20:02:40 ah right 20:03:41 ais523, anyway an obvious way to generate randomness on a DS would be the ways you can generate randomness in wol 20:03:56 busy looping 20:04:07 Vorpal: busy looping doesn't create randomness in WOL 20:04:09 it just crashes it 20:04:20 Vorpal: a DS is already busylooping the /game loop/ 20:04:26 elliott, hm good point 20:04:47 Vorpal: anyway, that trick only works with a preemptive scheduler 20:04:53 which I doubt the DS uses 20:05:01 if you do it on the other CPU, you're just measuring clock drift again 20:05:24 elliott, so add a hardware clock alarm and check the instruction pointer when you get the interrupt. 20:05:30 if DS has that sort of alarms 20:05:32 I know PCs do 20:06:09 Vorpal: so, interrupt the game loop more often than every 1/60 seconds? 20:06:15 that sounds smart 20:06:37 elliott, well on a PC it kind of would be hard to tell due to PCs being so fast. I guess it would be an issue on a DS though 20:06:55 Vorpal: the point is that you're saying "please interrupt the machine more than once per frame" 20:07:11 "and spend CPU time reseeding the RNG with it" 20:07:54 elliott, interrupts on button presses would work though. Because that way you would only get those extra interrupts when the user is performing the action in question 20:08:11 not on the DS sure, but for future platforms 20:08:13 Vorpal: which is again defeated by the user timing their button press... 20:08:28 elliott, you can only time up to a certain accuracy 20:08:55 Vorpal: how accurate are you asking the clock to be, exactly? 20:08:58 elliott, if this would help or not would depend on how accurately you measure the time of the interrupt 20:09:10 -!- Phantom_Hoover has joined. 20:09:16 Vorpal: anyway, even if you can't time it to that 20:09:17 just keep trying 20:09:19 elliott, I don't know how accurate DS clocks are, but PC clocks can easily get down to microseconds 20:09:22 the clock is limited precision 20:09:26 just keep trying <-- well yes 20:09:29 there are a limited number of bits of noise you can look at the lower end from 20:09:37 just spend hours tapping the button every 1/n seconds 20:09:50 elliott: for what it's worth, Pokémon Red/Blue are famously impossible to manipulate 20:09:57 because they care about every single keystrok 20:10:00 *keystroke 20:10:05 ais523: certainly, that sounds plausible 20:10:05 elliott, that is like pudding farming then :P 20:10:09 also, they're apparently annoying to manipulate even in TASes 20:10:10 I just think Vorpal's ideas for doing it are ridiculous 20:10:23 due to some details of the way it works 20:10:40 elliott: for what it's worth, Pokémon Red/Blue are famously impossible to manipulate 20:10:42 ais523, so why haven't nintendo just doing it that way again? 20:10:51 How does that make them *impossible* to manipulate. 20:10:52 aren't* 20:11:07 Phantom_Hoover: well, not actually impossible, but beyond anyone's ability 20:11:29 i wonder what properties of hexham inspire esolang <-- my guess is "intense boredom". 20:11:43 oerjan: you live in /Trondheim/ 20:12:17 elliott, and he is doing esolangs 20:12:25 so fits it 20:12:29 Vorpal: so he can't diss hexham! 20:12:57 i wonder how boredom happens 20:13:02 elliott, I don't think he was dissing it. Just trying to explain the reason for the observed data 20:13:20 itidus21, I'm convinced it is generated by buses 20:13:24 Vorpal: you didn't realise /that/ was a joke? 20:13:31 come on, stop being hopeless 20:13:33 elliott, I didn't take it as one 20:13:57 itidus21, or perhaps more accurately by bus stops 20:14:07 itidus21, the reason is that the only time I ever get really bored is while waiting for buses. 20:14:14 -!- Klisz has joined. 20:14:19 theres this effect whereby the grass is greener on the other side of the fence 20:14:26 Presumably the same would apply to trains, but I rarely travel by them. 20:14:32 i don't know if it has a formal fallacy name 20:14:39 i'll check 20:14:44 itidus21, how is that related to bus stops? 20:14:54 i'll get to that 20:16:06 > 173486/11446 20:16:07 15.156910711165473 20:16:07 the problem is that you don't know exactly when the bus will arrive. Except for the end station and some major interconnections the time it arrives and leaves at may vary with a few minutes. As in, it won't wait if it is a minute or two too early. 20:16:37 so you need to go to the bus stop like 5 minutes in advance, and then the bus may end up 5 minutes too late as well 20:16:39 elliott: trondheim is rather larger. 20:16:41 and you have nothing to do 20:16:48 thus boredom 20:16:52 itidus21, ^ 20:17:24 oerjan, the busy metropolis of Trondheim? 20:17:39 on a side note, someone in a distant chatroom suggested to me that finland is very depressing and a bit of a gulag 20:17:57 itidus21, "distant chatroom"? How do you measure distance between IRC channels? 20:18:09 who said it was irc 20:18:20 -!- Gregor has set topic: on a side note, [...] finland is very depressing and a bit of a gulag | http://codu.org/logs/_esoteric/. 20:18:21 its a bit like measuring uhh.. erdos number 20:18:24 itidus21, even so, how do you measure distance between two online resources 20:18:27 hm okay 20:18:58 or the distance to kevin spacey 20:19:30 itidus21, anyway they are connected by you, means it can't be that distance from this channel 20:19:35 but the person in question is a troll who insists on finding fault with every country and religion 20:20:09 ais523: turns out my kyurem is modest with 10 IV in SpA, 31 in HP, and 13 in Speed 20:20:15 itidus21, well there usually /are/ faults in most things. You just have to compare the upsides to the downsides. 20:20:42 coppro: what did you calculate that based on? 20:20:50 and, err, modest with 10 SpA? that's not really ideal 20:21:06 ais523: just plugged it into a calculator 20:21:11 and no, it isn't, but it could be worse 20:21:21 sure, it could have been Adamant 20:21:44 people who i have seen him harshly criticize includes: gandhi, dalai lama, des cartes, alan turing 20:22:13 eventually i got around to ignoring the guy, even if he does make curious points 20:23:19 did gandhi not support hitler or sth 20:23:41 also, "des cartes"? 20:24:13 ais523: Missing those IVs is roughly equivalent to having a neutral nature and perfect IVs 20:24:19 * kallisti names his Starcraft II account "duh cart" 20:24:21 des cartes, the famous german philosopher 20:24:37 coppro: exactly, so you have all the speed loss of Modest /and/ all the special attack loss of Timid? 20:24:39 what's not to like? 20:24:46 haha 20:25:01 seriously I watch sc2 games like every day. 20:25:04 wait, speed loss of modest? what? 20:25:14 hmm.. cartesian duality was his main gripe there 20:25:17 elliott, obviously he meant desc artes, a from of pop art. 20:25:18 coppro: modest isn't +speed 20:25:25 thus, your speed isn't as high as it could be 20:25:26 ais523: oh, I see what you mean 20:25:28 a from of pop art 20:25:32 yeah 20:25:46 elliott, form* 20:25:48 but right 20:25:52 anyway, i love finland :-s 20:26:01 even though i don't know anything about it 20:26:01 I've never been to finland. 20:26:08 elliott, it involves making speling erorrs 20:26:14 i've never left australia 20:26:31 elliott, I was simply triyng to get into the mood 20:26:36 itidus21: you're australian? 20:26:39 IT ALL MAKES SENSE NOW. 20:26:42 yup 20:27:14 itidus21, anyway what was that about bus stops and grass being greener on the other side? 20:27:29 itidus21, you never got around to explaining it 20:27:33 im looking for a wiki page about the grass being greener phenomenon 20:28:00 itidus21, but how is it related to being bored due to waiting for something and having nothing to do to pass the time? 20:28:55 i'll get around to that eventually 20:29:04 but surely there is a name for this damn phenomenon 20:29:13 I'm extremely seldom bored unless I'm in such a situation. I generally find something to do even if I have nothing that I need to do. 20:29:24 "The grass is always greener on the other side" suggests an alternate state of affairs will always seem preferable to one's own. 20:30:04 itidus21, well right. Often involves jealousy of the the neighbour's lawn? 20:30:08 ;P 20:30:28 hmm.. but i suspect it is a natural psychological illusion 20:30:33 i dunno the right word here 20:30:58 (well I never noticed that sort of thing wrt actual lawns) 20:31:09 its not an optical illusion of course 20:31:19 well of course 20:31:23 there is some level of metaphorical abstraction 20:31:24 it would be weird if it was 20:32:04 itidus21, anyway, yes the bus arriving is a better state of the world than the bus not arriving yet. Especially if it is very cold. 20:32:17 like -15°C 20:32:20 well.. its like saying on some given street, home X is more of a mess inside than home X-1 and also home X is more of a mess inside than home X+1 20:32:42 eh 20:32:47 uhm 20:33:17 I never noticed that really either. 20:33:21 well 20:33:21 i dunno 20:33:29 maybe your house isn't a pigsty like mine 20:33:34 :P 20:33:53 not really. Sure there are a few unruly heaps of papers on my desk, and such 20:34:02 maybe the occupants of your household don't generate waste and expect someone else to clean it 20:34:30 as if such people could not get by day to day without paid workers 20:34:33 itidus21, but apart from that I tend to keep it clean. Having it dusty is annoying. And potentially dangerous during the spring due to my pollen allergies 20:35:04 (mostly birch) 20:35:15 what people don't realize is that social systems can break down as readily as mathematical systems 20:35:30 like suppose i was to remove a single term of my choosing from a haskell program 20:35:49 it could quite possibly have a cascading damage of the meaning of the program, right? 20:36:20 do you even know haskell 20:36:21 probably would give you something like "Not in scope: x'" 20:36:26 hmm 20:36:46 ok i wont use haskell in my analogy 20:36:48 I think the most likely scenario is failure to compile. 20:36:52 (actually it would quote x' I think) 20:36:53 Sgeo, indeed 20:37:06 But I can probably construct programs that would still compile, but would mean something else 20:37:10 itidus21: do you mean definition or subexpression 20:37:15 i dont know 20:37:16 Sgeo: i doubt it 20:37:23 you can't shadow module functions in haskell 20:37:28 without being explicit about it 20:37:30 i guess its not clear the bizzare idea i am driving at 20:37:33 elliott, can a definition in a where clause shadow a definition in the main part of the file? 20:38:02 oh, yes 20:38:03 ok then 20:38:06 ok suppose i was to make a pinhole in a gas pipeline 20:38:22 elliott, if you just remove a subexpression then yes. like x' = x + y transformed into x' = x 20:38:32 over time the gas would leak and leak until the whole house is a bomb waiting to go off 20:38:45 gah lag spikes 20:38:55 Vorpal: that's not removing a subexpression 20:39:05 elliott, well okay 20:39:17 elliott, it is literally removing a term though 20:39:20 x' = f x turned into x' = x removes a subexpression, doesn't it? 20:39:27 elliott, y there is a mathematical term 20:39:28 Vorpal: it's not 20:39:31 it's removing a term and an operator 20:39:35 well okay 20:39:39 uhhh 20:39:42 I mean, f is a subexpression, right? 20:39:46 shit heres what im trying to say 20:40:02 itidus21, it's important to odorize the gas so that people will notice if there's a leak? 20:40:11 a highly stable system is probably more vulnerable to change 20:40:14 So that more kids don't die? 20:40:25 itidus21, ... no? 20:40:39 hmm this is gonna take a while :-D 20:40:43 itidus21: that's the opposite of the definition of highly stable 20:40:48 indeed 20:40:55 http://en.wikipedia.org/wiki/New_London_School_explosion 20:41:08 what people don't realize is that social systems can break down as readily as mathematical systems 20:41:10 Nnnnno. 20:41:23 A highly inter-dependent system is unlikely to be highly stable? 20:41:28 Is that what itidus21 wants to say? 20:41:28 At least, if you're talking about the kind of precisely engineered formal systems usually used. 20:41:44 Phantom_Hoover, I think that itidus21 lives in some horrible mirror universe. 20:42:03 are not all living systems highly inter-dependant? 20:42:06 Vorpal: i think that itidus21 wants to make a profound observation. 20:42:14 Social systems are pretty redundant, and the complexity of the individual units gives them a lot of flexibility. 20:42:20 elliott, I further think he is not managing to do so very well so far 20:42:29 Vorpal: i was not implying otherwise. 20:42:36 elliott, okay 20:42:47 thats easy to say unless you are one of the mortalities in the exceptions 20:42:53 The death of almost any individual can be recovered from with effectively no difficulty. 20:43:06 Not in Dictatorships 20:43:07 except from the point of view of that individual :D 20:43:14 that individual cannot recover 20:43:19 Well, I guess that's the almost. 20:43:21 itidus21, that doesn't count when looking at the whole system 20:43:22 But we're talking about the entire society here. 20:44:01 ok now we're getting closer to my mistakes 20:44:06 And even in a dictatorship the death of the dictator can frequently be recovered from. 20:44:11 Sgeo: itidus21 was referring to gradual collapse, I believe. 20:44:18 Sgeo: But look at North Korea. 20:44:29 They survived the death of a dictator; it strengthened the dictatorship, even. 20:44:47 A poorly designed dictatorship, then. 20:44:52 hmm 20:44:58 hmmm 20:45:05 But then, any poorly designed anything might not account for the possibility of individual death 20:45:20 Sgeo: itidus21 was talking about stable systems. 20:45:34 i dont quite know what i am talking about.. 20:45:39 im pretty insane 20:45:52 ok 20:45:56 FSVO 'insane' equal to 'stupid'. 20:46:02 :0 20:46:03 itidus21: finding a formal term for "the grass is greener on the other side" seems impossible 20:46:07 itidus21, a /definition/ of a stable system is one that doesn't radically change due to a "small" input. 20:46:10 (I feel bad now.) 20:46:14 such as the death of a person 20:46:19 oerjan, just call it the envy fallacy. 20:46:20 Phantom_Hoover, and you should feel bad! 20:46:22 north korea's dictator is dead? when did this happen? 20:46:30 olsner: 1994 20:46:32 olsner, the old one. 20:46:34 olsner, the father of the current one is dead, I think. 20:47:00 itidus21, of course a three-person system might very well fail from the death of one person, but then I would argue that is a huge input. After all 33.33....% percent of the persons in the system died. 20:47:10 1) i am bad at communication. 2) i spawned 2 topics in my weird rant just now 20:47:24 but... uhhh 20:47:31 i think i can still derive value! 20:47:32 But in a 100-person system say? then 1 person is 1% of the population. Not likely to fail from that. 20:47:54 so what do i mean by grass is greener... lets see... 20:48:01 ill explain carefully now why i even brought that up 20:48:11 Of course, large inputs, such as a Gamma-Ray Burst, can destroy any social system 20:48:20 hm istr something about things collapsing in france after king louis 14 because he had made all the decisions personally 20:48:31 I'm likely to disconnect. I'm moving cables. 20:48:34 and there was no one skilled enough to take over 20:48:50 suppose that someone lives in a depressing home for some reason.. i dunno what reason.. it could be the people are assholes 20:49:03 itidus21: Is this hypothetical Based On A True Story. 20:49:10 no.. 20:49:19 The best hypotheticals are! 20:49:30 sort of... 20:49:35 but.. 20:49:38 They're all Assholes, sir! 20:49:45 ok uhm 20:50:05 -!- Vorpal_ has joined. 20:50:15 and there was no one skilled enough to take over <-- oerjan, that wasn't a stable system 20:50:16 -!- Vorpal has quit (Disconnected by services). 20:50:22 -!- Vorpal_ has changed nick to Vorpal. 20:50:29 if i was in africa, while they have to worry about food and drink, i have to worry about assholes 20:50:36 yes, it is, Vorpal 20:50:42 it's just that king louis 14 counts as a very large input 20:50:57 elliott, well okay 20:51:01 when faced with assholes everyday it is actually not that hard to imagine that the african food and drink would win in the cost-benefit 20:51:23 but where this fallacy really breaks is that in africa a person is probably just as likely to meet more assholes 20:51:48 so living with assholes could be compounded with poor food and drink 20:52:26 Ergo bus stops,. 20:52:45 elliott, anyway I think the best example to explain what a stable and unstable system means to itidus21 would be a physical example. Take a plank. Make a hole in one end. Hang it on a horizontal rod. Now it is stable. Rotate it so it is balanced above the rod. Now it isn't stable 20:52:45 bus stops don't sound that bad 20:53:00 itidus21: So you don't actually have a bus stop-related point? 20:53:09 what is so bad about busstops? 20:53:19 itidus21: Well, the point is that Vorpal was talking about bus stops being boring. 20:53:20 i don't see how any harm can come to you on account of busstops 20:53:27 I'm not sure poor food and drink would lead to boredom 20:53:27 Then you tried to relate it to the grass is always greener on the other side. 20:53:30 * Phantom_Hoover wonders why /r/math has far more activity on "things which mathematicians do" than actual maths. 20:53:31 annoyance sure 20:53:33 i dont see how busstops can bore a person :D 20:53:34 but not boredom 20:53:46 itidus21: what if assholes are gathered at the bus stop 20:53:50 itidus21, it does when you wait for a bus that is 3 minutes late 20:53:51 Phantom_Hoover: Because most people aren't mathematicians? 20:53:55 and have nothing to do to pass the time 20:54:12 Of course, large inputs, such as a Gamma-Ray Burst, can destroy any social system 20:54:14 ahh 20:54:26 Those capitals are like a stab to the eye. 20:54:39 probably more, actually, as good duelists would be able to get away with almost anything, so would be more litigious <-- istr this actually being a problem in medieval iceland 20:54:43 itidus21, that sort of situation, is really the only time I ever get bored 20:54:46 Phantom_Hoover, Go Look At Some X-Rays. 20:54:48 elliott, that's a) wrong in this context and b) doesn't even explain the content. 20:54:49 itidus21, otherwise I tend to find things to do 20:54:49 Vorpal: so while one waits those 3 minutes, its as if one is being poisoned.. and it takes hours afterwards for that poison to dissipate? 20:54:55 Phantom_Hoover: Gamma-Ray Burst are Sgeo's favourite metal band! 20:55:01 itidus21, no? Where did I say that 20:55:09 Noted for their social upheaval! 20:55:38 Phantom_Hoover: (a) Do you really think most /r/math subscribers are mathematicians? (b) People who aren't mathematicians don't understand most mathematics. 20:55:51 i think i'm being way too literal about the busstop thing :-D 20:56:07 metaphorical bus stops are the best bus stops, after all 20:56:08 itidus21, you just said " i wonder how boredom happens" 20:56:22 and my answer was "while waiting for public transport and having nothing to do to pass the time" 20:56:37 j,, 20:56:40 ^hmm 20:56:40 itidus21, to me that is basically the only times when I'm really bored 20:56:50 but you don't live in hexham 20:56:54 hehehe 20:57:00 no but I live in a pretty small town 20:57:15 but there are always books to read, or web pages to browse or stuff to code or whatever 20:57:26 except when waiting for the bus 20:57:28 maybe a lot of it was about growing up 20:57:35 Phantom_Hoover: (a) Do you really think most /r/math subscribers are mathematicians? (b) People who aren't mathematicians don't understand most mathematics. 20:57:36 with roaming duelists seeking out weak people to challenge 20:57:43 Vorpal: sounds like your town consists of only your house 20:57:49 with roaming duelists seeking out weak people to challenge 20:57:50 *dualists 20:57:55 olsner, well, 20 000 inhabitants iirc. 20:58:06 olsner, still, meh. I'm an introvert. 20:58:09 oerjan: That's the plot to Des Cartes II: Des Harder. 20:58:28 elliott, sounds like a bad porn movie 20:58:37 the best porn movie?? 20:58:42 what i'm imagining is that if i was in finland i might find it easier to focus and concentrate for some reason 20:58:58 that is the grass is greener effect i actually specifically had in mind 20:59:03 Aren't you putting des cartes before the horse??? 20:59:12 with roaming duelists seeking out weak people to challenge <-- wait, where was the *start* of that sentence? 20:59:23 Phantom_Hoover: hi 20:59:35 or is oerjan just a extremely slow typer? 20:59:37 typist* 20:59:40 (maybe?) 20:59:43 i find that social circles tend to replicate themselves in a persons life 20:59:49 Vorpal: i just had an afterthought 20:59:57 oerjan, what was the context for it 21:00:02 the first part is about a page above 21:00:04 its always the same kinds of people filling roles in each others lives 21:00:05 oerjan, it is not on my screen 21:00:26 itidus21, sure, and? 21:00:27 so that no matter where you go, that same social circle will form around you 21:00:27 probably more, actually, as good duelists would be able to get away with almost anything, so would be more litigious <-- istr this actually being a problem in medieval iceland 21:00:40 so you can't escape it simply by travelling :-D 21:00:51 itidus21, and why would you want to? 21:00:52 by crossing the fence :-s 21:00:53 hmm, I thought for a while you actually meant dualist, imagining that as being some category of mathematician 21:01:01 elliott, off-topic still, but I think you should watch Puella Magi Madoka Magica. 21:01:04 >.> 21:01:07 itidus21, I like my friends and family 21:01:11 Sgeo: hi 21:01:12 hmm 21:01:26 roaming around and challenging people's ideas 21:01:49 olsner: http://en.wikipedia.org/wiki/Dualism_(philosophy_of_mind) 21:01:58 Vorpal: thats all you need in the world. you've won the game. 21:02:09 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds). 21:02:17 itidus21, oh also, I'm waiting for windows to boot atm, I'm not bored because of the slow disk making it take ages. I'm annoyed however. But meanwhile I'm chatting here on my laptop 21:02:22 however i have this theory that a person can't in the game so easily. 21:02:36 so something else must be eating away at you if your social life is in order 21:02:41 OH NOOOOOOOOOOOOOOOOOOOOOOOOOOO 21:02:53 elliott: oh, that's probably what I was really thinking about 21:02:53 Guys, I'm about to suffer severe time dilation and being-ripped-apartness. 21:03:01 I'll see you... on the other side... 21:03:04 itidus21, well there was that skeleton in the cellars (true story) 21:03:04 of the VORTEX 21:03:05 :0 21:03:13 "Professional duelists used holmgangs as a form of legalized robbery; they could claim rights to land, women, or property, and then prove their claims in the duel at the expense of the legitimate owner. Many sagas describe berserks who abused holmgang in this way. In large part due to such practices, holmgangs were outlawed in Iceland in 1006, as a result of the duel between Gunnlaugr Ormstunga and Hrafn Önundarson,[2] and in Norway in 1014." 21:03:16 elliott: vortex of fluidity? 21:03:20 itidus21, It was a bird skeleton. 21:03:21 olsner: YES. 21:03:25 ;P 21:03:31 i mean for "me" what "I" need is to like my family and friends 21:03:35 vortices only make me think vortex based mathematics sorry 21:03:45 monqy: im sucked in :( 21:03:47 fluidly 21:03:51 :( 21:03:51 oerjan, heh 21:04:03 elliott: you'll be back 21:04:13 itidus21: That's what they told me yesterday. 21:04:25 hmmmmmmmmmmmmm 21:05:14 elliott: it sounds like time to consult the i ching 21:05:23 itidus21: How can I do that from inside a vortex???? 21:05:25 There's no internet! 21:05:35 Well, that's not true. 21:05:42 But it only connects me to this channel and one website. 21:05:43 elliott: tame the vortex, then use conflict to get it to engulf you anyway 21:05:45 don't worry.. i have the book.. it doesn't matter if i don't exist 21:05:47 the glitch is known as Crassworm's Hotel 21:05:59 ais523: That sounds unethical. 21:06:02 it doesn't matter that i don't know how to use it properly 21:06:24 -!- Phantom_Hoover has joined. 21:06:26 ais523, :D 21:06:32 hmm 21:06:39 do we have a random number generator in here? 21:06:40 ais523, there is a glitch there? 21:06:49 itidus21: 7 21:06:50 ais523, anyway what does that result in? getting no damage? 21:06:56 if you take the ring of conflict off, yes 21:07:02 ah 21:07:02 the problem is, it's mostly only useful on Air 21:07:02 olsner: no wait.. i need it to be in the 1 - 64 range 21:07:07 itidus21: 7 is 21:07:09 ais523, useful yes 21:07:10 true 21:07:22 and by the time you get there, vortices do such pitiful damage that you can heal up inside them even without using the glitch 21:07:37 olsner: ok a second number from 1 to 6 21:07:57 itidus21: 7 21:08:23 !perl print (int (rand 6) + 1) 21:08:24 2 21:08:25 q 21:08:26 do we have a random number generator in here? 21:08:29 itidus21: there you go 21:08:30 @dice 3d4 + 9d9 21:08:30 3d4 + 9d9 => 44 21:08:34 i need a pair of numbers... the first being from 1 to 64 "7" .. the second number being 2 21:08:43 oops 21:08:44 1 to 64 "7"? 21:08:45 7, 2 21:08:53 should i use 44 or 7? 21:08:58 or 64 21:09:05 or 7 21:09:07 use q 21:09:07 itidus21: does the number need to be /random/, or /arbitrary/? 21:09:12 if random, I suggest you use an actual d64 21:09:17 @dice 1d64 21:09:17 1d64 => 6 21:09:20 there 21:09:22 itidus21: 6, 2 21:09:30 ok 21:09:36 hmm 21:09:37 @dice 1d1 21:09:37 1d1 => 1 21:09:38 @dice 1d1 21:09:38 1d1 => 1 21:09:39 right 21:10:00 and by the time you get there, vortices do such pitiful damage that you can heal up inside them even without using the glitch <-- not if you go for low score? 21:10:16 Vorpal: teleport them away afterwards, I guess, still doesn't cost score 21:10:18 elliott: so just to make this clear for me.. the number in the range of 1 to 64 is 6, and the number in the range 1 to 6 is 2, right? 21:10:22 hm right 21:10:25 itidus21: er 21:10:28 although if you're going minscore, you're going to be doing the planes with pets and/or a tooled horn 21:10:33 @dice 1d64 21:10:34 1d64 => 61 21:10:34 @dice 1d6 21:10:34 1d6 => 2 21:10:36 itidus21: there you go 21:10:37 ais523, well yes 21:10:41 itidus21: assuming those ranges are inclusive 21:10:48 yup inclusive 21:11:02 ok so 61 and 2 21:11:34 ok 21:11:43 When you know what is true, you do not have to hide your own strength. You will earn the trust and admiration of others even though you have done nothing to seek it. 21:11:54 -!- Phantom_Hoover has quit (Quit: Leaving). 21:11:57 lol 21:12:09 -!- Phantom_Hoover has joined. 21:12:09 there you go 21:12:18 use this to de-vortex 21:12:49 i don't think this random selection was fair overall, as there wouldn't have been a rethrow if the first numbers hadn't been ambiguous which were which 21:12:51 Oh no elliott 21:13:21 its a cheap shitty i ching book. i am not using it by any proper means 21:13:26 rip elliott, killed by stack overflow 1995-2011 21:13:29 Phantom_Hoover: the vortex shall consume us all 21:13:57 rip us all, killed by stack overflow 1995-2011. 21:14:00 itidus21: sheesh, you could at least throw a coin per line :P 21:14:11 except monqy he's too young to be one of us 21:14:11 i threw out the coins in the rubbish 21:14:22 during a weird phase i went through 21:14:28 monqy is 4 21:14:29 yearso ld 21:14:55 oerjan: suffice to say the chinese would love PRNG if they had one back then 21:15:06 elliott: hmm, what distinguishes yearso from other linkers? 21:15:08 rip us all, killed by stack overflow 1995-2011. <-- I assume you mean the site? It tends to be quite terrible. 21:15:09 usually im 6 or 2 but today i can make exception 21:15:12 itidus21: i'd be shocked, except i once threw away a die for an equally weird reason. 21:15:28 (I would so call the linker I'm currently writing yearso if giving it a silly name were appropriate, but it isn't; at the moment, it's imaginatively named "linker") 21:15:53 for some reason, humans throughout the millenia have invented all manner of natural PRNGs 21:16:09 Do die count as PRNGs? 21:16:10 maybe it's fun 21:16:15 yes 21:16:31 how about really big coins 21:16:34 yes 21:16:39 you can't flip it it's too big 21:16:43 Sgeo: no, they're imperfect RNGs, but aren't pseudorandom by any sensible definition 21:16:47 it's debatable whether you can ever get rid of the P in our physical universe 21:16:58 i am agreeing with oerjan 21:17:18 ais523, well, if we ignore small-scale quantum randomness... 21:17:25 oerjan: a probably foolproof definition of "PRNG" is that it's possible to reseed it 21:17:27 Which presumably does not have much of an impact on die. 21:17:31 the physical universe can't be reseeded 21:17:34 and if there _is_ any truth to divination, you probably cannot. 21:17:37 elliott: hmm, what distinguishes yearso from other linkers? 21:17:40 i dont know quantum mechanics 21:17:56 ais523: i don't have a sufficiently funny response to this, but i want to acknowledge it as a good question 21:17:56 Sgeo: no, they're imperfect RNGs, but aren't pseudorandom by any sensible definition <-- if the state of the world in the area that can affect the die is taken as seed? 21:18:03 ais523: well ok if the pseudo means entirely predictable rather than imperfect. 21:18:04 ais523: and Yearso is a good name for a company 21:18:07 it is 21:18:09 ais523: modulo the fact that it's unclear how to pronounce it 21:18:21 it's obvious how to pronounce it apart from the s 21:18:24 is nature itself a PRNG? 21:18:36 itidus21: if anything it's a non-P RNG 21:18:45 there's true randomness at the quantum level 21:18:59 see e.g. HotBits, which generates true random numbers by monitoring radioactive decay 21:19:02 rip us all, killed by stack overflow 1995-2011. <-- should i be scared? i also made my first SO comments just days ago. only 11 reputation so far, though. 21:19:20 elliott, or is there? (many-worlds etc) 21:19:24 elliott: such talk is not conducive to escaping the vortex 21:19:31 Sgeo: you are mistaken 21:19:34 ...escaping the vortex? 21:20:04 Sgeo: the interpretation doesn't matter, what matters is that the universe /we/ observe is truly random 21:20:11 the elliottonian vortex is related to the matrix of solidity 21:20:17 i.e. even if many worlds is true, we're still /deciding/ random decisions with a true RNG 21:20:28 elliott, ah 21:20:35 there's true randomness at the quantum level <-- as far as we understand the universe currently at least 21:20:37 although, it could be that it's a PRNG with a seed with more bits than our universe 21:20:42 and that would be indistinguishable, I think 21:20:46 elliott, it could all be emulated 21:20:55 Vorpal: (a) I believe it is generally accepted, (b) that's the point. 21:20:59 or could it all be a function of our collective wills? 21:21:00 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds). 21:21:06 the elliottonian vortex is related to the matrix of solidity 21:21:08 *vortex of liquidity 21:21:16 itidus21, ...what? 21:21:26 NO!! I WAS AWARDED MY FIRST SILVER BADGE!!! 21:21:28 STOP YOU DEMONS 21:21:40 determinism and non-determinism are part of the universe 21:21:42 :0 21:21:44 I tried to answer on SO once 21:21:50 you can't just ignore them 21:21:54 I didn't actually answer the question though, and my answer was deleted 21:22:03 good job 21:22:08 I should have made a comment on the question or something, I guess. 21:22:17 I don't so. should i? 21:22:25 elliott, it could be a PRNG is generating all the quantum randomness for an emulated universe 21:22:35 Sgeo: the sgeo story 21:22:37 things happen because you make them happen 21:22:46 Vorpal: not with an insufficient number of bits, I don't believe 21:22:55 i am also open to the idea that things are deterministic 21:22:56 although I think it could be done by using some of the universal state /itself/ 21:23:02 e.g., sufficiently far away state 21:23:04 I really don't know exactly 21:23:05 so long as i am not forced to stick to that view 21:23:06 ask oerjan :P 21:23:10 elliott, err, does anything work with an insufficiant number of bits for the task at hand? 21:23:22 a dice doesn't roll itself.. a human rolls it because a human wants a random number 21:23:24 Vorpal: you are misinterpreting me 21:23:38 elliott: there are theorems in complexity theory that say you can make a PRNG of one complexity class that cannot be distinguished from true random by one of a lower one. P and LOGSPACE being one example, iirc. 21:23:40 itidus21, unless the die is on the ground on a sufficiently windy day? 21:23:47 Vorpal: by my very limited understanding of quantum mechanics, a "boring" PRNG is ruled out. 21:23:56 (perhaps it counts as a hidden variable? dunno) 21:24:05 oerjan: right 21:24:06 elliott, well okay 21:24:17 die only rolls because of something happening in humans thoughts like "make dice" "roll dice" 21:24:19 elliott, I don't know enough about quantum mechanics either 21:24:25 so you may be right for all I know 21:24:27 itidus21: isn't that just The Secret 21:24:37 aka one of the worst books of the millennium so far 21:24:45 what's the secret 21:24:54 http://en.wikipedia.org/wiki/The_Secret_(book) 21:24:54 elliott, I think he's either doing that or trying to get at a "What is a die" thingy? 21:25:03 tl;dr "believe you're healthy and YOU WILL BE HEALTHY IT'S MAGIC!" 21:25:06 "also rich! and famous!" 21:25:07 monqy, OUR MINDS CONTROL REALITY OTHER THAN BY TRIVIAL WAYS 21:25:10 its a cube of plastic or wood... 21:25:20 oerjan: what's a true random sequence? not produced by an algorithm? 21:25:23 good buk 21:25:23 it has ink on it 21:25:28 Sgeo: well of course they do 21:25:33 it controls your body, for one 21:25:41 elliott, that's what I meant by trivial. 21:25:48 to quote a person, "fsvo trivial" 21:26:11 -!- NihilistDandy has quit (Quit: http://haskell.org). 21:26:18 the problem of the butterfly effect is that the impact of the butterflys wings is "uncontrolled" 21:26:28 -10 IN 2.5 21:26:34 i am undone :( 21:26:40 elliott, hm? 21:26:43 :( 21:26:50 Sgeo: Vortex measurements. 21:27:06 Sgeo: the latest ones are available at http://tinyurl.com/dxuq5eo 21:27:56 sorry to all the mathematicians for my very unmathematical comments 21:28:00 itidus21, the butterfly effect is just about the system being chaotic 21:28:08 the butterfly has a mind 21:28:14 :D 21:28:14 it flaps its wings with its mind 21:28:19 Vorpal: he's got a point!! 21:28:21 yes but that is not what the butterfly effect is about 21:28:33 the term butterfly effect has a precise meaning 21:28:38 im... really... fucking annoying to argue with 21:28:49 not really 21:28:53 oklopol: erm a sequence of independent, equally distributed elements; if it's infinite then with probability 1 it cannot be produced by an algorithm since those that can are countable... 21:28:54 Leaves falling don't have a mind. 21:29:02 itidus21, you just described people like elliott and me there 21:29:07 itidus21: it's not really an argument, it's more just everyone else trying to explain to you 21:29:08 Elevator malfunctions don't have a mind. 21:29:12 21:29:15 and there is that too 21:29:30 Elevator Malfunction is Sgeo's second-favourite band. 21:29:54 Someone died in an elevator malfunction recently :( 21:30:18 it's not for us to unravel the secrets of the will, the will-not, conciousness, transcendance, determinism, non-determinism 21:30:21 oerjan: so how do you run the algo, obviously no finite segment of it tells you anything about the distribution 21:30:24 Sgeo: Thousands of people just died in recently 21:30:34 Sgeo: Or do you only care about the elevator malfunction ones 21:30:40 it's not for us to unravel the secrets of the will, the will-not, conciousness, transcendance, determinism, non-determinism <-- why not? 21:30:48 Vorpal: because itidus21 doesn't know how to 21:30:49 we can always try 21:31:06 elliott, elevator malfunction was just the most immediately accessible mindless cause that could be said to have a butterfly effect 21:31:15 Sgeo: I was responding to Someone died in an elevator malfunction recently :( 21:31:20 elliott, to be fair, neither do I know exactly how to do do that completely. Won't stop me from giving it a try though 21:31:22 smarter people than us have tried.. it ends up in teaching people the virtues of not stealing 21:31:31 lol 21:31:35 I mean, car crashes are the most accessible horrible death to me for some reason, but they're mostly ... I think mindless would be the wrong word 21:31:52 elliott, well, I was explaining why elevator malfunction was so accessible to my mind 21:31:56 Sgeo: More mindless than an elevator going wrong? 21:31:56 mindful. 21:32:04 oklopol: do _i_ look like i've read the proof? 21:32:07 more notmindless 21:32:11 oerjan: yes 21:32:12 Car crashes have thinking involved being responsible at the time of the accident. 21:32:26 Elevator malfunctions are probably mostly due to unthought mistakes far in the past. 21:32:33 Q.E.Z 21:32:48 elliott, I was thinking of elevator malfunction as more mindless 21:32:54 Oh. 21:33:05 i would say everyone should ride horses or horse-and-carts... for various good reasons.. except accelerating population leads to CBDs that everyone has to race to 21:33:18 elliott, Q.E.Z.? 21:33:22 the evolution of the home-office may well be the devolution of the car 21:33:22 Vorpal: Yes. 21:33:30 You can't say Q.E.D. when oklopol's around. 21:33:30 elliott, QED I know the meaning of 21:33:33 wouldn't it be nice if noone needed an office anymore 21:33:33 itidus21, I'd say everyone should ride in computer-controlled cars. 21:33:39 elliott, oh? So what does the Z stand for? 21:33:39 :-D 21:33:47 and why can't you say QED? 21:33:50 No more human drivers. 21:33:52 if people could re-distribute themselves across the world via the internet 21:33:57 Vorpal: Either zemonstrandum or zarathustra. 21:34:00 why drive when you can tele-commute 21:34:07 Sgeo, problem: driving is fun. 21:34:15 Vorpal, fuck fun. 21:34:17 smarter people than us have tried.. it ends up in teaching people the virtues of not stealing <-- scientific progress means that it doesn't matter how smart the ancients were, they didn't have access to the _tools_ to solve the questions. 21:34:18 Sgeo: Cool, it'll be like public transport but less efficient. 21:34:24 fuck fun :D 21:34:29 And more expensive and polluting (fuck fun, right?). 21:34:36 Sgeo, won't stop people from complaining loudly. 21:34:47 -!- Phantom_Hoover has joined. 21:35:14 anyway, my comment about grass is greener very much applies to interplanetary travel 21:35:29 we already know we'll fuck up every planet we visit if we visit them 21:35:34 elliott, how would it be like public transportation? 21:35:44 Sgeo: Cool, it'll be like public transport but less efficient. <-- less boredom 21:35:56 Sgeo: In that it's a massive investment and overhaul and people who drive currently won't like the idea of it? 21:36:04 elliott, at least there is less waiting involved 21:36:06 that is a good thing 21:36:20 Vorpal: Waiting is basically a function of how much money you put into the system... 21:36:23 itidus21, part of a reason to do interplanetary travel is if something happens to one planet, humanity goes on. 21:36:32 elliott, for public transport? Hm. 21:36:34 Vorpal: Anyway, good trains are way faster than even auto-driven cars could go. 21:36:46 Although sure, the psychology is different. 21:36:56 elliott, they can't go everywhere that auto-driven cars can. 21:37:05 Such as into a driveway. 21:37:12 elliott, certainly they are faster, but less convenient if you don't live near a train station. And yes the psychology is indeed different 21:37:15 " what i'm imagining is that if i was in finland i might find it easier to focus and concentrate for some reason" .. same thing we as a species imagine about interplanetarry travel 21:37:24 Sgeo: So fuck fun, but don't fuck a little bit of walking every now and then? 21:37:41 Vorpal: That's also a function of money. :p 21:38:07 Sgeo: Anyway, the areas where public transport can't go are the areas where it would be much more difficult for auto-driven cars. 21:38:17 elliott, very few can afford having a train station built right next to your house :P 21:38:19 Due to less-defined/lower-quality roads, less mapping, etc. 21:38:42 Vorpal: It's called public transport; the government is the one paying the money here. But yes, taxes would increase quite sharply if everyone got that. 21:38:53 of course 21:39:03 elliott, anyway trains are less reliable here in Sweden 21:39:06 elliott: Actually, the primary barrier to public transportation at least *here* is a function of population density. 21:39:19 Vorpal: The train stations should rent out electric cars that run on tramline-type things that go to your doors. :p 21:39:24 You couldn't really keep a train station afloat here. 21:39:29 You just put the coins in the slot, get in, get out, and it zips back. 21:39:29 elliott, the lesson is that we as a snow-heavy land should NOT buy trains from countries that don't have much snow 21:39:41 pikhq: Yeah, well, the solution is to live somewhere less terrible. 21:39:43 it just end in tears 21:39:59 Vorpal: TBH, for local transport I'd tend to prefer underground rail. 21:40:02 if people did away with skyscrapers and central business districts and did everything over the net, it would surely reduce traffic considerably 21:40:12 Long-distance transport can have nice fast overworld lines. 21:40:15 Also: it wouldn't take much more to get self-driving cars common. 21:40:31 pikhq: I am pretty sure most people would not buy self-driving cars unless they had no choice. 21:40:32 you could get internet connection as a tax write off 21:40:45 /Especially/ anyone over the age of 35. 21:41:08 elliott, not cost effective outside bit towns 21:41:10 or cities even 21:41:18 elliott, I doubt there is a Hexham metro :P 21:41:20 The currently extant ones require mapping of the roads. 21:41:33 Vorpal: Do you want to bet on how much money goes into road construction and maintanence? 21:41:37 big* 21:41:47 elliott, quite a bit. But tunnels are expensive 21:41:48 Not to mention the money accidents cost. 21:41:49 even more so 21:41:53 Public healthcare and all that. 21:41:59 -!- DCliche has joined. 21:42:29 Also, do you seriously think people drive because they want to control the vehicle? 21:42:32 Fuck no. 21:42:42 They drive because everything's too far to walk to. 21:42:51 elliott, indeed 21:43:13 I think itidus21 may have said this before, which makes me feel weird, but: Just _one_ accident with an auto-driven car, and we can say bye-bye to the dream, probably. 21:43:18 pikhq, there are those who find driving fun. Why else would there be driving and racing games. 21:43:28 pikhq: If you seriously think most people would be fine ceding driving control completely to a computer... then I really don't know what to say to you, but I invite you to go up to people on the street and ask them. 21:43:34 Vorpal: Yeah, but they're not a significant factor in adoption of automatic cars. 21:43:41 pikhq, indeed 21:43:42 Especially literally anyone who sees driving as a competition. 21:44:41 -!- Klisz has quit (Ping timeout: 240 seconds). 21:46:07 elliott: You're talking about people who do shit like put on makeup while driving. 21:46:22 pikhq: That... does not even remotely come close to being a rebuttal. 21:47:55 What I'm saying is: given driving habits here, it's basically inevitable that people will have automatic cars and use them pretty much of the time, just so that they can do something during their half-hour commutes. 21:48:52 Given that they already risk their lives *dramatically* just to do that... 21:49:25 anyway I wouldn't trust a computer to handle everything when driving. For large roads sure. But when parking on a uneven non-surfaced (I mean, grass) parking place out in the middle of the woods? 21:49:32 I done that 21:49:42 when going to stuff like tourist attractions 21:49:44 `log automatic car 21:49:58 Vorpal: Fairly small case, though. 21:50:00 or during bad winter weather 21:50:06 Vorpal, have I not previously expressed my scepticism that you still don't understand the pluperfect. 21:50:10 pikhq, not in Sweden. We don't put asphalt everywhere. 21:50:13 2008-09-13.txt:21:08:08: "hygienic" macros which take automatic care of naming conflicts 21:50:21 oops 21:50:26 `pastelogs automatic car 21:50:29 Vorpal: It's still a fairly small case. I mean, how often do you park? 21:50:34 http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.32433 21:50:41 pikhq, well, every time I drive into the garage? 21:50:46 Well, yes. :P 21:50:53 2011-05-14.txt:00:42:11: The safety concerns of an automatic car need to be compared against human drivers. 21:51:01 pikhq, I probably park several times per day 21:51:04 pikhq: Wait, you want automatic cars /with manual override/ control? 21:51:05 But that's, what, 2 minutes of your drive? 21:51:08 pikhq: hm perhaps what will happen is that cars get the ability to drive automatically or be controlled as you wish, and then gradually people will stop controlling their cars due to the convenience? 21:51:10 *override control/? 21:51:33 pikhq: you discussed it 7 months ago apparently :) 21:51:34 elliott: It would be somewhat necessary, at least given some of the broken infrastructure around here. 21:51:45 elliott, that is like a more advanced cruise control 21:51:50 pikhq: Great, so now people will override it whenever there is, e.g. a car in front of them! 21:51:54 which I'm fine with 21:52:00 And then expect the system to continue working correctly even though they massively wrecked the parameters for whatever reason. 21:52:11 Now it's about ten times as hard to write the software and has absolutely no safety benefits. 21:52:16 GET IN 21:53:11 elliott: maybe anti-collision features could only be overruled at low speeds. 21:53:26 elliott: Says the man who hasn't seen a country where literally everybody drives. 21:53:26 elliott, anyway the problem is it takes a HUGE amount of work to handle every situation. And if it doesn't and lacks manual override, then it is worthless 21:53:38 oerjan: I am sceptical that the systems are so "modular". 21:53:54 oerjan: I think a lot of it is essentially generated based on real-world driving data. 21:53:59 At least I think Google's was quite like that. 21:54:19 pikhq: You realise a shit ton of driving goes on in the UK, right? 21:55:02 oerjan: Anyway, I'm not sure how an anti-collision feature could still interact with manual driving. 21:55:08 oerjan: You automatically swerve if you try and drive into a car? 21:55:24 That sounds... easy to backfire. 21:56:13 elliott: ~90% of the population commutes via car? 21:56:34 pikhq: Do you have sourcse for that statistic? 21:56:39 Not sceptical, just curious. 21:57:12 pikhq: Also, 90% of the population, or 90% of the working population? 21:57:21 https://encrypted.google.com/url?sa=t&rct=j&q=commuting+in+the+US&source=web&cd=4&ved=0CDcQFjAD&url=http%3A%2F%2Fwww.census.gov%2Fprod%2F2011pubs%2Facs-15.pdf&ei=F23qTuSCLpPqgAeK2_CKCQ&usg=AFQjCNEdBXyfZTDYeUlAGmNhrO7KBiBFfw 21:57:31 DAMMIT GOOGLE 21:57:51 I want the URL, not the "spew your shit on top of it" URL. 21:58:07 http://www.census.gov/prod/2011pubs/acs-15.pdf 21:58:34 pikhq: Car is ~75% of commuters 21:58:39 In UK 21:58:40 That's driving alone. 21:58:42 Citation: http://www.ons.gov.uk/ons/rel/lmac/commuting-to-work/2011/commuting-to-work---2011.html 21:58:46 Oh. Right. 21:59:07 Other highlights: "Workers took an average of 25 minutes to get to work". 22:00:10 Yes, the UK is small 22:00:36 However if you don't think we have large, high-traffic roads with frequent jams and all that, you're crazy 22:00:55 We just utilise road transport a bit less within cities 22:01:24 (Especially London, but that's because road transport in London is basically impossible, from what I gather.) 22:01:25 small? 25 minutes is like the whole day :o 22:01:28 -!- kmc has joined. 22:01:48 if it took me 25 minutes to go to work, i would not go to work 22:01:51 oklopol: That's one way. 22:02:07 and i represent the majority as usual. 22:03:08 Also, ~2% of the population in that study had a 90 minute commute. One way. 22:03:40 pikhq: Oh, that was a US figure? 22:03:47 that's like riding a bike through finland every day 22:04:13 pikhq: Because UK figures are 1-15 min: 42%, 16-30 min: 33% 22:04:22 So it's not like US commutes are significantly longer. 22:04:35 elliott: Yeah, that was a US figure. 22:04:57 elliott: You can also expect to drive for anything else you do. 22:04:58 http://www.youtube.com/watch?v=YNS7AtliBFM 22:05:00 THIS IS RIVETING 22:05:01 Say, groceries. 22:05:15 Yes, pikhq, our supermarkets, too, have carparks. 22:05:30 oerjan: Anyway, I'm not sure how an anti-collision feature could still interact with manual driving. <-- you still get unpredictable parameters, what if a suicidal pedestrian throws himself in front of a car, and the distance is too short to brake. 22:05:36 The fact is that for the US it's "everyone" and the UK it's "a lot of/most people". 22:05:41 pikhq, I live well inside the second largest city in Scotland, and almost all of the groceries in this house are brought here by car. 22:05:50 It's not like we're some utopia of everything being in walking distance and the rest being perfect public transport. 22:06:08 elliott, that would be like Monaco, (walking distance) 22:06:12 oerjan: Anyway, I'm not sure how an anti-collision feature could still interact with manual driving. <-- you still get unpredictable parameters, what if a suicidal pedestrian throws himself in front of a car, and the distance is too short to brake. 22:06:18 Vorpal: You think a human operator would do well there? 22:06:24 elliott, no 22:06:34 elliott, but I think an automatic car would do just as badly 22:06:41 Yes. So it doesn't matter. 22:06:47 They're the same, so it's irrelevant. 22:07:03 right 22:07:03 (Of course more people would be upset if an automatic car did it.) 22:07:09 indeed 22:07:27 -!- oerjan has quit (Quit: Reboooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo*NO CARRIER). 22:07:34 Vorpal: Also, I doubt that's a fairly common method of suicide. 22:07:52 elliott, also what would an automatic car do if it was a question of "save pedestrian" vs "save people in car" 22:07:52 If there's a pavement, then it's probably in an area where a car banging into you would not be fast enough to kill you. 22:08:07 *Reliably* kill you. 22:08:11 Phantom_Hoover: Yes, yes. 22:08:18 Vorpal: I very much doubt an automatic car can reason about moral situations, dude. 22:08:31 elliott, like a pedestrian in front, too short distance to brake, but you could still change your course. Except this is a cliff road and there is a deep drop to the side of the road... 22:09:03 elliott, also what would an automatic car do if it was a question of "save pedestrian" vs "save people in car" 22:09:04 "[...] the largest Asda Supercentre with a nett sales floor of over 120,000sqft." "Walmart Supercenters are hypermarkets [...] with an average of about 197,000 square feet." 22:09:07 What do *people* do? 22:09:15 Vorpal: I imagine it would swerve; it's probably not very easy to detect drops like that, and obstacles are not that easy to distinguish from one another. 22:09:18 Phantom_Hoover, save themselves, if they have time to think about it 22:09:24 pikhq, wow, that's a difference of a whole 50%! 22:09:26 Phantom_Hoover: Kill both :P 22:09:33 Phantom_Hoover: Also comparing largest with average. 22:09:36 elliott, a human drive would NOT swerve in that case. 22:09:36 pikhq: Oh shit, our supermarkets are smaller! 22:09:38 That so matters. 22:09:40 at least probably not 22:09:41 Vorpal: Who cares? 22:09:46 ∎ 22:10:04 If humans are our benchmark for how a car should drive, we're gonna get really shitty self-driving cars. 22:10:10 Also. 22:10:15 elliott, well if there are like 3 people in the car and one pedestrian, the automatic car would have taken a worse decision. 22:10:17 Vorpal: If this is a cliff road, where the fuck is the pedestrian coming from? 22:10:25 ∎ 22:10:35 elliott, could be a suicidal one? 22:10:48 elliott, anyway that was just an example. You could construct other scenarios like that 22:10:49 Vorpal: I don't think you understand how cliffs work? 22:11:01 Phantom_Hoover, save themselves, if they have time to think about it 22:11:09 Also pigs would fly if they had time to think about it. 22:11:26 Phantom_Hoover: Do pigs live busy lives, usually? 22:11:36 Phantom_Hoover, well, they might swerve due to panic. Or they might be aware of the drop and not swerve 22:11:47 I'm pretty sure most people would swerve. 22:11:57 They might hit the brakes. 22:12:00 Or that. 22:12:01 Did you know that cars have brakes? 22:12:02 yeah 22:12:16 Wait, wait. 22:12:16 Phantom_Hoover, anyway there is such a thing as braking distance 22:12:19 I know what the automatic car should do. 22:12:25 elliott, fly? 22:12:30 i was thinking fly too 22:12:36 It should swerve, but then swerve even more, so that before it actually falls down, the air propels it back on to the road going the other way. 22:12:38 Q.E.D. motherfuckers. 22:12:39 *Z. 22:12:46 Phantom_Hoover: But that would be good too. 22:12:47 right 22:12:57 It'd just swerve and everyone inside would go "NOOOOO" and then the wings would come out the side and it would fly off into the sunset. 22:13:07 right 22:13:09 Orchestra plays uplifting music, etc. 22:13:16 I'm still waiting for my flying car 22:13:17 credits roll 22:13:19 Yes. 22:13:22 THE END appears. 22:13:29 Actors get lots of money, Oscars. 22:13:34 elliott, what uplifting music would be appropriate? 22:13:50 Phantom_Hoover: I don't know, you know the kind of music that always plays when things go well for once in a film and it's near the end. 22:13:55 It's going to be impossible to get people to see the lives saved by auto-driven cars. 22:13:59 Phantom_Hoover, benny hills theme 22:14:05 Phantom_Hoover, it is always appropriate 22:14:13 Vorpal, not that one. 22:14:20 Phantom_Hoover, are you sure? 22:14:21 :/ 22:14:23 Yes. 22:14:23 It's not like you can put in a paper "This person was almost in a crash, but thanks to being in a computer-controlled car, survived" 22:14:32 Phantom_Hoover, aww 22:14:40 Sgeo: It's funny because you think papers convince people? 22:14:42 Or, well, "This person was driving drunk. Nothing of consequence happened" 22:14:44 Just slap something by Two Steps From Hell over it; that's what they're there for, after all. 22:14:48 elliott, news media does. 22:14:55 moral of the story drive drunk 22:15:06 Erm, not driving 22:15:08 Phantom_Hoover, I'm not sure what/who that/they is/are. 22:15:12 "In the driver seat of a car" 22:15:26 "Nothing bad happened, because the car wasn't driven by the person, but rather, a computer." 22:15:36 exciting 22:15:58 that isn't news 22:16:05 Vorpal, exactly my point 22:16:07 At the age of twenty, Sgeo begins to suss out how the news works. 22:16:15 Phantom_Hoover, heh 22:16:20 Phantom_Hoover, I'm 22. 22:16:28 sgeo is 22??????????????????? 22:16:32 yes. 22:16:41 really? 22:16:43 yes. 22:16:43 monqy, it's amazing, and then you think about it and feel sad. 22:16:57 I thought he was younger than me 22:16:58 Sgeo: Are you saying that news media actually causes people to change their strong preconceptions. 22:16:58 :/ 22:17:00 Because hahahaha. 22:17:10 Vorpal: Bow before your elder! 22:17:22 elliott, I'm equally old 22:17:31 Sgeo: What month were you born. 22:17:36 elliott, if someone hears about accident X more often than they hear about accident Y, even if accident Y is more common, they're going to be scared of X 22:17:43 elliott, why? 22:17:44 Sgeo being older than Vorpal is somehow odder than him being older than me, elliott or monqy. 22:17:46 well okay maybe he is older 22:17:51 Sgeo: Because what month was Vorpal born. 22:17:53 Phantom_Hoover, yes 22:17:59 May 22:18:00 elliott, the current month 22:18:02 oh well 22:18:10 :D 22:18:12 (except not this instance of it) 22:18:24 (1989-12-01) 22:18:50 Phantom_Hoover, I thought he was like 20 or so 22:18:57 He was 20 two years ago. 22:19:00 20 is also old 22:19:05 elliott, well, I meant about now 22:19:23 I have trouble imagining sgeo not being a kid 22:19:29 help :( 22:19:36 So, um, how do you word a ping on a bug report this guy has been ignoring me for 6 days ;_; 22:19:37 monqy, aren't you a kid too? 22:19:38 iird 22:19:40 I'm still treated like a kid >:( 22:19:40 iirc* 22:19:44 yeah i'm a kid oops 22:19:46 Sgeo: That's because you still act like a kid. 22:19:47 monqy, what do you know, you're 15. 22:19:49 Sgeo, that is because you act like one 22:19:51 elliott, snap 22:19:54 elliott: "Ping" 22:20:01 snop 22:20:04 olsner: THAT'S IMPOLITE!!! 22:20:07 Phantom_Hoover: splinpers 22:20:27 -!- pikhq_ has joined. 22:20:36 elliott: a bit obnoxious maybe 22:21:09 -!- pikhq has quit (Ping timeout: 240 seconds). 22:21:44 olsner: Well, my last comment was many paragraphs long and basically said "rather than minorly breaking API compatibility, fairly majorly break it and this works brilliantly" :P 22:22:03 (Although "fairly majorly" is relative, since the relevant consumers of this API are like 15 lines long maximum.) 22:22:27 oh, ok, you've moved the bug into the "wait for the perfect solution to become clear" state 22:22:34 this state has no possible next state 22:22:36 olsner: I made it very clear. 22:22:40 It got into that state and then I solved it the next day :P 22:23:27 Vorpal: Help how do I ping. 22:23:54 elliott, ping what? 22:24:12 elliott, anyway I believe it is net_adm:ping(atom_for_node_name) 22:24:13 ;P 22:24:31 ;__; 22:24:36 Ping https://github.com/basvandijk/monad-control/issues/4 in particular :P 22:24:46 elliott, you ask me about github? lol 22:24:51 I don't use github 22:24:54 "YOU DARE SPEAK TO ME OF GITHUB" 22:25:05 elliott, not it is just that it is pointless to ask me 22:25:07 Vorpal: I was in fact bothering everyone to tell me how to politely ping a bug report. 22:25:09 because I don't use it 22:25:11 GitHub is irrelevant :P 22:25:40 well, no matter how well you explained the issue it's not to you but to the maintainer it needs to be clear 22:25:41 elliott, "WHY ISNT THIS FIXED YET" is a favourite. Remember the caps and the missing ' 22:25:55 WHY ISN"T THIS FIXED YET 22:25:57 good too 22:25:57 and obviously your solution is flawed because it wasn't his idea :) 22:26:02 olsner: Pah :P 22:26:05 why isn;t this fixed yet. a classic. 22:27:10 monqy, also WHY ISN*T THIS FIXED YET 22:27:19 that works better on Swedish keyboard 22:27:27 at least for me " is shift-2 22:27:42 https://github.com/basvandijk/monad-control/issues/4#issuecomment-3170203 22:27:43 IT IS DONE 22:27:50 IM SO RUDE 22:29:52 so... 22:30:02 rude... 22:30:03 ais523: undef in list context is () right? 22:30:18 monqy: im 22:30:19 kallisti: no, it's (undef) 22:30:19 rudest :( 22:30:24 ais523: auuuuughweiurhwiuerh 22:30:25 i.e. a list with one element, which is undefined 22:30:30 oh... 22:30:33 kallisti: if you're thinking of a function return value 22:30:34 yes 22:30:37 kallisti: have you considered you're doing it wrong if all these details matter to you 22:30:38 of undef 22:30:43 then "return" will return () in list context or undef in scalar context 22:30:46 elliott: no. 22:31:01 which is the most common reason that matters (a list with one element is true, scalar undef is false, and you might be trying to return a false value) 22:31:12 ais523: no I'm thinking of undef as returned by an error in a block eval. 22:31:32 okay. so I SEE THE PROBLEM. 22:31:58 kallisti: list context eval returns () on error, I just checked the docs 22:32:12 so the question about "undef in list context" is irrelevant because eval doesn't return undef on failure, but false on failure 22:32:16 elliott: yes, insignificant details such as "values" involving other insignificant details such as "being returned from functions" 22:32:37 ais523: hmmm, okay. 22:33:09 elliott: it's plausible to think "I want to use eval but don't know what it returns on error in list context, and it matters because I might get an error" 22:33:18 in fact,I didn't know the result myself; I just looked it up 22:33:20 s/,/, / 22:33:25 ais523: it seems like kallisti went the extra mile and just assumed :) 22:33:54 elliott: no I read the docs but I must have missed that. 22:34:29 ais523: I have a block-eval whose result is passed to a callback, and according to perl's debugger the callbacking is receiving a 1, though I'm pretty sure the only possible return values are either () or a hash. 22:34:29 kallisti: perldoc -f eval 22:34:37 it's very confusing to me. 22:34:53 how are you passing the block-eval to the callback? 22:35:01 directly. 22:35:07 list context. 22:35:17 as in callback (eval { ... }) ? 22:35:24 $callback->(eval {... }) 22:35:59 so I'm guessing what I think I should be returning is not the case? 22:36:07 oh another caveat: eval returns (undef) on a syntax error 22:36:24 but I'm checking $@ and getting no syntax errors. that also wouldn't explain the 1 22:36:28 no, it returns () on a syntax error in list context 22:37:01 I have the docs open right now, they say that quite explicitly 22:37:07 -!- Patashu has joined. 22:37:13 Phantom_Hoover: YOU SUCK 22:37:16 If there is a syntax error or runtime error, or a die statement is executed, eval returns undef in scalar context or an empty list--or, for syntax errors, a list containing a single undefined value--in list context 22:37:20 ais523: me too 22:37:22 also, eval { syntax error = } is a compile-time error 22:37:27 this is 5.14 docs though. 22:37:30 (whereas eval "syntax error = " is a run-time error, for obvious reasons 22:37:32 ) 22:37:41 kallisti: hmm, it's changed since 5.10, then 22:37:46 that's quite a breaking change 22:37:56 agreed. also it doesn't apply to me. 22:38:09 * kallisti should start using the docs on his system instead of web docs. 22:38:29 it later goes on to explain how people think this is a bug or something. 22:38:34 and should be fixed etc 22:38:45 perl has no bugs, it implements Perl perfectly 22:38:47 by definition 22:38:53 elliott: BLAH BLAH BLAH 22:39:09 Perl has bugs then. 22:39:09 There are no bugs in perl, only documentation bugs. 22:39:23 kallisti: Perl is defined as whatever perl does. 22:39:28 ...yes 22:39:52 There cannot be bugs in a definition. Merely stupid definition. 22:40:01 okay fine. 22:41:41 oh. duh. 22:42:02 this is what happens when you try to program all day without eating food first. 22:42:05 and misread debugging output. 22:43:18 -!- copumpkin has quit (Quit: Computer has gone to sleep.). 22:44:22 ais523: it would be interesting if perl had a sigil that deferred context. 22:44:37 that wasn't like... a coderef. 22:44:46 I guess it would be equivalent though, since it would have to be lazily evaluated. 22:45:10 in other words. my ?x = somefunc(2, 3); 22:45:13 doesn't enforce a context 22:45:24 -!- oerjan has joined. 22:45:26 until ?x is evaluated elsewhere, and the context it's evaluated in is used instead. 22:45:32 kallisti: yes, it'd have to be lazy 22:45:38 basically equivalent to a subroutine I guess? 22:45:40 why would that be interesting? it seems mostly useless 22:47:24 dunno. It would be useful with my current callback scheme instead of enforcing list context on the result, but it may be possible with coderefs or maybe even regular subroutines. 22:48:16 currently I store the callbacks result in an array, print errors as warnings, and then return the list. 22:48:38 hmmm, well it's basically impossible to check for warnings 22:48:54 without knowing the context, because can possibly change the computation drastically. 22:49:04 +context 22:49:16 dunno, it's irrelevant. 22:49:34 hi oerjan 22:52:18 o hai 23:10:38 * Phantom_Hoover → sleep 23:10:39 -!- Phantom_Hoover has quit (Quit: Leaving). 23:10:59 I like how pretty much every freelance copywriter says "lol I have 120 WPM" 23:11:08 it's like, the standard lie. 23:11:27 well, who knows maybe every freelance copywriter ever has the exact same typing speed. 23:12:24 ais523: the context of all of this weirdness is that I'm writing code to dynamically load plugins for an IRC bot. 23:12:36 well, it's done now. may need a few tweaks in the future though. 23:13:16 actually the dynamically loading part has been long done. this was specifically for calling subroutines within dynamically loaded plugins. 23:13:20 I should learn how ghc-api works 23:13:53 kallisti: why not just use Module::Pluggable or the like? 23:13:58 (I forget exactly what it's called) 23:14:07 ... because I didn't know it existed. :P 23:14:17 kallisti: you assumed a piece of Perl code didn't exist on CPAN? 23:14:20 are you /stupid/? 23:14:51 Haskell's don't is inspired by a module on CPAN, right? 23:15:15 yes, Acme::Don::t 23:16:27 heh 23:16:32 Acme::Don't should work as well 23:17:46 Acme'Don't, too. 23:19:15 ais523: well, I've already written the code now so... :P 23:19:25 ONE LESS DEPENDENCY, YEAAAH 23:19:55 also it was a learning experience, etc, other things to ensure myself that the effort wasn't a waste. 23:19:59 elliott: does Haskell's don't work by somehow redefining '? 23:20:05 ais523: x' 23:20:05 or in some entirely unrelated way? 23:20:13 also, does it do do-notation? 23:20:15 ais523: (translation: are you expecting ' to be invalid in identifiers?) 23:20:15 ais523, ' is valid in identifiers 23:20:26 elliott: ah, right, forgot 23:20:27 http://hackage.haskell.org/packages/archive/acme-dont/1.1/doc/html/Acme-Dont.html 23:20:32 Oh, it's just a function, there's no special don't notation 23:20:39 Sgeo: "don't do" 23:20:41 don't $ do { blah} 23:20:42 what's hard to understand about that? 23:20:59 elliott, nothing, except I thought maybe ais523 was expecting don't blocks 23:21:55 ais523: I'm kind of mystified by how Pluggable works. 23:22:12 ais523: it magically gives you a plugins method? 23:22:12 so am I, to be fair 23:22:15 don't do doesn't work, right? 23:22:19 I've never tried to use it 23:22:36 I think I tried passing in a do block to something once without $ and it didn't work 23:22:38 I might be misremembering 23:23:14 Sgeo: no, it doesn't 23:23:16 you know how easy this argument is to resolve, right? 23:23:39 We were arguing? Although admittedly, it's two seconds to check 23:23:42 :t const do { interact id } 23:23:43 parse error on input `do' 23:23:54 > id do { return "Hi" } 23:23:54 : parse error on input `do' 23:23:59 > id $ do { return "Hi" } 23:24:00 No instance for (GHC.Show.Show (m [GHC.Types.Char])) 23:24:00 arising from a use ... 23:24:00 :t const $ do { interact id } 23:24:01 forall b. b -> IO () 23:24:01 ais523: also do fun with caller that might be difficult to reimplement with Pluggable 23:24:03 ... 23:24:07 UPDATE 23:24:09 so apparently the $ is required 23:24:25 ais523: for example, the command subroutine, which registers new commands, uses caller to associate modules with each command, so that when a plugin is unloaded the commands are unregistered. 23:24:29 ais523: Sgeo: no, it doesn't 23:24:34 it wasn't an argument, I was providing the answer 23:24:35 elliott: oh, something I was thinking about; do you consider "let main = interact f" unsafe? 23:24:45 ais523: it's very unsafe, since it's invalid syntaxc 23:24:47 *syntax 23:24:53 elliott: err, correcting for me not remembering Haskell 23:24:56 for any safe f? 23:25:00 ais523: it's exactly as unsafe as getContents 23:25:08 ais523: same with "filter" which is like command except that it uses an arbitrary regex instead of a command word (commands are implemented with filter) 23:25:11 I don't think it's pure, personally 23:25:17 "safe" is too much of a value judgement for me to want to comment 23:25:26 but lazy IO has well-known subtle-but-deadly performance problems 23:25:28 elliott: right; you'd called unsafeInterleaveIO unsafe earlier 23:25:40 it's very easy to force too much, and space leaks are practically unavoidable. 23:25:41 so I assumed you had some definition of "safe" in mind, and wanted to get at it 23:25:51 ais523: well, anything starting with unsafe is unsafe :) 23:26:01 elliott: I was going to put "unsafe" into the name of <<= 23:26:13 x unsafe<<= y 23:26:14 > let unsafeId = id in unsafeId 23:26:14 Overlapping instances for GHC.Show.Show (a -> a) 23:26:15 arising from a use of `... 23:26:18 > let unsafeId = id in unsafeId 2 23:26:19 2 23:26:22 elliott: unless kallisti defines it. ;) 23:26:28 but decided not to, as the way it's going all Feather's predefined operations seem to be made entirely out of punctuation marks 23:26:33 I may make an effort to change that 23:27:35 Laziness even without IO also has space leaks. My understanding is that it's generally handwaved away since it's easy to make those cases stricter. But why not the same with lazy IO? 23:30:09 ais523: another thing I do that I'm not sure Pluggable does is I change the current working directory to the plugin directory. 23:30:20 and then change it back. 23:30:32 I doubt it does that, mostly because it doesn't strike me as being a good idea 23:30:42 Sgeo: your comparison is mistaken 23:31:01 sure it is. the plugins can refer to their files without having to worry about paths. 23:32:21 kallisti: that's ridiculous 23:32:29 normal scripts and modules can't do that, why should plugins? 23:32:39 you should provide scripts a way to get at a filesystem storage, instead 23:32:53 probably by passing them a path somehow 23:32:59 *provide plugins 23:33:06 -!- cheater has quit (Ping timeout: 252 seconds). 23:33:44 elliott: normal scripts can't do what exactly? worry? 23:33:50 Sgeo: for one thing, lazy IO's unpredictability has real effects 23:33:58 -!- derdon has quit (Remote host closed the connection). 23:34:01 plugins should because not worrying about things is better than worrying about things. 23:34:04 Sgeo: for instance, if you writeFile something, there's no guarantee it will ever be closed (!) 23:34:09 kallisti: can't assume they're run in a certain directory 23:35:10 Sgeo: there is basically no way to make lazy IO work. the same is not at all true of lazy evaluation 23:38:08 elliott: they can't? they can usually know exactly where they're being run from. 23:38:25 I don't think I understand. 23:38:39 ais523: please tell kallisti that perl programs don't usually change directory to the directory they're in 23:38:56 why wouldn't they? 23:38:59 what's the drawback? 23:39:05 kallisti: user-specified files will make no sense 23:39:13 without knowing what directory they're specified relative to 23:39:17 that's a pretty common use-case 23:39:20 why wouldn't they? 23:39:24 if they do, they have to do it themselves 23:39:27 the perl interpreter doesn't do it for them 23:39:30 because that's a terrible idea 23:39:33 similarly with your bot 23:39:37 in this case user's don't specify filepath inputs, so it's not an issue. 23:39:53 -!- cheater has joined. 23:40:28 kallisti: also, you're ensuring that state can never be decoupled from implementation, filesystem-wise 23:40:30 which is, you know, stupid 23:41:51 I'm ensuring that every plugin runs in its own bubble and doesn't have to worry about where its state is.. 23:42:14 kallisti: most obviously: what if the plugin isn't in a writable directory? 23:42:18 kallisti: why do plugins have to store their own state, anyway? 23:42:28 you should just let give them a persistence handle 23:42:30 what if two people want to use the same plugin? do they have to copy/symlink it? 23:42:36 which probably looks like a tied dictionary of some kind 23:42:46 elliott: this is Perl, you can say "hash" 23:42:51 elliott: that's not a bad idea. 23:43:03 it's a hell of a lot of a better idea than changing directory every time you invoke a plugin 23:43:13 ais523: I'm not a filthy commoner! 23:43:21 elliott: it works pretty well right now actually. :P 23:43:39 also, -30 in 0.28{3 recurring} :( 23:43:42 still plugins may have state associated with them that they'd like to transfer between bots. 23:43:46 for example, a quote database. 23:44:04 though I agree the persistent hash is a good idea. 23:44:09 kallisti: why does the tied hash solution not permit that? actually, it should just be a tied object 23:44:10 I might end up doing that for some things. 23:44:15 in fact, why not just persist the plugin object itself? 23:44:24 push @self->quotes, whatever, I don't know perl; 23:44:31 $self->karma{$user}++; 23:44:32 etc. 23:44:37 elliott: "object"? 23:44:47 I was presuming plugins are objects. 23:44:51 nope. 23:45:00 I implement things horribly. 23:45:12 I'm not going to explain any further because you'll hate it. 23:45:17 Why not? This is Perl, you have very few tenable options for abstraction and you ignore the most popular one? 23:45:22 elliott: we persist plugins in TAEB; it leads to some interesting problems sometimes 23:45:32 although I found a nice OO way to solve them, which is also rather complicated 23:45:37 kallisti: I probably will. Use the module ais523 told you about or I'll be nasty if you ask future questions pertaining to the code :) 23:45:48 ais523: You know what wouldn't be a problem in @? 23:45:49 elliott: I was going to put "unsafe" into the name of <<= <-- call it <<=!!! or something 23:45:52 elliott: I use regular hashes and hashrefs instead of objects for things that are very very simple and don't require all the OO boilerplate. 23:45:52 it involves custom serializer hooks 23:46:02 elliott: well, the problem is that various things need to /not/ be persisted 23:46:09 kallisti: Man... it has state... and behaviour... and the state doesn't matter to things outside it... 23:46:15 And it implements a common interface... 23:46:17 (the reason being because they're full of literal pointers-converted-to-integers, which obviously couldn't happen in @) 23:46:19 And this is a language where OOP is the common practice... 23:46:21 elliott: yes but it's not a perl object. 23:46:22 NOPE, BOILERPLATE 23:46:28 Despite that being the *definition of an object*. 23:46:29 /w/in 52 23:46:44 ais523: sure it could, if you ran nethack in a VM 23:46:55 elliott: you mean TAEB? 23:46:57 elliott: I don't actually like perl OO. sorry. 23:47:02 ais523: no, TAEB would control the nethack VM 23:47:07 kallisti: use one of the alternate object systems 23:47:14 elliott: but the literal pointers are to stuff inside TAEB 23:47:29 ais523: wait, what? 23:47:35 I assumed they were pointers into nethack memory 23:47:48 elliott: no, how can it possibly work /that/ out over telnet? 23:47:57 ais523: it's TAEB! I just assume it's insane 23:48:09 it's because it needs to use objects as hash keys 23:48:23 ais523: oh. well you can do that in @ no problem, naturally 23:48:30 yep, it's a Perl problem more than anything else 23:48:37 of course, the objects have to be immutable. 23:48:47 though you _could_ write a dictionary with mutable keys 23:48:50 it'd just be not very useful 23:49:08 elliott: well, in this case, the objects /are/ mutable but the hash lookup is based on sharing 23:49:16 as in, it's not the value of the object that matters, but the name 23:49:21 (in the CS meaning of "name") 23:49:41 ais523: right, you'd handle that just by overriding how they're hashed and compared for equality with an interning type or whatever 23:49:42 ais523: what are the objects, exactly? 23:49:43 elliott: I still think changing the working directory makes sense in this context. 23:49:54 kallisti: well, it's not the first thing you've been wrong about. 23:49:54 elliott: all sorts of things; things like tiles, items, etc 23:50:06 ais523: right 23:50:08 ais523: why are they mutable? 23:50:14 we could convert the tiles to coordinates, but that would require something like four property lookups for every hash lookup 23:50:23 and because a tile object stores the known information about the tile 23:50:30 > let x <<=☠ y = "test" in 2 <<=☠ 4 23:50:31 "test" 23:51:07 ais523: OK, so the problem is that you're mixing what you /know/ about something with the thing itself 23:51:17 elliott: yes, or rather the TAEB framework is doing that 23:51:31 so I had to work around the problem when writing an AI for it 23:51:33 ais523: "you"/"we" are perfectly valid terms for codebase 23:51:33 s 23:51:45 ais523: my suggestion is to not do that :) 23:51:52 elliott: yes, but "you" directed at me when referring to a codebase that I didn't write is confusing 23:51:59 well, OK 23:52:10 I assume you'd made a fair amount of changes to TAEB itself 23:52:12 *assumed 23:52:17 also, I don't see how mutability matters there; immutable objects would have exactly the same problem 23:52:25 elliott: yes, indeed, but I can't make huge breaking changes to every part of the API 23:52:36 fair enough 23:53:00 see, @ is great, because you'd give up before manging to implement the wrong way to do things :) 23:53:14 also, I don't see how mutability matters there; immutable objects would have exactly the same problem 23:53:19 because you're misusing keys 23:53:22 elliott: in Perl, I mean 23:53:24 your real key is whatever the name of the object is 23:53:27 but you're using the object itself 23:53:36 where by "name", I mean anything equivalent to the name 23:53:40 so, whatever you're interning on, basically 23:53:41 elliott: well, I'm using the name of the object as keys 23:53:47 ais523: erm, what I mean is 23:53:48 that's what I am doing, using refaddr obj as the key 23:53:52 you're /trying/ to use the object as a key 23:53:58 and that's your workaround for not being allowed to 23:54:27 elliott: no, I'm trying to use the object's coordinates as a key, I guess 23:54:37 or, hmm, a unique ID referring to the object 23:54:46 such as a name. 23:54:52 ais523: the problem is that you're too baffled by the design for me to explain why it's a bad idea :) 23:54:59 ais523: how do you intern, say, items? 23:55:06 what key do you use for the intern table? 23:55:15 I use refaddr as the key, always 23:55:17 even though it doesn't persist 23:55:24 because good luck persisting general pointers 23:55:39 ais523: you're confused 23:55:49 ais523: you can't intern an object with the key being the address 23:55:55 that's a good way to get an intern table of exactly one entry 23:56:05 what does "intern" mean here? 23:56:21 ais523: I'm currently trying to bring my team up high enough to fight the revamped Elite Four. Are there any training tips I'm missing? 23:56:27 oh, hmm, you don't actually do interning 23:56:33 ais523: elliott: well, in this case, the objects /are/ mutable but the hash lookup is based on sharing 23:56:42 coppro: there are some daily level 70 fights which are quite good 23:56:43 ais523: either you don't understand what sharing is, or I don't know what you're talking about 23:56:53 also, the daily fights in Big Stadium / Small Court are scaling 23:57:02 elliott: I'm having trouble expressing myself, which is quite common 23:57:14 coppro: also, remember to use the Lucky Egg (I think you get one without having to farm it in Black/White) 23:57:16 ais523: OK, let me rework this 23:57:31 you can also use Entralink Pass Powers, but it's probably not worth the effort/setup unless you happen to have some spare 23:57:36 ais523: when you use the (address of) a tile as a hash key, what is the semantic key you are trying to use? 23:57:37 ais523: oh, I thought they were fixed. I am using those. You do get one without having to farm but it's sort of unreliable since I can'trely on a single 'mon 23:57:42 the location, right? 23:57:44 i.e. coordinates 23:57:49 coppro: you farm one 'mon at a time 23:58:00 'mon? seriously? 23:58:01 ais523: I can't rely on one 'mon to fight though 23:58:07 cut that out, both of you 23:58:09 that's ridiculous 23:58:17 elliott: yes, with the caveat that the coordinates might not actually be known 23:58:22 elliott: it's common competitive abbreviation 23:58:25 ais523: s/yes.*/no/ 23:58:26 in fact, they often leave out the apostrophe 23:58:31 ais523: what is the key if the location isn't known? 23:58:35 also what daily level 70 fights? My 'ns could really use those 23:58:38 you're unable to tell me what you're actually keying on, semantically 23:58:43 which is very worrying 23:58:44 elliott: we're keying on (x, y, level) 23:58:48 because it means you don't know what your program means 23:58:55 ais523: no you're not, you said those aren't always known 23:59:01 elliott: the level /object/ is known 23:59:03 but its location isn't 23:59:14 there's a mutable level object that represents the level 23:59:17 ais523: OK, and what does the level mean? 23:59:21 is it basically just an enum? 23:59:38 or something like MainDungeon Int | ... 23:59:39 or whatever 23:59:46 if mutating the level one tile belongs to mutates the level another tile belongs to, they're on the same level 23:59:55 and you can, from a level object, get all tiles on that level 2011-12-16: 00:00:08 * elliott gives up 00:01:27 elliott: the reason I'm describing this semantically is that the key is not well-founded 00:01:44 let's see… I suppose the way it works in practice is that the key is (x, y, unique identifier for level) 00:01:47 you're doing the opposite of describing it semantically; you're unable to tell me what the semantics are 00:01:56 awww yeah backup time. 00:02:02 where the unique identifier is currently the level's refaddr, but semantically could be anything that uniquely identifies the level 00:02:03 zooooooooom rsync spam. 00:02:16 my particular blend of zealotry tells me that you, therefore, have no idea what your program does or is meant to do, and you should just type random keys instead 00:02:30 ais523: you haven't been able to tell me what a level is, though 00:02:38 if it's not identified by a location, how do you know what makes any given level not another level? 00:02:43 how is it done? 00:02:48 elliott: badly 00:02:50 where do level objects come from? how are they created? 00:03:03 basically, TAEB always knows whether or not it's on the same level as it was last step 00:03:11 if it isn't, it checks all the existing level objects to see if it matches what it sees 00:03:19 and if it doesn't, creates a new level object and assigns all the tiles it can see to that one 00:03:53 ais523: OK, then the closest semantics I can think of a level for a hash key is the number it was created in 00:03:58 as in, first level created is 0, second is 1, ... 00:04:02 you'll notice that this is terrible 00:04:07 that's because your program is terrible :) 00:04:21 elliott: as I said, "unique identifier for level" 00:04:35 it takes a special kind of program to bake in how its imperative semantics run to the /behaviour/ 00:04:38 although I suppose most programs do that :( 00:05:07 elliott: it's not imperative semantics, really 00:05:19 or can't "arbitrary identifier for X" be used in functional programs ever? 00:06:14 ais523: it is, because it's based on the order things are executed 00:06:17 basically, TAEB always knows whether or not it's on the same level as it was last step 00:06:17 if it isn't, it checks all the existing level objects to see if it matches what it sees 00:06:17 and if it doesn't, creates a new level object and assigns all the tiles it can see to that one 00:06:30 the only thing involved here is time, basically 00:06:43 elliott: I mean NetHack game step 00:06:47 yes 00:06:53 imperative programs don't care if their time is real time... 00:06:54 it's about sequencing 00:06:56 however, I can think of a better way to model it that behaves the same /way/ 00:07:08 elliott: what TAEB can detect is whether the level has changed or not 00:07:16 you're basically keying on the /equivalence class/ of "close enough to X" 00:07:19 where X is a tile pattern 00:07:26 ("if it matches what it sees") 00:07:29 -!- Vorpal has quit (Ping timeout: 240 seconds). 00:07:54 so your keys are just taking the setoid of maps (= 2D ASCII pictures) with the relation being however it defines "close enough" 00:07:57 Q.E.Z. 00:08:01 elliott: well, if a command it sends to the game leaves the level unchanged, it knows; likewise, if it changes it, it knows 00:08:30 but it can't compare two views from different times to see if they're the same level (it has many ways to rule it out, but no way to prove it for certain) 00:08:32 ais523: what you're saying doesn't make any sense at all, so I'm assuming you just didn't notice me swerving at some point 00:09:05 mmmm organic compounds. 00:09:14 elliott: I don't see why it makes no sense 00:09:21 oh, they're probably true statements 00:09:22 if you like, we're trying to key on insufficient data 00:09:32 but you seem to be implying that they're relevant responses to things I've recently said 00:09:47 I'm saying that 00:09:51 elliott: I'm trying to say you're wrong about what my keys are 00:09:56 (a) the semantics you've described are terrible, 00:10:07 (b) but there's a reasonable way to express them without changing behaviour or relying on imperative sequencing 00:10:23 elliott: it's not relying on imperative sequencing 00:10:30 ais523: unfortunately what I said was completely true; i.e. you could replace the keys in your program with the keys I mentioned and TAEB would work identically 00:10:33 because the information it gets from the game has timestamps 00:10:40 ais523: you don't understand what imperative means 00:10:53 it is fundamentally based on order of operations, not declarative semantics, Q.E.Z. 00:11:08 elliott: are you under the impression that I'm saying that the way TAEB does levels is fundamentally impossible to express in a functional language? 00:11:14 because I'm not trying to argue that at all 00:11:14 (b) but there's a reasonable way to express them without changing behaviour or relying on imperative sequencing 00:11:20 obviously not, because I just told you the real semantics 00:11:34 elliott: what exactly are you taking issue with? 00:11:37 or are you agreeing with me? 00:11:38 i.e. the semantics you want and /really mean/, not how you reverse engineer them from the actual behaviour 00:12:02 ais523: I'm disagreeing that your description of the semantics is reasonable, and I'm disagreeing with any implicit statement that TAEB's way of doing this is at all reasonable and that it isn't completely structurally unsound 00:12:45 but mostly I consider my point proven, since you've had to resort to mentally simulating the software to figure out what it means :) 00:13:24 elliott: OK, the semantics I want is to key on x-coordinate, y-coordinate, and which level the tile is belongs to; but we don't know what level the tile belongs to 00:13:51 that's impossible, so it's not semantics 00:14:37 you're basically keying on the /equivalence class/ of "close enough to X" 00:14:37 where X is a tile pattern 00:14:37 ("if it matches what it sees") 00:14:37 so your keys are just taking the setoid of maps (= 2D ASCII pictures) with the relation being however it defines "close enough" 00:14:37 Q.E.Z. 00:14:47 that's the best description of the semantics you /have/ 00:14:53 elliott: I agree that the semantics I want are impossible 00:14:55 whether it's what you want depends on how much you like your level-matching algorithm 00:15:14 and it's the best we have; the level-matching algorithm could do with improvement, really 00:15:30 it works well mostly, but goes haywire if it gets half a level due to lag 00:15:31 well, to clarify: 00:15:35 whether it's what you want depends on how much you like the very idea of the level-matching algorithm 00:16:17 elliott: anyway, you're missing an important point; we can match the maps either on physical appearance, or on knowledge that two maps are the same because they were on consecutive steps without a level change 00:16:20 ais523: to unpack what I'm saying into something more like conventional programmerspeak, I'm saying that you want to want to form a new type that's identical to 2D level maps, except that all maps that match are considered equal 00:17:00 so what we're actually doing is taking equivalence classes on (map, timestamp) pairs by quotienting them on a "look similar or have consecutive timestamps without a change" equivalence relation 00:17:12 (in other words, I didn't need the unpacking…) 00:17:19 (that's not what the problem was) 00:17:24 ais523: I didn't expect you needed the unpacking 00:17:28 ais523: I was just relating it pack to hash tables 00:17:34 *back 00:17:42 ah, I see 00:17:54 actually, what I was really doing is just trying to restate it, but it happened that I ended up restating it in a more dumbed-down fashion, so I added that to the front :) 00:17:55 elliott: anyway, the main reason these are refaddrs is so that they can be calculated quickly 00:18:00 ais523: right 00:18:07 ais523: well, in case it isn't clear, I think TAEB's design is terrible :) 00:18:58 ais523: but if you designed it in @, it'd probably be perfect. 00:19:20 elliott: how would you solve the problem, incidentally? 00:19:27 you don't need to use the same semantics as TAEB 00:20:09 ais523: well, if you're asking "how would I, when presented with this problem in practice, solve it", the answer would probably be to complain on #esoteric about how terrible TAEB is, and then rethink everything about the entire problem of playing nethack from scratch 00:20:25 elliott: anyway, there's a situation where this approach leads to huge measurable problems in TAEB 00:20:32 but on a smaller scale, I'd probably try and figure out whether you can precisely determine level 00:20:37 rather than just relying on heuristics 00:20:39 by logging more about what happens 00:20:42 which is that it has trouble working out when two items are the same 00:20:45 and even more so, of monsters 00:20:51 elliott: imagine you have a finite amount of time to live. Now imagine that what you're doing right now prevents you from doing other things in the sum of all events in your life. 00:20:58 elliott: what would you rather be doing right now? 00:21:11 I'm sure elliott enjoys talking on IRC 00:21:12 kallisti: "Imagine" I have a finite amount of time to live? 00:21:19 That seems fairly likely to me. 00:21:24 It's not terribly difficult to imagine. 00:21:44 that's promising. 00:21:53 "Now imagine that what you're doing right now prevents you from doing other things in the sum of all events in your life." ;; is this not equivalent to "Now imagine that what you're doing now is not doing other things." 00:22:17 -!- pikhq has joined. 00:22:34 anyway, my answer is nothing, because I'm feeling fairly lazy, it's after midnight, and it's winter 00:22:41 elliott: sure, it still interferes with the sequencing and duration of events. 00:22:49 so there's not really a huge amount of things to do. 00:22:54 now why are you asking? 00:23:06 I don't really have a reason. 00:23:13 what would _you_ rather be doing? 00:23:24 ais523: I'm about to do something nobody has ever done before in the history of prorgamming 00:23:27 skydiving in a wingsuit. 00:23:38 elliott: has anyone attempted before? 00:23:43 kallisti: why aren't you doing it? 00:23:46 ais523: nobody's even considered it! 00:23:52 OK 00:24:07 elliott: no it's my point, you're not allowed to steal it! 00:24:16 kallisti: so what is your point, exactly? 00:24:26 if you think talking about IRC on programming is pointless, 00:24:28 * elliott holds up mirror 00:24:30 elliott: that this conversation is silly. :P 00:24:37 good, don't participate in it 00:24:40 hmm, I prefer elliott's subject 00:24:41 elliott: go on 00:24:57 ais523: I'm going to grep for every occurrence of TODO|FIXME in a codebase, and /actually fix them/. 00:25:01 SORRY IF YOU EXPECTED IT TO BE EXCITING 00:25:10 elliott: haha 00:25:21 that is actually pretty exciting, also insightful 00:25:27 I'm sure I've at least considered it, before now 00:25:54 -!- pikhq_ has quit (Ping timeout: 248 seconds). 00:26:52 $ egrep -r 'TODO|FIXME' *.c *.h | wc -l 00:26:52 26 00:27:02 oh, that's a pleasant surprise 00:27:06 considering I write about fifty per day 00:28:16 ais523: anyway, why can't you decide levels exactly in TAEB? 00:28:41 I can't think of any situation in NetHack where you would (a) end up on an unknown level and (b) not be able to determine it exactly, through e.g. the level name/identifier/whatever you call it or otherwise. 00:28:50 elliott: suppose you go down a set of stairs on Dungones:2; you could arrive on Mines:3 or Dungeons:3 00:29:00 and the view could look exactly the same for each 00:29:19 ais523: OK, but you still known the dlvl number, right? 00:29:21 (in particular, you could be in a dark area with no adjacent walls in either) 00:29:24 yep, you know the numbre 00:29:26 *Dungeons 00:29:29 just not the branch 00:29:34 ais523: why not just key on that? 00:29:36 checking number is one of the most obvious things the level comparer does 00:29:44 elliott: because then you'd get mines:3 and dungeons:3 muddled? 00:29:48 "what branch it's in" is just another piece of information you haven't yet found out 00:29:54 ais523: oh, right 00:30:08 ais523: well, hmm 00:30:26 ais523: I know what I'd do; I'd store tile information in a tree 00:30:36 ais523: mines:3 and dungeons:3 would be distinguished by the path in the tree to get there, which would be spatial 00:30:46 they'd just both be on level 3, that's all 00:30:59 that is, I'd store tile information inside level information 00:31:02 elliott: except that you can /also/ fall through a trapdoor on dungeons:1, and land on dungeons:3 00:31:11 (well, possibly not with those exact numbers, but translated downwards) 00:31:17 ais523: OK, and? 00:31:25 now, how do you know if you're on the level reached via set-of-stairs 1, or the level reached by set-of-stairs 2? 00:31:33 ais523: *dungeons:3/mines:3, then 00:31:45 (presumably) 00:31:49 what I mean is, "path to get there" isn't always known 00:31:57 ais523: well, sure it is 00:32:01 it's just a graph instead of a tree 00:32:03 there's two paths 00:32:18 elliott: OK, I'll buy that; but it's a graph where you don't know if two edges lead to the same vertex or not 00:32:21 so it's not a /known/ graph 00:32:34 ais523: OK, what do you think of this: "current level" should be stored separately to "known levels" 00:32:45 and it should only become "tied" to a known level if you can decide for /sure/ that it's a known level 00:32:51 most of the time, you can do that immediately 00:33:02 e.g., you went down some downstairs in a non-forking place 00:33:12 which would be one kind of proof 00:33:17 yep 00:33:24 one kind of proof that TAEB currently doesn't use, interestingly 00:33:26 that /is/ based on time, but it's not in the model 00:33:35 it's something you /give/ to the model 00:34:03 ais523: so, the worst-case is, you fall down a trapdoor to a previously seen level, and never prove it's one or the other branch 00:34:18 ais523: but as soon as you go up the upstairs, you'll be in an unambiguous location again 00:34:22 because there's only one dlvl 2, or whatever 00:34:42 ais523: or if you go down, and find minetown, you know all the levels on the way were in the mines 00:34:47 elliott: how would the API for this information look to the AI? 00:35:30 ais523: well, beats me, I'm thinking in terms of @, which basically involves pretending the world is as declarative as possible and you have infinite powers of abstraction available to you 00:35:32 let me think... 00:35:58 also, how does an AI do "route to "? 00:37:40 one sec 00:38:30 -- Path is a tree path (forget the graph) with the "canonical path" 00:38:30 -- to a level, i.e. "through stairs" most of the time 00:38:30 getKnownLevel :: Path -> M Level 00:38:30 getCurrentLevel :: M Level 00:38:30 unifyLevel :: Level -> Unification -> M () 00:38:31 -- Unification basically proves that a level is the level at 00:38:33 -- a certain path; its exact definition would depend on all 00:38:35 -- the ways you can prove a level is another, which is basically 00:38:37 -- an AI issue. There is almost certainly a more general definition 00:38:39 -- that lets you implement such ways decoupled from the definition 00:38:41 -- of the actual data-type, but I'm not being paid enough to try 00:38:43 -- and think of it. 00:38:51 ais523: and the usual way, assuming you the current level is known 00:39:05 ais523: but you can have paths from unknown levels to known ones 00:39:14 ais523: if you're on dlvl 3, and dlvl 2 is unambiguous (i.e. there is only one), and there's an upstairs... 00:39:35 heh at that comment 00:39:52 and presumably, if you're on dlvl 3 and don't know where the stairs to dlvl 2 are, you tell the AI "that's your problem" 00:39:59 yep :) 00:40:17 ais523: just like if you're on dlvl 1 and can't see anything and want to get to the amulet 00:40:31 indeed 00:40:46 nbt.c:char old[3] = { data[-3], data[-2], data[-1] }; /* TODO this is horrible, HORRIBLE */ 00:40:46 I have to go home, anyway 00:40:47 oh dear 00:40:50 bye everyone 00:40:54 ais523: bye 00:40:55 -!- ais523 has quit (Remote host closed the connection). 00:41:06 wait, at /twenty to one/? 00:41:47 kallisti: so what's the vastly-better conversation you would have rather had? 00:42:21 there isn't one. 00:42:43 great! 00:42:45 so silence then? 00:47:58 -!- kmc has quit (Quit: Leaving). 00:50:32 ^def test ul (::SSS) 00:50:32 Defined. 00:50:43 ^test (hm? )~^ 00:50:48 bah 00:51:26 ^test (hm? )S 00:53:08 oerjan: wat 00:53:58 trying to see if ^def ... ul ... does anything useful with added input 00:54:46 ^def test ul ^ 00:54:47 Defined. 00:54:55 oerjan: it doesn't 00:54:57 ^test ((hm...)S) 00:54:57 ...out of stack! 00:55:02 to my knowledge. 00:55:06 :( 00:55:10 ^def test ul S 00:55:10 Defined. 00:55:15 ^test (easy way to find out) 00:55:15 ...out of stack! 00:59:23 ^def test ul (You fail!)S 00:59:23 Defined. 00:59:37 * oerjan whistles innocently 01:00:09 * kallisti considers using Persistent::Hash for his IRC bot 01:00:17 I notice there's no Persistent::List though. 01:00:27 I'd want one of those too, preferably 01:00:50 is there a Persistent::Nuisance? 01:01:05 don't think so. 01:01:05 kallisti: um 01:01:10 kallisti: can't you just use Dumper 01:01:12 + tie 01:01:18 elliott: that's what I currently do minus the tie. 01:01:18 wait not dumper 01:01:20 what's the binary form 01:01:28 um... 01:01:29 Storable 01:01:38 hey look, it even does tying for you 01:01:42 http://perldoc.perl.org/Storable.html#NAME 01:01:43 use that. 01:02:17 good choice. 01:02:27 I keep forgetting about all of these modules 01:02:29 that like... 01:02:30 do things 01:02:33 that I want. 01:03:15 * kallisti thinks 'use' should just automatically install things from CPAN. :P 01:03:39 Yes, it should. 01:03:48 (This is a sincere statement.) 01:03:53 (yes no doubt) 01:04:22 (No, it actually is.) 01:04:37 I could see some issues with it, but otherwise it would be very convenient. 01:04:56 particularly does it also /update/ old packages? because that could break things very easily. 01:05:17 There's the security issue, but that's mitigated by proper sandboxing e.g. in a capability language, and mitigated further by a tests/rating/review system which CPAN already has. 01:05:43 also possible security issues if a maintainer decides he wants his package to suddenly become a virus or something. :P 01:05:44 kallisti: I don't see why it would. 01:05:52 also possible security issues if a maintainer decides he wants his package to suddenly become a virus or something. :P 01:05:53 There's the security issue, but that's mitigated by proper sandboxing e.g. in a capability language, and mitigated further by a tests/rating/review system which CPAN already has. 01:06:02 It's a serious concern; without solving that it shouldn't be implemented. 01:06:07 And Unix isn't a very tenable platform to solve it on,. 01:06:09 *. 01:06:49 I presume C@AN will have these features. 01:07:12 Crap @ Asshole Naptime. 01:07:21 The best name for a package source, I can assure you. 01:07:54 hey look Storable isn't even a dependency because it's standard. 01:08:08 The proper sandboxing would be inherent in @. 01:08:25 don't i vaguely recall someone mentioning there is a package in CPAN for making use install from CPAN 01:08:50 You can use FreezeThaw instead if you want to introduce a non-core dependency. 01:09:02 oerjan: that sounds familiar 01:09:20 fizzie: benefits? 01:10:11 I'm not entirely sure how you could hack use to do that though... 01:10:23 Source filter, @INC hacking. 01:10:24 ah wait I know. 01:10:26 yes 01:10:28 @INC hacking. 01:10:28 Unknown command, try @list 01:10:28 Which? 01:10:30 Right. 01:10:40 http://search.cpan.org/~jjore/Acme-Anything-0.04/lib/Acme/Anything.pm does similar things. 01:10:46 push @main::INC, \ &handler_of_last_resort; 01:10:46 sub handler_of_last_resort { 01:10:46 my $fake_source_code = '1'; 01:10:46 open my ($fh), '<', \ $fake_source_code; 01:10:46 return $fh; 01:10:47 }; 01:10:58 that rings a bell 01:12:00 That's not it, though. 01:12:09 * elliott is just going through every single Acme module. 01:12:11 To find it. 01:12:23 None that I know of. Well, it's pure-Perl as opposed to Storable's C. I guess it might not break regex objects like Storable, though not sure about that. 01:12:27 oerjan: http://search.cpan.org/~adamk/Acme-Everything-1.01/lib/Acme/Everything.pm 01:12:52 That's close. 01:12:57 kallisti: ^ 01:13:37 ah that must be it 01:13:48 doing BEGIN { eval { require(Module); Module->import(LIST)} warn $@ if $@; } is much more sensible than that handler_of_last_resort thing. 01:14:04 fizzie: "pure perl" such a benefit. 01:14:34 Well uh maybe your religion prohibits C code in Perl modules? 01:14:37 fizzie: ALSO WE WANT ^def ... ul ... TO CONCATENATE COMMAND ARGUMENTS TO THE COMMAND, OKTHXBYE 01:14:38 doing BEGIN { eval { require(Module); Module->import(LIST)} warn $@ if $@; } is much more sensible than that handler_of_last_resort thing. 01:14:42 um that doesn't load from cpan. 01:14:48 oerjan: i really don't think we do 01:14:50 elliott: correct 01:14:54 that's a rather bad implementation of underload io 01:14:55 neither does handler_of_last_resort does it? 01:14:59 kallisti: oh 01:15:03 I was talking about Acme::Everything 01:15:07 yes I know. 01:15:13 I AM NOT ALWAYS TALKING ABOUT THE SAME THING YOU ARE. 01:15:18 doing BEGIN { eval { require(Module); Module->import(LIST)} warn $@ if $@; } is much more sensible than that handler_of_last_resort thing. 01:15:23 kallisti: that's why it's an Acme module... 01:15:38 elliott: but it's the only thing which doesn't require an ad-hoc input encoding :( 01:15:44 * kallisti is tempted to use Acme::Everything 01:15:52 oerjan: well... 01:15:59 oerjan: I think ^ul input was talked about, but there were some Opinions on what sort of smunglings it should encode the input in. 01:16:05 oerjan: surely just pushing the argument as the first element on the stack would be better than /that/ 01:16:06 With one 'use' line, you effectively load all 20,000,000 odd lines of code in CPAN. 01:16:09 oh god. 01:16:24 kallisti: it's lazy though :P 01:16:28 oh okay. 01:16:30 whew. 01:16:32 but it shouldn't be!!! 01:16:35 I AGREE 01:16:42 elliott: um ok. i guess that's more general. 01:17:11 oerjan: well what would yours do exactly 01:17:35 elliott: it would be nice if it didn't have any restrictions. 01:17:47 elliott: I could just put use Acme::Everything; in my source, run it once, and then remove the line. 01:17:54 instead of manually installing packages. :P 01:18:05 kallisti: with Acme::Everything you don't need the use statement, though 01:18:17 yes but it has to be a method call. 01:18:36 well i mean you couldn't just remove the use staetment 01:19:14 oh it doesn't actually install anything. 01:19:24 ... 01:19:24 Well uh maybe your religion prohibits C code in Perl modules? <-- well i recall jewish rules forbid mixing different cloth fabrics, so why not... 01:19:33 kallisti: no, it's just that you don't need "use" statements to use modules with it 01:19:38 http://www.stationv3.com/d/20111214.html 01:19:38 and use is normally required to use perl modules, no? 01:19:59 elliott: yes. that's not what I'm talking about though. 01:20:05 hi 01:21:17 oerjan: That's a Christian rule. 01:21:20 elliott: well i considered actually running the input (preferrably first), but putting it on the stack is more flexible as long as you can still use ^ on it 01:21:25 "In other words, if you use Acme as the base, your class will be the summit." 01:21:27 * kallisti facepalms 01:21:37 Well, I mean, it's Judeochristian rule. 01:21:42 oerjan: *preferably 01:21:53 Since it's from the small part of Jewish orthodoxy that made it into the Old Testament. 01:22:02 oerjan: anyway I guess that works, but it seems weird compared to just pushing it 01:22:06 Gregor: you know perfectly well christians don't follow all the old testament rules 01:22:10 oerjan: otoh that lets you push multiple stack elements. but i think that's actually a _bad_ idea 01:22:18 as no program can process a variable number of stack elements like that 01:22:22 so it's useless to do that 01:22:24 oerjan: Sure they do, when they happen to correspond to their biases. 01:22:34 Gregor: well naturally. 01:22:55 Gregor: Yeah, but the Old Testament laws were specifically overturned. 01:23:09 elliott: are you familiar with File::chdir 01:23:16 kallisti: why 01:23:24 Sgeo: why did you link that 01:23:27 elliott: I was just recollecting on how awesome it is. 01:23:35 yes 01:23:37 recollecting. 01:23:42 kallisti: what does it do. 01:24:17 elliott, because 01:24:36 Sgeo: it isn't funny though 01:24:56 It isn't?! 01:25:06 it isn't funny 01:25:09 sorry sgeo 01:25:17 elliott: it gives you a $CWD as well as a @CWD that you can use to change the cwd. you can push and pop directories to @CWD and you can also use local $CWD to define a temporary cwd. 01:26:23 it's an interesting use for local I found. 01:26:40 Sgeo: are you serious 01:27:07 I think the author just needs to ... fix his joke structure, or something, then it would be good 01:27:12 As opposed to almost good 01:27:27 As it is, the jokes are a bit too predictable 01:27:29 no 01:27:32 it wouldn't 01:27:36 this guy is one of the least funny people possibl 01:27:36 e 01:27:37 as opposed to the opposite of good. 01:27:45 like 01:27:48 every human could be made funny 01:27:52 by "restructuring" how they make jokes 01:27:54 the structure 01:27:57 is the difference between a funny person 01:28:00 and an unfunny person 01:28:03 and this person is /worse/ 01:28:20 elliott: not me. my jokes are already perfect. Any restructuring would simply imperfect them. 01:28:47 or produce an equivalently perfect joke. 01:28:56 oerjan and I are in the this perfect joke tier together. 01:29:47 putting jokerey to a tier structure is bad 01:29:54 http://www.stationv3.com/d/20111215.html this isn't that bad 01:30:06 yes 01:30:07 it is 01:30:09 yes it is 01:30:21 http://www.stationv3.com/d/20111215.html#comment-387439621 though this person is worse 01:30:50 as far as I can tell stationv's "humor" is based on character traits. 01:30:59 the punchline is always based on implied character traits. 01:31:21 are any of the characters anything but shallow 01:31:25 kallisti: how much better can you do when one of your characters is literally "alternate [other character]" 01:31:26 "I did this thing but then IMPLIED CHARACTER TRAIT HAHAHAHAHAHAHAHAHA" 01:31:38 i mean like 01:31:46 i can't tell whether alternate floyd is the opposite of 01:31:49 or entirely unrelated to floyd 01:31:52 either way it's bad 01:32:02 even star trek goatee alternates are similar in some ways and opposite in others 01:32:08 and generally differently nuanced in general 01:32:13 because star trek is not as bad as station v3 01:32:27 elliott: brilliant observation. 01:32:58 quite. 01:33:17 elliott, from the alternate universe 01:33:23 yes 01:33:26 how is that relevant 01:33:45 how is alternate floyd distinguishable from an entirely unrelated character who just happens to be called floyd 01:33:57 http://www.stationv3.com/d/20030804.html 01:34:03 elliott: he's from the alternate universe! 01:34:09 duh! 01:34:16 elliott, he's the robot manager of the station in the alternate universe, presumably 01:34:19 Sgeo: you appear to be unable to understand my simple point 01:34:26 characters have to have attributes to make them interesting 01:34:30 attributes and backgrounds 01:34:36 Regular Floyd errors a lot 01:34:44 alternate floyd, near as i can tell, has none of these 01:34:49 there is no "floydianness" about his personality 01:34:53 he just has a correspondign role 01:34:56 and is otherwise unrelated 01:34:58 that is not good writing. 01:34:59 elliott: But he's AAAAAAAAAAAAAAAAAAAAAALTERNATE 01:35:18 basically this strip seems to be trying to be ~wacky~ by introducing random alternate universes and resetting the universe and shit 01:35:19 http://www.stationv3.com/d/20030806.html 01:35:25 now 01:35:30 one cannot maintain a decent strip 01:35:33 with just "wackiness" 01:35:36 and no writing ability 01:35:37 for 8 years 01:35:46 ^^linky 01:36:04 Sgeo: yes, I clicked it. 01:36:06 it was irrelevant. 01:37:44 elliott: YOU'RE irreverent 01:37:48 http://www.stationv3.com/d/20030817.html wtf 01:38:12 Sgeo: "wtf"? the attempt at a joke is as obvious there as its falling flat 01:38:41 HA HA IT'S A PLANT THING IT CAN'T MOVE OR PLAY TAG HA 01:38:42 sgeo was hide and seek deprived as a child 01:39:51 why do we keep talking about stationv3. is it even a popular webcomic? 01:40:32 elliott: Star Trek is probably sometimes worse than Station v3. 01:40:45 It's probably the single most inconsistent series out there. 01:40:59 pikhq: *Maybe* TOS. 01:41:01 And *maybe* Threshold. 01:41:07 But even season 1 TNG is more enjoyable than this. 01:41:15 kallisti: because Sgeo can't bring himself to accept that it's not terrible 01:41:17 elliott: Threshold wasn't *exceptionally* worse than other Voyager stinkers. 01:41:17 and so keeps linking it. 01:41:25 It was just a little bit worse. 01:41:54 elliott, did you just admit that it's not terrible and that I'm unable to accept that? 01:42:17 Sgeo: it was an obvious typo, since you seem to have no issue accepting that it's not terrible 01:43:03 elliott: Also, Enterprise. 01:43:18 pikhq: Have you /seen/ Station V3? 01:43:25 elliott: No, I try to avoid shit. 01:43:27 elliott: which P language is the best? PHP, Perl, Python, Pascal, Prolog, or... hmmm... Postscript? 01:43:42 Oh, wait, right, that one. 01:43:46 are there no other p languages 01:43:49 I have seen it. 01:44:05 And I didn't read much of it because it had antihumor. 01:44:24 It sucked badly enough that it stole a laugh from something else. 01:44:26 monqy: there are. 01:44:26 kallisti: Pail. 01:44:36 kallisti: Plof! 01:44:51 monqy: http://en.wikipedia.org/wiki/List_of_programming_languages#P 01:44:59 oh Piet as well 01:45:15 elliott: I've never heard of Pail. 01:45:22 Does no one besides me think that Station V3 can be good? 01:45:28 Sgeo: No. 01:45:41 kallisti: http://catseye.tc/projects/pail/ 01:45:41 station v3 has fans, doesn't it 01:45:48 Sgeo: yes 01:46:43 -!- augur has quit (Remote host closed the connection). 01:48:13 > let in 5 01:48:14 5 01:48:16 lol 01:48:30 * kallisti learns something new everyday. 01:49:00 Phortran 01:49:03 kallisti: why are you reading Pail.lhs 01:49:08 http://catseye.tc/projects/pail/tests/Pail.falderal is the specification 01:49:19 oh, hmm 01:49:27 that was before he started writing specs in Falderal, I guess 01:49:47 > let 2 + 2 = 5 in 2 + 2 01:49:47 5 01:49:52 lololololol 01:50:07 ;_; 01:50:18 it's like watching toddlers learn to walk 01:51:52 :D 01:52:20 > let in 2 + let in 3 01:52:20 5 01:52:31 > do let in 2 + let in 3 01:52:31 5 01:52:53 bad 01:54:00 > let in 1 - let in 2 - let in 3 01:54:01 2 01:54:11 * oerjan whistles innocently 01:54:12 Falderal? 01:54:23 falderal. 01:54:35 oerjan: hmmm... 01:55:06 1 - (2 - 3) = 1--1=2 01:55:08 Yay 01:55:16 -!- itidus21 has quit (Ping timeout: 245 seconds). 01:55:21 oh it's right associative. 01:55:38 > 1 - 2 - 3 01:55:39 -4 01:56:03 Sgeo: http://catseye.tc/projects/falderal/ 01:57:09 ha ha oh boy 01:57:27 i think i have a problem 01:57:43 heroin? 01:57:46 yes 01:59:08 Heroine? 01:59:39 yese 02:00:19 hairowin? 02:00:34 harlequin? 02:00:43 hair o' win 02:01:17 -!- zzo38 has joined. 02:03:02 heirouīnn? 02:03:51 yes 02:05:38 Smack? 02:07:05 yes 02:07:12 *yack 02:09:02 Uhh, in that case, heroack? 02:09:05 strangely enough mueval on my computer occasionally times out on very tivial inputs. 02:09:15 like the let 2 + 2 = 5 in 2 + 2 02:09:17 it timed out once 02:10:04 s/on my computer/when called by my IRC bot/ 02:10:06 Gregor: Yes. Heroack. 02:10:08 You got it. 02:10:12 kallisti: lambdabot does that too. 02:10:16 we're all winners! 02:10:56 Oh, I see how it works 02:11:34 how does what work 02:11:41 let 2 + 2 = 5 in 2 + 2 02:12:10 yes it uses this function thing 02:12:14 it's pretty crazy magic. 02:12:55 > let 2 + 2 = 5 in 2 + 1 02:12:56 *Exception: :3:4-12: Non-exhaustive patterns in function + 02:20:48 NO!! STOP UPVOTING THAT ANSWER!!!! 02:20:59 > let don't = "stop believing" in don't 02:21:00 "stop believing" 02:21:01 IT HAS ENOUGH VOTES! I'M GETTING TOO MUCH REPUTATION YOU BASTARDS :( 02:21:05 kallisti: No stop that is the worst song. 02:21:09 elliott: link 02:21:21 kallisti: You can't downvote it, you'd have to register and get enough reputation and shit. 02:21:24 elliott: for some reason I thought ' was only valid at the end of identifiers 02:21:33 because that's where it's commonly placed. 02:21:39 (I assume that's why you asked.) 02:22:01 elliott: no I want to see what you said/ 02:22:16 OK fine http://stackoverflow.com/questions/8524801/determining-function-behavior-from-the-type-of-the-function. 02:22:22 (It's the top answer.) 02:22:55 -!- kmc has joined. 02:26:05 elliott: oh sure, you'll write an awesome explanation for some random person on the internet. 02:26:12 but then when I ask you a question. 02:26:16 NOPE. QUIT BEING STUPID. 02:26:26 kallisti: See, the thing is, you're not giving me smack for the pain. 02:26:46 smack for the pain what does that even mean 02:26:52 DO YOU WANT DRUGS? 02:27:06 I don't think I will have much luck smuggling drugs internationally. 02:27:07 Yes, I want DRUGS in return for the pain caused by having to answer your inane questions. 02:27:15 DRUGS, MAN. 02:27:38 elliott is all about that smack 02:28:55 elliott: I found the note about polymorphism being important a good point. 02:29:06 I hadn't really specifically thought about that being essential. 02:29:10 but, of course, it makes sense. 02:29:27 That's where the name "parametricity" comes from: parametric polymorphism. 02:30:56 an (a,b) -> Int could return any constant integer or any int that can be formed from a, b, (a,b), and some function or chain of functions. 02:31:20 @free f :: (a,b) -> Int 02:31:21 f = f . $map_Pair g h 02:31:27 a "chain of functions" also being "a function" of course. 02:31:33 elliott: oh? what is this? 02:31:40 "any int that can be formed from a, b, (a,b), and some function or chain of functions." 02:31:42 This is mistaken. 02:31:55 There are no operations (a -> Int) or (b -> Int) that are not constant: 02:31:58 @free f :: a -> Int 02:31:58 f = f . g 02:31:59 well I mean 02:32:02 @free g :: a -> Int 02:32:02 g = g . f 02:32:11 assuming a and b are not universally quantified. 02:32:16 Say A and B then. 02:32:21 they're just variables for monomorphic types . 02:32:22 okay. 02:32:24 When talking about parametricity, quantification will tend to be assumed. :p 02:32:29 Maybe $A and $B if you want to be ULTRA PRECISE. 02:32:45 why the $? is parametricity discussed in terms of Perl? 02:33:06 Do you have a better character? 02:33:10 (notice my amazing perfect deadpan humor 02:33:11 a 02:33:13 A and B work well. 02:33:14 i mean q 02:33:16 i typoed 02:33:49 elliott: I was just wondering what is more ULRA PRECISE about $A over A 02:33:55 ulra 02:34:08 Because it shows that you're talking about every type A, not just some specific type A. 02:34:20 As in, given any specific type A, ($A -> ...) follows certain rules. 02:34:32 is this a specific notation that is commonly accepted or? 02:35:36 in other words, I'm asking, if I ever use $A in this context will people cringe at me or will they be like "oh yes -beard scratch-". :P 02:35:49 this is important. 02:36:17 I want the beard to be a prominent feature of the conversation. 02:36:22 I want to fucking rustle that shit. 02:36:57 Hmmm 02:36:57 So 02:37:05 -!- augur has joined. 02:37:09 I just finished my first semester of grad schoo. 02:37:14 I need something to do this break. 02:37:28 Grad schoo is the best kind of schoo. 02:37:37 So far, the list is read TAPL and a handful of PL papers, implement something to convert Schem to Scala. Anyone have any other suggestions? 02:37:40 cswords_: what you should do is 02:37:42 realize that itll only get harder 02:37:42 cswords_: drugs. elliott can probably land you some smack, if you know what I mean. 02:37:48 cswords_: @ 02:37:54 cswords_: get drunk 02:37:55 cswords_: Ignore augur, he's a linguist. 02:37:56 celebrate. 02:37:58 I did plent of drugs in my time. 02:37:59 Ignore kallisti, he's an idiot. 02:38:07 Step 1, merge your mind with elliott's. 02:38:07 They're old news. 02:38:08 hahaha 02:38:19 Getting drunk is for tonight. 02:38:20 cswords_: You've just finished grad schoo, are going to convert Scheme to Scala, and did plent of drugs in your time. 02:38:25 I diagnose you with a hungry spacebar. 02:38:27 I need something fun to do. 02:38:28 It keeps eating the previous letters. 02:38:34 cswords_: youre in grad school 02:38:37 getting drunk is for every night 02:38:45 elliott vejn' 02:38:50 kallisti: They will probably have no idea what you're talking about because normal people write things out with explicit quantifiers. 02:38:59 augur, I have way too much work to do for that. 02:39:25 cswords_: You're the mythical "responsible" grad student, aren't you? 02:39:35 pikhq: first semester. 02:39:43 elliott: well, if I were talking with Haskell programmers, A and B are pretty reasonably assumed to be an existential quantification (not the Haskell kind, the usual kind). 02:39:44 he'll come along once hes into his second semester 02:39:45 augur: Ah, right. 02:39:45 no worries 02:40:05 No, but rt5fv/'[;..pol, kmojiu 4m;, cm, tr7m,-0kopm/,. olpoi,l. 89u0bim, 8um, -0p/. ,mvbnmj,.vgfghjkl;'tyuiop[] 02:40:14 elliott: because there's no type normally called A or B, and the uppercase signifies that it's not polymorphic, and anything you can say about A and B, not knowing anything about their constructors, you could reasonably say about any other type. 02:40:26 Er, I mean, I like getting work done. 02:40:28 Feels good, man. 02:40:40 kallisti: I would assume you were talking about some arbitrary type A or B invented for the discussion. 02:40:47 cswords_: Personally I think thsdfiojaspae, efmsdg' sd'cvb h][ erte \we't5 02:40:47 elliott: yes. 02:40:53 kallisti: Which is not the case here. 02:42:26 Personally I think 亜↓不フぃへ久ぃ御語奴9ヴぃ御蛇ゑンこ;ン場差23位15ウ89がファ;おい;握ぇ食いだ 02:43:00 Uhh, dude./ 02:43:04 Clearly q|";..pol, kmojiu 4m;, cm, tr7m,-0kopm/,. olpoi,l. 89u0bim, 8um, -0p/. ,mvbnmj,.vgfghjkl;'tyuiop[] 02:43:04 elliott: because there's no type normally called A or B, and the uppercase signifies that it's not polymorphic, and anything you can say about A and B, not knowing anything about their constructors, you could reasonably say about any other type. 02:43:05 Er, I mean, I like getting work done. 02:43:07 Feels good, man. 02:43:08 I thought of something in Haskell, is make a class in case you want to make a type parameter have a value of a type. Such as, class ValuedType x y | y -> x where { makeTheValue :: y; accessTheValue :: y -> x; }; newtype V_errorMessage = V_errorMessage String; instance ValuedType String V_errorMessage where { makeTheValue = V_errorMessage "Error: (generic error message)."; accessTheValue (V_errorMessage x) = x; }; 02:43:09 kallisti: I would assume you were talking about some arbitrary type A or B invented for the discussion. 02:43:12 cswords_: Personally I think thsdfiojaspae, efmsdg' sd'cvb h][ erte \we't5 02:43:14 elliott: yes. 02:43:16 kallisti: Which is not the case here. 02:43:18 Personally I think 亜↓不フぃへ久ぃ御語奴9ヴぃ御蛇ゑンこ;ン場差23位15ウ89がファ;おい;握ぇ食いだ 02:44:01 elliott, kallisti update 02:44:11 @seen Phantom_Hoover 02:44:11 Unknown command, try @list 02:44:14 @list 02:44:14 http://code.haskell.org/lambdabot/COMMANDS 02:44:44 ...Thing claims that seen exists 02:44:46 @users 02:44:46 Unknown command, try @list 02:45:10 @seen hi 02:45:10 Unknown command, try @list 02:45:15 @hi 02:45:27 it used to 02:45:56 i suppose someone considered it stalking 02:46:15 most IRC networks have some kind of seen service anyway, so... 02:46:45 lambdabot's @seen told you which channels they were in, too 02:46:53 ah 02:46:54 well in common with lambdabot 02:47:04 well, most networks allow that also. or the ones I've been to, except freenode. 02:47:24 there's a flag for that, or used to be 02:47:27 Hmm, how do you reperform a match in Perl on the rest of the line 02:47:33 Or alternatively get all matches of a regexp on a line in list context 02:47:42 oerjan: preflex has it, though 02:47:48 but preflex isn't in here any more 02:48:05 wtf is preflex 02:48:47 I should shout update when there's no MSPA update but only a Station V3 update 02:48:48 >:D 02:49:27 oerjan: mauke's bot in #haskell 02:50:15 elliott: mauke. that's the guy who tries to solve my XY problem when I join #perl to ask questions. :P 02:50:21 I never let him, of course. 02:50:28 he's a #haskell op. 02:50:40 and I believe you've already complained about him when you turned out to be doing something really stupid 02:51:13 eh, no complaints. he's doing a fine job. 02:51:31 elliott: \G assertion 02:51:44 oerjan: hm how does that work, or should i just google it 02:51:58 google perlre ctrl+f \G 02:52:12 kallisti: "google" haha PERLDOC MAN ahem 02:52:23 well i'm just looking at man perlre 02:53:03 elliott: I always use the web docs because typically I have a fully maximized Chrome instance in the background at all times. 02:53:16 kallisti: but not a terminal? when /programming/? 02:53:28 I don't maximize terminals.. 02:53:32 but yes I use those too. 02:53:35 so it's not readily accessible? weird. 02:53:44 not at all. 02:53:48 oerjan: ah, thanks. is there really no way to get all matches in a list context? 02:53:49 also habit 02:54:00 elliott: wait what. 02:54:11 kallisti: i want to get all matches of a regexp on a string in a list 02:54:15 @matches = /.../g #like this? 02:54:15 Unknown command, try @list 02:54:16 (with one group) 02:54:18 oh that works? 02:54:19 neat. 02:54:21 what's inside the list 02:54:28 each... match 02:54:31 everything you'd get 02:54:34 from a while loop 02:54:36 with the /g option 02:54:39 kallisti: but I only want one group 02:54:44 oh. 02:54:46 well.. 02:54:55 map {$1} /.../g #maybe? 02:55:05 um 02:55:10 I don't think this feature can possibly work as you describe 02:55:20 unless match results are first class objects that somehow rebind $ when they are $_ 02:55:49 ah right. 02:56:18 I'd just... use a while loop? 02:56:31 while(/.../g) { print $1; } 02:56:45 that would work, yes. 02:56:52 well, I'll check before saying that 02:56:58 it does. 02:57:06 * kallisti has used such things before. 02:57:43 elliott: oh wait, "In scalar context, each execution of "m//g" finds the next match, ..." 02:57:50 oerjan: right 02:57:52 so \G may not be needed 02:57:55 !perl $_ = "a a a a a"; print map {$1} /(a)/g; 02:57:55 next unless /^ /; print "$1\n" while /(0x[0-9a-zA-Z]+)/g 02:57:56 there we go 02:57:57 aaaaa 02:58:01 ...lol 02:58:02 not helpful 02:58:02 (any shorter way to write that? :p) 02:58:13 !perl $_ = "a b c d e"; print map {$1} /(\S)/g; 02:58:13 eeeee 02:58:19 yeah.. 02:58:44 elliott: well if you use feature 'say' you can just type say $1 02:59:09 say is equivalent to print with a \n 02:59:10 that would so shorten the code 02:59:12 and i know what say is 02:59:22 elliott: assuming you need to use say a lot, yes it would. 02:59:32 next unless /^ /; print "$1\n" while /(0x[0-9a-zA-Z]+)/g 02:59:34 that is the complete code 02:59:49 then no, that's already pretty short. 03:00:03 I'm guessing you're using -n? 03:00:21 otherwise you're nexting into nothing. :P 03:00:49 yes 03:01:43 you could instead remove the parens around the regex, use -p, and replace the print ... while /.../g with /.../g 03:02:29 *use -p instead of -n 03:02:44 er, no. 03:02:52 -!- itidus21 has joined. 03:03:21 yes that would work I believe. 03:03:30 -!- copumpkin has joined. 03:03:40 elliott: since you just put parentheses around the whole regex there's no need to specifically grab the first capture group 03:04:02 oh, indeed 03:06:47 except $_ doesn't contain the resulting match afterwards, so -p would print the wrong thing? 03:07:15 does -p print $_ 03:07:19 I'm using -n 03:07:20 I thought it printed the last line. 03:07:30 oh 03:07:30 kallisti: it would be pretty pointless if it didn't print $_ 03:07:30 okay. 03:07:36 yeah I suppose so. 03:07:45 it's $& which contains the whole match 03:07:57 not needed with /.../g though 03:08:01 just print /.../g 03:08:31 because HAHAHAHA FUNCTION ARGUMENTS ARE LIST CONTEXT 03:08:54 !perl $_ = "test"; print /.*/; 03:08:54 1 03:09:01 I DON'T THINK SO 03:09:07 or wait 03:09:11 !perl $_ = "test"; print /.*/g; 03:09:12 test 03:09:40 it won't get \n between, though 03:10:00 !perl $_ = "test"; print /[^e]/g; 03:10:01 tst 03:11:23 oh, yes. 03:11:31 map {print "$_\n";} /.../h 03:11:36 s/h/g/ 03:11:42 or for 03:11:43 your preference 03:11:46 I like map for some reason. 03:12:00 so... basically the same amount of code. :P 03:12:19 print join('\n', /.../g) also 03:12:58 "\n" rather 03:13:09 oh, also $, = "\n"; print /.../g; 03:15:36 also how do I loop through every line of a string like while (my $foo = <>) 03:15:42 im bad at perle 03:15:49 split /\n/, $_ 03:15:59 then loop away. 03:16:24 there may be some kind of fancy iterative way to do it though. 03:16:51 foreach my $line (split /\n/, $foo) is good enough I guess 03:17:14 * kallisti pretty much never uses foreach. 03:17:29 since it's equivalent to for but requires more typing. 03:18:33 elliott: are you in a perl golfing mood? :P 03:19:05 i hope there will be an explanation for today's freefall... 03:20:56 oh wait i think i get it. 03:22:24 elliott: I think it would make a reasonable amount of sense that <> did the same it does for filehandles on strings. 03:23:25 oh look it does. 03:23:31 I don't think that's documented. 03:23:52 !perl print <"test\ntest"> 03:23:53 test 03:24:10 !perl @x = <"test\ntest">; print $x[1] 03:24:14 >_> 03:24:29 or maybe not. 03:25:15 !perl while (<"test\ntest">) { print $_ . "-"; } 03:25:16 test 03:25:33 ah no, it's only one match 03:25:38 yeah. 03:26:05 !perl @x = <"test\ntest">; print $x[0] 03:26:06 test 03:26:09 that's really weird. 03:26:50 @pl \x y -> f (g x) (h y) 03:26:50 (. h) . f . g 03:26:53 ugh, right 03:27:08 oerjan: well... 03:27:14 oerjan: is there a nice way to write that, again? 03:27:15 oerjan: you have to chomp as well. 03:27:32 elliott: maybe if you use .: ? 03:27:45 !perl while(<"test\ntest">) { chomp; print $_ . "-"} 03:27:46 test 03:27:49 hmmm, nope. 03:28:27 !perl for($_ = <"test\ntest">) { chomp; print "$_-"} 03:28:28 test 03:28:37 no clue why the - is still there despite chomping 03:28:52 *isn't 03:29:09 !perl for($_ = <"test\na">) { chomp; print "$_-"} 03:29:10 test 03:29:17 !perl while($_ = <"test\na">) { chomp; print "$_-"} 03:29:18 test 03:29:20 ????? 03:29:35 it should say test- 03:29:48 assuming sanity 03:29:58 maybe this is what happens when you use undocumented language features. 03:30:22 !perl while($_ = <"test\na">) { s/\n//; print "$_-"} 03:30:22 testa- 03:30:32 oh... 03:30:39 so <> does... nothing? 03:30:42 on strings? 03:30:43 good to know. 03:30:48 Do you know if there is any Haskell programs similar to the ValuedType class I described earlier? 03:33:39 zzo38: so basically it describes a function from a -> b, and provides you with an a if you don't have one? 03:34:54 a derived function would be f :: b; f = accessTheValue makeTheValue 03:35:01 kallisti: Yes, mostly in case you need to put a value of such a type inside of a type parameter. (Although there are some other ways too) 03:35:08 kallisti: Yes, except that is ambiguous. 03:35:18 er right 03:35:23 insert relevant typeclass :P 03:36:05 but then it's still ambiguous isn't it? 03:36:30 oh wait fundep. 03:36:32 :t curry $ uncurry ?f . (?g *** ?h) 03:36:33 forall a b a1 b1 c. (?f::a1 -> b1 -> c, ?g::a -> a1, ?h::b -> b1) => a -> b -> c 03:36:36 f :: (ValuedType a b) => b 03:36:49 that should work because of the fundep, yes? 03:37:50 zzo38: it slightly reminds me of the reflection package 03:38:05 zzo38: my bad. f :: (ValuedType a b) => a 03:38:08 based on your original definition 03:39:00 you could call f "accessTheValueThatWasMade" 03:39:07 and have possibly the worst named functions ever. 03:39:21 Might it need scoped typed variables to be used? 03:39:32 er more accurately "accessTheValueFromTheMadeValue" 03:40:12 -!- kmc has quit (Quit: Leaving). 03:40:25 zzo38: that is also intended to get a value into a typeclass instance 03:40:43 zzo38: if I understand functional depedencies correctly it should work as I wrote it? 03:40:51 but maybe a forall b. is needed, yes. 03:41:12 http://esoteric.voxelperfect.net/wiki/Antimated_Chat_Rooms 03:41:15 antimated, I tell you!!! 03:41:30 chat rooms go *BOOM* with gamma rays 03:42:07 oerjan: hmm, so if Gamma-Ray Burst is Sgeo's favourite band 03:42:10 elliott: antimated... so like, they try to kill each other to see who wins? 03:42:15 maybe "animated chat rooms" means his VR game things 03:42:21 *antimated 03:42:23 RUINED THE JOKE OOPS 03:42:24 elliott: or do they pair up to kill fetal chatrooms? 03:42:35 how does one antimate? 03:43:02 badly 03:43:07 Another way could be to pass undefined of a type to a class method (some classes used that), but I maybe the way I specified allow combinations made in other way? I don't know, really 03:43:25 first you do the antiboogie 03:43:49 no wait, first you need antipasta 03:45:14 oerjan shares his dating secrets indirectly. 03:45:23 first you eat pasta, then you dance, then you fuck. 03:45:38 proven results. 03:46:21 well you have to raise the anticipation 03:47:24 zzo38: reflection uses the Proxy type, i think. 03:47:54 which is nicer than passing undefined, but alas not in base 03:48:08 oerjan: how surprising, edwardk using his own package :P 03:48:24 huh, it's actually 03:48:25 class ReifiesNum s whereSource 03:48:25 Methods 03:48:25 reflectNum :: Num a => proxy s -> a 03:48:33 presumably the tagged package dependency is to call them with Proxy 03:48:40 elliott: i'm sure i saw a relevant quote recently 03:49:02 Yes, I read about the Proxy type and I like that one too 03:49:14 elliott: help how does proxy appear from nothing. 03:49:22 kallisti: are you fucking serious... 03:49:27 elliott: You know about huge pages, right? 03:49:32 elliott: I don't even it scoped anywhere. 03:49:36 shachaf: You mean the x86 concept? Yes. 03:49:39 kallisti: id :: a -> a 03:49:42 help how does a appear from nothing 03:50:04 elliott: that's not particularly helpful. ghci can tell me that. 03:50:19 oerjan: kallisti's either stupid or trolling, so kick him :P 03:50:32 was proxy defined somewhere and I'm missing it? 03:50:42 elliott: I mean why turning on *one* huge page is causing ridiculous amounts of swapping and slowing my computer down. 03:50:46 I just see a single-argument typeclass, with this "proxy" that magically appears with no scope. 03:50:50 And then turning on another one repeats the process. 03:50:57 shachaf: How huge is it? 03:50:59 elliott: um did you get the capitalization right? 03:51:02 oerjan: yes 03:51:05 that's why I quoted it. 03:51:07 presumably the tagged package dependency is to call them with Proxy 03:51:09 kallisti: 03:51:11 elliott: The default on amd64, which I assume is 2MB? 03:51:12 id :: proxy -> proxy 03:51:16 class Foo a where bar :: b -> a 03:51:19 class Foo a where bar :: boop -> a 03:51:20 Reifies is the class like that I look for 03:51:29 elliott: oh, hmmm 03:51:45 elliott: right. I'm not accustomed to seeing a polymorphic variable used that way. 03:51:50 I should read about that 03:51:51 usually it's the parameter. 03:52:00 elliott: Yes, the only size available in /sys is 2MB. 03:52:15 elliott: But turning one on seems to cause ~500MB of swapping. 03:52:47 shachaf: I quote from the master: 03:52:47 11:16:00: hey oklopol 03:52:48 11:16:04: do you know how to respond to disk-sectors being unable to be read? 03:52:48 11:16:32: yes! 03:52:48 11:16:39: i have a perfect response 03:52:48 11:16:45: buy a new computer 03:52:49 11:17:07: be sure they install all the programs at the shop because that shit can be complicated 03:52:56 elliott: but what useful things can you do with a proxy s, when you know absolutely nothing about proxy? You need some function a s -> s 03:53:05 elliott: i will murder you 03:53:12 kallisti: it's just to make the types work out. 03:53:24 kallisti: I think the only thing is depend on the type. 03:53:30 oh okay.l 03:53:31 kallisti: because otherwise the "s" wouldn't appear in the type 03:53:39 class Reifies s a | s -> a where 03:53:39 reflect :: proxy s -> a 03:53:45 and it must, because that's the rule for typeclasses 03:53:50 so there's no actual computation going on there other than resolving types at compile-time. 03:54:00 augur: hi 03:54:10 elliott: :-( 03:54:16 kallisti: of course there's computation, it's a constant "a" value 03:54:18 depending on the type s 03:54:22 elliott: well, yes. 03:54:24 elliott: It's being complicated. 03:54:27 elliott: that's what I meant. 03:54:28 elliott, can I just read the .pdf instead of this channel? 03:54:33 shachaf: I thought the kernel automatically managed huge pages these days, anyway. 03:54:38 Sgeo: What? 03:54:45 elliott: I don't typically think of a constant as being a computation, but okay, that's perfectly sensible to say. 03:54:50 elliott, there's a pdf about this reflect stuff, right? 03:55:00 kallisti: yes, for example my program that prints out pi is not a computation 03:55:01 beacuse it's constant 03:55:03 Sgeo: i'm sure there is 03:55:10 the reflect stuff is irrelevant to what kallisti's talking about though 03:55:21 elliott: That's if you want transparent huge pages. 03:55:25 I don't. 03:55:29 shachaf: Opaquity is for losers! 03:55:56 elliott: Look, I just want to allocate 4KB subpages inside it. 03:55:59 elliott: well, no, that's a computation and also constant. I was thinking of things like f a = 5. is 5 computed here? 03:56:03 shachaf: That's immoral 03:56:05 *! 03:56:23 shachaf: But seriously, start spamming lkml at greater and greater frequencies yelling about how much Linux sucks because it swaps with one measly huge page. 03:56:32 Eventually someone will get sick of you and give you the solution. 03:56:49 kallisti: OK, so because some constants aren't computations (because you consider them too trivial), constants aren't computations in general? 03:56:55 > let asTypeIn :: x -> f x -> x; asTypeIn = const in 1 `asTypeIn` [1.0] 03:56:56 1.0 03:56:56 For instance programs don't compute because some programs are trivial. 03:56:57 elliott: no that's not what I meant to say. 03:57:06 > let asTypeIn :: x -> f x -> x; asTypeIn = const in 1 `asTypeIn` Just 1.0 03:57:07 1.0 03:57:08 elliott: When you say "But seriously", I assume you mean "But the opposite of seriously". 03:57:14 elliott: it was an actual question not a point-prover. 03:57:18 shachaf: Yes. Correct. 03:57:29 kallisti: ^ f is like proxy there 03:57:54 hm, okay. 03:58:34 oerjan: if ScopedTypeVariables didn't exist to make this trivial, I'd think we need a family of composable functions whose implementations are const or flip const or (const .) or whatever :P 03:58:48 to build up arbitrarily complex unifications 03:58:50 heh 03:59:00 elliott: I would think it's unlikely in this case that the constant is computed though, right? Depending on the types I guess. 03:59:14 elliott: I'm not really sure what reify is doing. 03:59:20 kallisti: maybe you should read the paper 03:59:29 er reflect 03:59:35 elliott: not a bad idea. 04:00:08 Why would you need to read the report to understand these things? To me it is obvious. 04:00:25 unfortunately not everyone is gifted with omniscience 04:00:40 zzo38: I only have the information that has appeared on this channel 04:00:42 Neither am I. 04:00:48 I've looked at nothing else. out of laziness. 04:01:17 elliott: Do you know about huge pages, the POWER concept? 04:01:35 shachaf: No. Maybe? 04:01:38 Help. 04:01:42 It's a lot like the x86 concept. 04:01:50 Except the architecture is POWER. 04:02:04 kallisti: But it is basically like what I wrote but with a proxy instead. data Proxy t = Proxy; Now you can make a proxy for any type. If you need proxy for other kinds I supppose you can do that too by indicating explicit kinds. 04:02:13 Apparently they support 16GB pages. 04:02:15 Now *that's* a page. 04:03:03 zzo38: how is t determined? 04:03:18 But, there should be one kind such as & to specify class/instance/constraint so you can make: data ClassProxy (t :: * -> &) = ClassProxy; 04:03:32 kallisti: By the type signature. 04:04:48 ah more fundeps 04:05:18 :t reflect 04:05:19 forall a (m :: * -> *). (MonadLogic m) => Maybe (a, m a) -> m a 04:05:21 awwwww 04:05:42 Wrong module! 04:07:19 zzo38: That already exists, and it's not called &. 04:07:26 It's in GHC HEAD already to be releasd with 7.4, IIRC. 04:07:47 I think if I were to buy a console I'd get a ps3 04:07:54 kallisti: reflect and friends really compute the type _from_ the value, at runtime. 04:08:07 oerjan: hmmm, okay. 04:08:33 oerjan: that talk's a bit too socially mobile for Haskell folk :P 04:08:36 shachaf: x86 isn't quite that hardcore. 04:08:44 * kallisti would get a ps3 for the simple reason that Demons' Souls and Dark Souls are only for ps3. 04:08:48 elliott: wat 04:08:51 "Only" up to 1 GiB pages. 04:09:07 but, instead, I'm going to with a gaming desktop, because... it makes way more sense. 04:09:12 oerjan: I was referencing a McBride quip that I know forget. :/ 04:09:24 Ah, it's from http://strictlypositive.org/winging-jpgs/. 04:10:01 oerjan: it seems kind of determined by type. For example, reflect Proxy, using zzo38's Proxy a type. 04:11:05 kallisti: the idea is to take a value, encode it into a type, and then use that type to get a typeclass instance which contains the original value. 04:11:12 elliott: O, well, even if it exist in GHC HEAD but it is not in current version I have 04:11:47 this is tricky because haskell doesn't actually allow creating instances at runtime... 04:12:28 zzo38: Yeah, but it'll be coming in a few months as Constraint. 04:13:38 I don't really like that name for it, for a few reasons, but, OK 04:14:20 oerjan: so then w is the instance you want at runtime? 04:14:29 in the Reifies typeclass. 04:14:33 er 04:14:37 in the reify function I mean. 04:14:47 ...does that statement even make sense. 04:14:51 kallisti: rtfpaper 04:15:08 elliott: MAYBE I CAN GLEAN IT FROM TYPES. 04:15:10 INSTEAD. 04:15:21 that would require a brGAK 04:15:44 what does that even mean. 04:17:37 * kallisti thinks, "maybe if I look at the source of reify I can figure it out!!" 04:17:40 * kallisti opens the source 04:17:44 unsafePerformIO. :( 04:18:07 kallisti: yo in a foreach how to I skip the next line 04:18:13 but actually, discard this line and give me the next one 04:18:16 within nested control structures 04:18:20 kallisti: no, w is the value you are trying to compute, a is the type of the value you are trying to get into a type class, and s is the type encoding that value 04:18:22 elliott: uh what. 04:18:29 as i expected; oerjan? 04:18:30 elliott: you want to skip to the next line in the outer loop right? 04:18:42 kallisti: no 04:18:52 example: 04:19:21 foreach my $foo (split /\n/, $bar) { if ($foo =~ /treat_next_line_specially/) { my $quux = next_line_somehow; } else ... } 04:19:32 elliott: lol wat. 04:19:35 hold on 04:19:36 ensuring that the line put in $quux WON'T be considered next iteration, instead it'll go on to the one after 04:19:39 this is my replacing a while (<>) look 04:19:39 loop 04:19:42 with an iteration over a string 04:19:43 so I can't do 04:19:44 <> 04:19:46 in the body of the loop 04:20:18 oh... 04:20:21 hmmmmmmmm 04:20:22 uh 04:20:36 there MIGHT be a way to do that? but otherwise you may want to use a C-style for loop instead. 04:21:36 elliott: oh hmm, there's the continue block, which is always executed before the loop condition is evaluated again. 04:21:47 so if you next in the loop body it'll go to the continue block. 04:21:55 before going back to the main loop 04:21:58 is that helpful? 04:22:18 (note that the continue is /always/ executed on each iteration, but the main body can be skipped via next) 04:22:39 no 04:23:06 oh well, I'll just restructure 04:23:11 ls 04:23:12 oops 04:23:13 wrong window 04:24:51 yeah I think you just want something besides a foreach loop 04:24:52 elliott, kallisti update 04:24:57 either that or use gross state variables. 04:25:04 but I dunno what you're trying to do. 04:25:10 so there might be an entirely easier way to do it. 04:25:11 I love it when kallisti is updated. 04:25:14 He gets very slightly less stupid. 04:25:27 lolwat 04:25:30 I do? 04:26:06 Well. 04:26:07 No. 04:26:10 I was trying to make you feel better. 04:26:36 instead you just confused me. 04:26:41 Hahaha, this guy has been around for 3 years and he only has 504 reputation, I've been around 2 days and I have 528 BOW BEFORE YOUR NEW GOD, PEON!!!!!!!! 04:26:56 I do not need to be made feeling better. 04:27:15 kallisti: I guess past a certain point of stupid you just live in this kind of blizzful daze. 04:27:23 Daze? Haze. 04:27:26 -!- Jafet has quit (Quit: Leaving.). 04:28:29 JOHN: last time i saw her, she looked really grim. 04:28:30 JOHN: and also, dark. 04:29:53 elliott: not quite, but lately I've just been in a completely content but meaningless state of mind. 04:29:59 if that makes sense. 04:30:10 Commonly referred to as the "kallisti state". 04:30:22 oh no! sometimes I'm sad! even happy! 04:30:31 there are so many different emotions to feel. 04:30:32 Yes, but always meaningless. 04:30:34 sad. neutral. happy. 04:30:52 elliott: life is meaningless, bro. -_;; 04:32:39 -!- oerjan has quit (Quit: Good night). 04:33:21 elliott: but yes you could use a state variable to signify that the next line is special. 04:33:30 if nothing else is nicer. 04:34:58 That's what I love in programming: being forced to manually convert my problem to a state machine. 04:35:03 yep. 04:35:10 elliott: well a different looping construct would be nicer. 04:35:40 I'd bet Perl is weird enough to let you implement this for foreach loops without patching the interpreter. 04:35:43 It'd probably be slow, though. 04:35:52 other alternatives: implement continuation monad in perl 04:36:51 elliott: hmmm... maybe? I don't think so. 04:37:04 nothing simple would work. 04:37:20 you could override <> with an object but that sounds really boring and tedious. 04:37:39 but then you'd be switching to a while loop 04:38:13 WHY IS NOBODY UPVOTING MY ANSWER THIS MUST BE A BAD TIME TO MAKE ANSWERS I MUST ADJUST MY SLEEP SCHEDULE FOR MEANINGLESS INTERNET POINTS 04:38:36 lolwat 04:38:41 stackoverflow: the game 04:41:21 > (f <*> g <*> h) x 04:41:21 Ambiguous type variable `a' in the constraints: 04:41:22 `SimpleReflect.FromExpr ... 04:41:22 > (f <*> g <*> h) x :: Expr 04:41:23 Ambiguous type variable `a' in the constraints: 04:41:23 `SimpleReflect.FromExpr ... 04:41:25 what 04:41:27 while (my ($line, $str) = split(/\n/, $str, 2)) { ... } 04:41:37 elliott: $line is the current line, $str is the rest of the string. 04:41:41 kallisti: help ^ 04:41:50 oh... yeah.. 04:41:56 you have to give one of them a specific type 04:41:57 I think 04:41:59 or something 04:42:02 > ((f :: Expr -> Expr -> Expr) <*> g <*> h) x :: Expr 04:42:03 Couldn't match expected type `a -> SimpleReflect.Expr' 04:42:03 against infe... 04:42:04 > ((f :: Expr -> Expr -> Expr) <*> g <*> h) x 04:42:05 Couldn't match expected type `a -> b' 04:42:05 against inferred type `Simple... 04:42:12 > (f <*> (g :: Expr -> Expr) <*> h) x 04:42:12 Ambiguous type variable `a' in the constraints: 04:42:13 `SimpleReflect.FromExpr ... 04:42:15 :t (f <*> (g :: Expr -> Expr) <*> h) x 04:42:15 Ambiguous type variable `a' in the constraints: 04:42:15 `SimpleReflect.FromExpr a' 04:42:16 arising from a use of `h' at :1:31 04:42:18 > (f <*> (g :: Expr -> Expr) <*> h) x :: Expr 04:42:19 Ambiguous type variable `a' in the constraints: 04:42:19 `SimpleReflect.FromExpr ... 04:42:23 ummmm... 04:42:30 fuck it 04:42:36 oh wait 04:42:38 > (f <> (g :: Expr -> Expr) <*> h) x :: Expr 04:42:39 Couldn't match expected type `Text.PrettyPrint.HughesPJ.Doc' 04:42:39 agains... 04:42:40 > (f <$> (g :: Expr -> Expr) <*> h) x :: Expr 04:42:41 Ambiguous type variable `a' in the constraints: 04:42:41 `SimpleReflect.FromExpr ... 04:42:43 >_< 04:42:48 yeah it's frustrating... 04:43:04 :t f 04:43:05 forall a. (SimpleReflect.FromExpr a) => a 04:43:12 > (("f $ " ++) <$> ((++")") . ("(g " ++)) <*> ((++")") . ("(h " ++)) x 04:43:13 : parse error (possibly incorrect indentation) 04:43:15 > ((("f $ " ++) <$> ((++")") . ("(g " ++)) <*> ((++")") . ("(h " ++))) x 04:43:16 : parse error (possibly incorrect indentation) 04:43:17 fuck 04:43:24 :t f <*> g <*> :: Expr -> Expr 04:43:25 parse error on input `<' 04:43:30 lol 04:43:34 :t f <*> g <*> h :: Expr -> Expr 04:43:34 Ambiguous type variable `a' in the constraints: 04:43:35 `SimpleReflect.FromExpr a' 04:43:35 arising from a use of `g' at :1:6 04:43:39 > (("f $ " ++) <$> ((++")") . ("(g " ++)) <*> ((++")") . ("(h " ++))) x 04:43:39 Couldn't match expected type `a -> b' 04:43:40 against inferred type `[GHC.T... 04:43:43 :t (("f $ " ++) <$> ((++")") . ("(g " ++)) <*> ((++")") . ("(h " ++))) x 04:43:43 Couldn't match expected type `a -> b' 04:43:44 against inferred type `[Char]' 04:43:44 In the first argument of `(<$>)', namely `("f $ " ++)' 04:43:48 > (("f $ " ++) <$> ((++")") . ("(g " ++)) <*> ((++")") . ("(h " ++))) "x" 04:43:49 Couldn't match expected type `a -> b' 04:43:49 against inferred type `[GHC.T... 04:44:15 > let fuck name x = "(" ++ name ++ " " ++ x ++ ")" in (("f $ " ++) <$> fuck "f" <*> fuck "g") "x" 04:44:15 Couldn't match expected type `a -> b' 04:44:16 against inferred type `[GHC.T... 04:44:17 FML 04:44:21 lol 04:44:37 @unpl f <*> g <*> h 04:44:37 ((f <*> g) <*> h) 04:44:39 > ((,) <$> f <*> g) 42 04:44:39 Ambiguous type variable `a' in the constraints: 04:44:40 `SimpleReflect.FromExpr ... 04:44:45 > ((,) <$> f <*> g) 42 :: (Expr,Expr) 04:44:46 (f 42,g 42) 04:44:48 FINALLY 04:45:16 what does that tell you? 04:45:22 > join (liftA2 (,)) f 42 :: (Expr,ExpR) 04:45:23 Not in scope: type constructor or class `ExpR' 04:45:23 > join (liftA2 (,)) f 42 :: (Expr,Expr) 04:45:24 (f 42,f 42) 04:46:07 > (flip ($) <$> 42 <*> 43) pred 04:46:08 Ambiguous type variable `a' in the constraint: 04:46:08 `GHC.Enum.Enum a' 04:46:08 ar... 04:46:10 :t (flip ($) <$> 42 <*> 43) 04:46:11 forall a b (f :: * -> *). (Num (f a), Applicative f, Num (f (a -> b))) => f b 04:46:11 elliott: is that loop construct helpful? 04:46:16 :t (flip ($) <$> 42) 04:46:17 forall a b (f :: * -> *). (Num (f a), Functor f) => f ((a -> b) -> b) 04:46:20 while (my ($line, $str) = split(/\n/, $str, 2)) { ... } 04:46:32 kallisti: nope, when I said I was gonna restructure it I meant I gave up 04:46:36 but I'll probably incorporate that next time, tahnks 04:46:37 thanks 04:46:39 ah. 04:46:41 :P 04:46:45 :t (($) <$> 42) 04:46:45 forall a b (f :: * -> *). (Num (f (a -> b)), Functor f) => f (a -> b) 04:46:57 I'm looking at the ReifiesNum thingy 04:46:59 I see Pred and Succ 04:47:01 :t ((\x f -> f x) <8> 42) 04:47:02 Precedence parsing error 04:47:02 cannot mix `<' [infix 4] and `>' [infix 4] in the same infix expression 04:47:03 :t ((\x f -> f x) <*> 42) 04:47:04 forall t b. (Num (t -> t -> b), Applicative ((->) t)) => t -> b 04:47:09 gah 04:47:10 But ... Twice? I guess that makes it more efficient to reify some numbers? 04:47:15 Sgeo: binary 04:47:16 elliott: if you wanted two lines at a time you could also do 04:47:19 I still don't know what is meant by Reify 04:47:26 while (my ($line1, $line2, $str) = split(/\n/, $str, 3)) { ... } 04:47:28 :t fmap (\x f -> f x) 04:47:28 and stuff like that. 04:47:29 forall a t (f :: * -> *). (Functor f) => f a -> f ((a -> t) -> t) 04:47:31 but that's probably not what you want. 04:47:41 (c -> a) -> (c -> (a -> t) -> t) 04:47:41 hmm 04:47:58 > fmap (flip ($)) (const 42) (+) 43 04:47:59 43 04:48:02 aha 04:48:05 :t liftA2 (\x f -> f x) 04:48:06 forall a c (f :: * -> *). (Applicative f) => f a -> f (a -> c) -> f c 04:48:19 ....what the hell. 04:48:20 ohd uh 04:48:22 *oh duh 04:48:41 * elliott is trying to point-free: f x y z = g (h x) (h y) (h z) 04:48:45 *free of points: 04:48:55 hm 04:49:21 sounds, difficult. 04:49:25 it looks like the reader monad but it isn't :P 04:49:26 you probably won't get a good solution. 04:49:41 i think i can, but who knows 04:50:41 elliott: is @pl cheating? :P 04:50:48 good luck 04:51:06 @pl \g h x y z -> g (h x) (h y) (h z) 04:51:06 join . ((flip . ((flip . ((.) .)) .)) .) . join . ((flip . ((.) .)) .) . (.) 04:51:10 @pl \x y z -> g (h x) (h y) (h z) 04:51:11 flip flip h . ((.) .) . (. h) . g . h 04:51:13 yeah. 04:51:17 (flip flip h?) 04:51:17 elliott, is this thing commonly used in Haskell projects? It looks cool 04:51:23 Sgeo: What thing? 04:51:23 :t flip flip h . ((.) .) . (. h) . g . h 04:51:24 forall (f :: * -> *) a b (f1 :: * -> *) a1 a2 (f2 :: * -> *). (Functor f, SimpleReflect.FromExpr (f1 a), Functor f1, SimpleReflect.FromExpr (f a1), Show a2, Show a1, Show a, SimpleReflect.FromExpr b, 04:51:24 SimpleReflect.FromExpr (f2 a2), Functor f2) => f2 (f (f1 b)) 04:51:28 :t \g h -> flip flip h . ((.) .) . (. h) . g . h 04:51:29 forall a b (f :: * -> *). (Functor f) => (a -> a -> a -> b) -> f a -> f (f (f b)) 04:51:32 :t \g h -> h . ((.) .) . (. h) . g . h 04:51:33 Occurs check: cannot construct the infinite type: 04:51:33 f = (->) (f (f1 a -> f1 b)) 04:51:33 Probable cause: `h' is applied to too few arguments 04:51:34 elliott, "Functional Pearl: Implicit Configurations" 04:51:36 oh 04:52:11 Sgeo: not that commonly afaik. I think it's being used in the mpfr binding copumpkin and edwardk are working on 04:52:17 -!- Darth_Cliche has joined. 04:52:32 I promised edwardk I'd get it in a working state before the end of the year 04:53:11 elliott, there's no reason I shouldn't use it instead of, say, Reader, right? 04:53:22 Or are they entirely separate concepts 04:53:37 Here, copumpkin said something; he's the official representative for the reflection package. 04:53:41 Enjoy! 04:53:52 wat 04:53:54 I was talking about mpfr 04:53:59 lol 04:54:00 Yes, but it is too late now. 04:54:02 Your fate is sealed. 04:54:02 oh okay 04:54:07 I like reflection too 04:54:13 elliott: this may be one of those situations 04:54:37 elliott: where, without additional standard higher-order functions, attempting to write a point-free function is not going to be fruitful? 04:54:53 -!- Darth_Cliche has changed nick to Klisz. 04:55:12 elliott: though perhaps by attempting these puzzles, you can devise combinators that would be useful for writing pointfree code? 04:55:29 -!- DCliche has quit (Ping timeout: 252 seconds). 04:55:44 kallisti: hi. 04:55:52 copumpkin: Good, tell Sgeo all about it and how it differs from the reader monad. 04:56:03 Sgeo: like, totally, man 04:56:08 duuude 04:56:40 "We rely on type classes, higher-rank polymorphism, and—in ad- 04:56:40 vanced cases—the foreign function interface. 04:56:40 " 04:56:44 o.O at ffi involvement 04:58:04 Sgeo: It uses the FFI to store a value at a pointer, and then serialises that pointer to type-level naturals, and then deserialises it with unsafePerformIO to read the pointer. 04:58:12 I now predict that Sgeo will never use the reflection package. 04:58:55 I haven't used much Haskell libraries thus far.. 04:59:44 elliott: didn't I make f (g x ) (g y) or something? 04:59:48 I don't remember what it was. 05:00:17 Sgeo: I would also predict that you will never use the base package. 05:00:29 oooooh wicked burn. 05:01:15 elliott: surely Sgeo has imported Control.Applicative. 05:01:37 -!- azaq23 has joined. 05:01:43 or Data.List even/ 05:01:46 kallisti: I predict that Sgeo has never written a program not strictly intended to learn Haskell by writing a one-file program with no real use (like hello world or fizzbuzz, etc.). 05:01:47 -!- azaq23 has quit (Max SendQ exceeded). 05:01:49 Prelude is in base too. 05:01:58 oh 05:02:17 -!- azaq23 has joined. 05:02:25 elliott, what does my BF interpreter count as? 05:03:17 OK, "to achieve a purpose other than rehashing a standard program skeleton to learn Haskell". 05:03:33 elliott: be careful. you might accidentally imply that bf has no real use. 05:03:34 oh okay. 05:03:37 you didn't 05:04:05 I've never written a BF interpreter before 05:07:17 Gee golly gosh. 05:08:13 Sgeo: it's okay I've never written anything substantial in Haskell and I'm still awesome. :) 05:10:33 elliott: find is an awesome program 05:10:38 now that I know how to properly use -exec 05:10:41 It's not. 05:10:49 are there better alternatives? 05:11:02 burn 05:11:02 Certainly; you won't be interested in any of them though. 05:11:12 Also that's irrelevant to the question of whether it's awesome or not. 05:11:13 why not? what are they? go on. 05:11:32 elliott: it's slightly relevant. It fills a niche and that's why it's awesome. 05:11:35 if other things do it better 05:11:38 It doesn't. 05:11:40 then it is less awesome than I initially thought. 05:11:41 It fills about five thousand niches. 05:11:55 It has a mini implementation of about 50 Unix commands in there and it doesn't compose well at all. 05:12:08 Plan 9 gets along just fine without a find, for instance, mostly by disallowing pesky control characters in filenames so that line-based IO works fine. 05:12:22 pikhq: Can you get 1 GiB on amd64? 05:12:47 shachaf: Yes. 05:13:00 elliott: right but I use find to run commands on a whole directory tree at once. how does plan 9 do this? 05:13:17 Hah: 05:13:52 i386 | Page Size: 4KB | Huge Page Size: 4M (2M in PAE mode) | Large Page Size: 1GB 05:14:11 kallisti: By listing the entire directory tree and piping it through e.g. grep to filter out the commands you don't want, then passing it to xargs. 05:14:20 shachaf: Sorry, I use "x86" to refer to x86_64 anymore, because seriously 32-bit x86 is an archaicism anymore. 05:14:49 kallisti: To quote the Plan 9 wiki: 05:14:49 find du -a | grep pattern 05:14:49 grep pattern `{du -a root} 05:14:50 -name du -a root | grep name 05:14:50 pattern in a file grep -n pattern `{du -a root | awk '{print $2}'} 05:14:50 -exec cp '{}' x ';' cp `{ du -a | grep pattern } x 05:14:52 I didn't see it listed in /sys, but I suppose that doesn't constitute trying very hard. 05:14:54 (View in a monospaced font.) 05:15:03 elliott: I've done similar things with find before I realized I could use -exec 05:15:14 kallisti: It's unsafe with Unix because filenames can contain anything apart from NUL bytes. 05:15:20 You have to use -print0 and | xargs -0 and it's a gigantic mess. 05:15:34 find -print0 | xargs -0 > find -exec 05:17:32 "The fourth approach to the configurations problem is to use a 05:17:32 reader monad [3]. Its drawback is that any code that uses configu- 05:17:32 ration data (even only indirectly, by calling other functions that do) 05:17:32 must be sequenced into monadic style—even if it does not other- 05:17:32 wise have to be. 05:17:32 " 05:19:01 elliott: so your basic argument against find, despite it doing everything it needs to do to work in Unix, is a) unix filenames b) it goes against Unix philosophy 05:19:30 kallisti: Many things work. I use find all the time. That does not mean I think it worthy of being called out as "awesome". 05:19:42 kallisti: Have I mentioned that its calling convention is completely unlike almost all Unix software? 05:19:44 Only dd is worse in that regard. 05:19:54 (And that's because dd was ported from another system, IIRC.) 05:19:54 yes it's unique in that regard. 05:20:01 elliott: What's the gigantic mess exactly? 05:20:10 shachaf: Context? 05:20:14 You just typed out the entire solution to the problem. 05:20:19 You have to use -print0 and | xargs -0 and it's a gigantic mess. 05:20:39 shachaf: Well, yes, but it's a gigantic mess because Unix is based around line-based IO, not \0-based. 05:20:45 You can't really grep the result of that, etc. 05:20:54 UNIX is based around byte-based I/O. 05:20:55 Yes, you don't need to because find can filter filenames itself, but that's kind of my point, it isn't modular. 05:21:11 shachaf: If you don't think the Unix shell and its tools are line-oriented, then you're delusional... 05:21:19 -!- DCliche has joined. 05:21:32 elliott: whitespace-oriented, even. in some cases. 05:21:38 Also, the way that UNIX tools are meant to be both machine-usable and human-usable doesn't really work, as was pointed out to me recently. 05:21:56 "machine-usable"? 05:21:57 Unix's design doesn't really work in general. 05:22:05 Have I mentioned @ yet? 05:22:18 ...but still, I'd rather a Unix system adhere to its philosophy, at least in broad strokes. 05:22:18 http://www.johndcook.com/blog/2010/06/30/where-the-unix-philosophy-breaks-down/ 05:22:21 this guy hasn't heard of @ 05:22:27 A consistent crappy system beats an inconsistent crappy system. 05:23:12 elliott: @? What a weird name for an operating system. 05:24:10 Hey, that's going to be replaced by the PERFECT name for an operating system in a few centuries! 05:24:14 shachaf: calling it a "name" would be using misfitting terminology of present-day operating systems, which no longer applies to @. 05:24:19 DEAR FUTURE LOGREADERS: Disregard this line and my previous line. 05:24:21 kallisti++ 05:24:27 -!- Klisz has quit (Ping timeout: 252 seconds). 05:24:32 "Unix's design doesn't really work in general." 05:24:38 Except, you know, for the entire internet. 05:24:49 elliott: Wait, what? 05:25:00 cswords_: It's true that Unix software functions perfectly fine. I'm hardly advocating Windows. Or VMS. 05:25:05 That's why I said "design". 05:25:07 elliott: I was talking about the name that \@ is substituted by, obviously, not about \@. 05:25:13 shachaf: There is no escaping. Sorry. 05:25:14 elliott: Come on. 05:25:23 shachaf: You're just going to sound incoherent in the future. 05:25:24 elliott: also did you read that stupid blog entry? the guy is talking about how programs gain overlapping features over time because it becomes difficult to communicate complex data across byte streams. 05:25:31 elliott: something that shouldn't be a problem in @. 05:25:32 kallisti: I read a few paragraphs and then got bored. 05:25:41 But yes, @ is probably the answer to whatever question he has or should have. 05:26:14 Also, De Bruijn sequences are neat. 05:26:37 cswords_: I mean, yes, Unix is probably a Good Thing, at least compared to what we could have had instead (although Multics was actually pretty well-designed and innovative for its time...), but it's way past its expiry date. 05:26:55 De Bruijn indicies... 05:27:00 So in my final today 05:27:02 We got a question 05:27:03 It was 05:27:11 cswords_: Yes, it's the same De Bruijn. 05:27:17 De Bruijn indices++ 05:27:18 "Go through this nested lambda expression and provide the de bruijn indicies for each one" 05:27:28 sounds difficult. 05:27:30 @quote kmc unix 05:27:30 >_> 05:27:31 No quotes match. :( 05:27:31 No, it's easy. 05:27:35 cswords_: That's impossible. 05:27:41 What? It's scheme. 05:27:44 It's easy. 05:27:48 Yeah, Chaitin proved it in 1982. 05:27:49 Any free variables were to be denoted with a -1. 05:27:50 You must have made a mistake. 05:27:55 I think your professor was trying to catch you out. 05:28:05 I am sure you are trolling. 05:28:06 * elliott is trolling, but would also have used a symbol instead of -1. 05:28:07 WHOA, MAN, A DE BRUIJN INDEX OF -1 05:28:11 Anyway. 05:28:13 THINK OF THE POSSIBILITIES 05:28:18 We were supposed to use a -1 if it was a free variable 05:28:21 And the expression was this: 05:28:25 shachaf: It gets the argument from one lambda IN. 05:28:28 IT'S, LIKE, A LAMBDA *INSIDE* A LAMBDA! 05:28:38 If you have two nested lambdas, it turns the language into a nondeterministic one. 05:28:45 That... that sounds pretty cool, actually. 05:28:57 ((lambda (a) (lambda (b) ((d c) (lambda (a) d))) (lambda (c) a)) (lambda (a) c)) 05:29:02 exciting 05:29:03 elliott: Well, other than how the lambda hasn't been applied yet. 05:29:10 elliott: Not to mention De Bruijn indices of 0. 05:29:10 elliott: the more non-deterministic you can make something, the cooler gets. a little known fact. 05:29:14 cswords_: Did they write it in Scheme notation? It's awfully clunky for pure LC. :( 05:29:14 Wait, I just mentioned them. 05:29:28 LC? 05:29:30 shachaf: Yeah, that's why it gets the value in the future, duh. 05:29:32 cswords_: Lambda calculus. 05:29:33 They should've used Common Lisp. 05:29:33 lambda calculus, cswords_ 05:29:34 Yes, the class was in scheme. 05:29:40 -!- MDude has quit (Ping timeout: 240 seconds). 05:29:41 wh 05:29:46 Aaanyway. 05:29:55 #'(LAMBDA (LAMBDA) (LAMBDA LAMBDA) I don't have the heart to finish it. 05:29:56 Lambda calculus in sexp is saddening. 05:29:56 Well, yeah, but presumably you didn't write a De Bruijn substitutor for the entirety of Scheme :P 05:29:57 Someone should do the de bruijns for those real quick. 05:30:03 Okay. 05:30:04 It was... unnerving. 05:30:28 unnerving? 05:30:35 Each is free. 05:30:35 sounds quite nerving to me, actually 05:30:36 he lost his nerves. 05:30:42 \ \ (-1 -1) \ (-1) ... yeah, this is ridiculous. 05:30:45 Yeah. 05:30:55 Apparently the problem was randomly generated. 05:30:59 great 05:30:59 I redid it like three times. 05:31:12 Real programmers don't use syntax, they just input the directed graph directly. 05:31:19 That's why it's called a Directed graph, see. 05:31:22 directly graph 05:31:26 Hmm, lambda calculus programs would look nice as graphs, except for the nodes. 05:31:31 real programmers usse@. 05:31:32 They'd look all sad and empty. 05:31:48 lol 05:31:55 edgemess 05:31:55 Anyway, now I"m drinking and making techno. Life is grand. 05:32:06 Wait, just use @ symbols as the nodes. 05:32:08 i'm sitting 05:32:14 cswords_: "techno" 05:32:18 o.O 05:32:21 techno 05:32:21 (Yes, use an operating system name as a node!) 05:32:23 (Future people.) 05:32:26 (That is what I will do.) 05:32:34 (It's funny because injokes are funny.) 05:32:46 elliott: the future people don't know that @ is the name of their operating system though. 05:32:48 every node labeled "elliott is cool" 05:32:51 because you renamed it to something perfect. 05:32:57 * elliott waits for cswords_ to ask what @ is. 05:33:06 I know what @ is. 05:33:08 I'm not a noob. 05:33:11 elliott: WHAT'S @ 05:33:13 You... do? 05:33:25 shachaf: It's a difficult question, because @ is impossible to describe. One might ask the same about Feather. What *is* Feather? We just don't know. 05:33:28 I've red the page. 05:33:33 cswords_: techno refers to a specific style of electronic music. Is that what you're making? 05:33:36 There's... a page... for @? 05:33:43 kallisti . . . 05:33:44 at.html 05:33:55 at.html isn't on any web servers. :( 05:34:01 Wait, what OS am I thinking of, then? 05:34:02 Hmmm. 05:34:04 cswords_ is hacking into my computer to read my top secret @ files. 05:34:10 email: at@at.org 05:34:12 lol 05:34:14 You didn't know? 05:34:17 I rooted your box hours ago/ 05:34:20 I was taking an "exam" 05:34:29 Oh, so THAT'S why all this gay porn came up. 05:34:33 I assumed I just forgot about it. 05:34:39 Hawt. 05:34:54 From this extensive evidence I deduce that cswords_ is pikhq. 05:35:00 Alas, no. 05:35:01 cswords_: yes I'm one of those people who are all pretentious about their electornic genres. 05:35:02 -_- 05:35:12 kallisti, it isn't dubstep if that helps. 05:35:18 a little. 05:35:18 If I can get soundcloud to work I'll link to some. 05:35:26 techno pretension is quite a hilarious pretension 05:35:35 Techension. 05:35:47 monqy: I'm not pretentious about just techno. I'm pretentious about electronic music genres, obviously. 05:35:53 kallisti: that's the joke 05:36:00 monqy: BECAUSE THEY'RE DIFFERENT? DO YOU SEE? YES? 05:36:02 YES. 05:36:03 yes 05:36:04 nope 05:36:06 http://esolangs.org/wiki/Everything2_Chat_Box_Archive 05:36:06 finally! 05:36:11 all I've wanted in life is an everything2 chat box archive 05:36:16 thanks to spam, I can have it! 05:36:34 we also have single fifo, animated chatrooms, bbw dating north dakota, dating program 05:36:52 *antimated 05:36:53 there was a good one earlier today but I forget what it was 05:37:02 oh yes antimated 05:37:06 even better 05:37:18 Well gosh darnit, I'm looking for a BBW dating program in North Dakota so that I can use a single FIFO to communicate with animated chatrooms. 05:37:22 LOOKS LIKE I'VE GOT IT MADE. 05:37:40 What the fuck? 05:37:42 I wonder what antimated chat rooms are 05:37:51 antimated 05:37:52 As in 05:37:53 anti 05:37:54 mated 05:37:54 cswords_: We're talking about our wiki spam. 05:37:56 How a prosperous Link Building Service Displays Profitable Results on Expenditure 05:38:00 elliott: I used my FIFO to communicate with your antimated BB mom. 05:38:00 yes!!! 05:38:07 monqy: I read that as "preposterous" first time round and it was better. 05:38:24 Gah 05:38:24 i seem to have missed white wives dating black men 05:38:27 My internet is terrible. 05:38:37 and secret friends sex chat ;_; 05:38:49 friendship sex chat. 05:38:54 You'll never get into our secret friends sex chat now!!! 05:39:02 ppc johnny chat 05:39:15 cswords_: I'm sorry that none of this makes any sense to you. 05:39:20 kallisti, http://soundcloud.com/kaosjester/sines-in-space 05:39:24 fond memories of my name is johny, what the f**k 05:39:34 Also, http://soundcloud.com/kaosjester/saws-in-bass 05:39:41 cswords_: sines in space? sounds impossible. 05:40:12 cswords_: There's no sound in space, dude. 05:40:18 Oh? 05:40:21 That's as impossible as de-Bruijn numbering lambdas. 05:40:23 But if you had a Space ship 05:40:33 And you were having a disco on said space ship. 05:40:35 By that standard sines on earth are sines in space. :( 05:40:47 F- WOULD NOT BUY AGAIN BOOK CLAIMED TO BE ABOUT SPACE BUT WAS ACTUALLY JUST ABOUT EARTH 05:41:01 wheres the sines 05:41:12 monqy: THERE ARE NO SINES IN SPACE!!! 05:41:14 Only square waves. 05:41:36 That must make space travel difficult. 05:41:45 YOU MUST MOVE UP AND DOWN RAPIDLY WHILE TRAVELING! 05:41:49 Exactly. 05:41:52 That's how the Earth travels. 05:41:55 cswords_: this is kind of like house I would say. Except there was one breakbeat part, but I guess that's okay. 05:42:04 oh there's that effect similar to that of rapidly plugging and unplugging ears 05:42:05 lawl 05:42:07 electronic genres are strange. 05:42:09 The second one is housy-er. 05:42:26 monqy: Wow, that's ... the best intuitive description ever. 05:42:34 kallisti: You knew what he meant first time, right?? 05:42:49 elliott: sure. 05:42:56 If we keep this up I will need to fetch more alcohol. 05:43:02 blinking : strobe lights :: ear plug cycling : this thing 05:43:03 We always operate at this level. 05:43:10 Only the toughened few survive. 05:43:13 monqy: :D 05:43:13 Hmmm. I feel like coding something. Balmer peak! 05:43:32 The Ballmer peak is reached at the point where you can no longer spell "Ballmer". 05:43:55 Oh. 05:43:57 I've had like 05:44:02 A guinness and half a bottle of wine 05:44:11 I'm nowhere near that drunk. 05:44:13 cswords_: Don't tell PH. 05:44:17 PH? 05:44:27 Phantom_Hoover. 05:44:29 alcohol is for old people 05:44:31 -!- GreaseMonkey has joined. 05:44:39 monqy is actually sixteen 05:44:42 monqy: you might be referring to side-chaining compression? 05:44:45 cswords_: not yet 05:44:54 lawl 05:45:05 monqy: where everything becomes softer when the kick drum hits. 05:45:11 to emphasize the bass. 05:45:13 monqy is actually 4 years old. 05:45:23 kallisti: i don't know what you're talking about im bad at techno 05:45:50 monqy: it's a good thing I'm not talking about techno specifically. -more pretentiousness- 05:46:51 It is, in fact, side-chaining compression on the bass line. 05:47:17 ok, so one envies the greener grass.. in spite of the fact that the grass is not infact greener. acting on this envy (which is always a hassle), one now envies ones initial grass which is now the greener. 05:47:45 .. 05:47:57 what 05:48:09 hi 05:48:10 "the grass is greener on the other side of the fence" 05:48:14 I live on both sides of the fence and the grass is always green. 05:48:17 cswords_: whatt porgrmus u use 4 soundz0xrz 05:48:27 Reason. 05:48:39 I make music with PURE LOGI- wait god dammit Logic is an audio program too. 05:48:52 DEAR AUDIO PEOPLE: Stop being so bloody pretentious you are not the epitome of rationality?? 05:48:57 I feel like developing! 05:49:02 oh good 05:49:04 * kallisti makes music with PURE-DA --- fuuuuuuck 05:49:12 `log developers 05:49:20 That's not developing itidus21. 05:49:22 2007-10-10.txt:15:40:34: and you have't seen it fail because web developers have to prance around until IE accepts it 05:49:26 `log developers 05:49:33 2011-08-20.txt:23:22:30: They're (according to current plans/rumours) going to release a grand total of approximately 1.1 MeeGo devices; the N9, plus the N950 "developers only" phone, which I'm counting as 0.1 because (even though it is a MeeGo device) it's not going to actually be released. 05:50:32 Stupid OpenDNS. 05:50:35 Being all lame. 05:50:36 elliott: I still need to start working on The Best Signal Processing And Music Production Library Ever (in Haskell)... right after I gain more practical experience with Haskell. 05:50:49 cswords_: 8.8.8.8 or that Verizon one that I don't recall if you believe you can escape Google's infinite clutches. 05:51:03 kallisti: Have I mentioned that your design for that was terrible and mine was awesome? 05:51:05 elliott, I have long ago accepted thgat I cannot. 05:51:12 I just don't remember how to change my DNS settings. 05:51:14 elliott: yes. I have considered different designs. 05:51:15 i'm still not certain which type of person balmer is keen on. 05:51:16 And I can't google it. 05:51:19 cswords_: vi /etc/resolv.conf 05:51:21 elliott: involving LAYERS OF ABSTRACTION. -gasp- 05:51:26 ... 05:51:38 So I'm using a windows computer for the music development, whereis where it needs to happne. 05:51:40 This is the point where we laugh at cswords_ because he uses Windows. 05:51:47 Nope. 05:51:49 * elliott begins laughter routines. 05:51:51 i use windows 05:51:51 I have a windows box, too. 05:51:53 laughe 05:51:58 I also have a mac somewhere... 05:52:04 er, linux 05:52:06 I run arch. 05:52:12 * elliott runs Arch. It's terrible. 05:52:15 But SC2 + Linux is not hte kinded thing. 05:52:18 elliott: oh right it's winter break I need to switch to Debian eventually. 05:52:20 is anything not terribel................ 05:52:21 gah, that spelling was terrible 05:52:22 By the way, I hate everything. 05:52:24 Debian is terrible. 05:52:30 Not as bad as Gentoo. 05:52:34 cswords_: do you watch pro SC2 games? 05:52:34 i run winxp sp2 05:52:36 elliott, just switch to slackware. 05:52:37 it'll be fine. 05:52:39 Debian is more terrible than, but not as obnoxious as Arch. YMMV. 05:52:40 kallisti, yes! 05:52:52 cswords_: I watch them on youtube. 05:52:55 cswords_: If I'm switching to another existing distro it'll be NixOS. 05:52:55 all the time. 05:52:58 like. daily. 05:53:07 kallisti is actually the abstract concept of StarCraft II. 05:53:35 even though i've never been a starcraft player, or a pc-game player, i will try to make more starcraft references from now on 05:53:40 cswords_: Anyway, go find your internet connection in Control Panel, and then double click it and it's in one of those tabs. 05:53:52 8.8.8.8 and 8.8.4.4. 05:54:09 God 05:54:16 I was going to try to avoid doing that much work to fix it 05:54:19 And instead just bitch 05:54:19 itidus21: you can use "canon rush" to mean any kind of cheap trick that doesn't pay off in the long run. 05:54:20 But NO 05:54:23 itidus21: *cannon 05:54:24 You have to make it sound easy 05:54:25 That's like three clicks. 05:54:32 You just can't operate on our level. 05:54:52 hmmm.. freenode is really zerg rushing me 05:55:07 verily 05:55:08 itidus21: also "I nydus'd her main" is a popular sexual reference, for some reason. 05:55:15 kallisti: Stop it stop it. 05:55:18 You're encouraging him. 05:56:12 itidus21: cannon rush to 3gate DT rush blah blah blah 05:56:15 i guess battlenet references are important too 05:56:18 you can find endless combinations 05:56:38 Wow, that's way better. 05:56:52 elliott, I've been running linux since I'm 12. Back off! 05:57:02 whoa!!!!!!! 05:57:04 fungot is running out of minerals 05:57:04 itidus21: where is samsara?." " yeah, i see what the value of the current working directory 05:57:14 cswords_: I've been running Linux since I was 10 or 11, I think. 05:57:18 I am now 5 years old. 05:57:22 That's one year older than monqy! 05:57:22 Sweet 05:57:27 You have never ran linux before. 05:57:28 Excellent. 05:57:38 Shit, there was something I needed to buy from amazon. 05:57:39 Uh, I just ran it in the FUTURE? With FEATHER? Hello? 05:57:41 I don't remember what it is. 05:57:44 You must be new here. 05:57:52 cswords_: for some reason husky has like completely stopped casting pro games. I don't understand. 05:58:00 I don't like Husky or HD. 05:58:03 feather sounds like some kind of protoss technology 05:58:05 I watch Day9 and GSL. 05:58:18 cswords_: I don't like HD but Husky is a pretty good caster. he's just not a very good player so his strategy stuff isn't good. 05:58:23 cswords_: Day9 is great. 05:58:37 FUCK 05:58:39 itidus21: Stop iiiit. 05:58:46 I needed to buy something IMPORTANT. 05:58:53 oops 05:59:02 your base is under attack 05:59:03 The lamest part about getting married is that you can't ask for knives. 05:59:21 cswords_: though I wish day9 would do just a few pro games. I like his strategy analysis but sometimes I just want to watch him cast a game. 05:59:39 kallisti, watch MLG? 05:59:55 cswords_: how? where? 05:59:57 elliott: its fairly safe since i really haven't played the game in any meaningful extent 06:00:08 When MLG happens. 06:00:12 Day9 always casts. 06:00:13 It's great. 06:00:17 cswords_: right but like... where do I view this? 06:00:20 preferably on the internet. 06:00:25 or is it like... a television thing? 06:01:33 cswords_: I remember the first time I heard day9 cast mlg, and thought he was annoying. 06:01:40 because I was accustomed to Husky's beautiful voice. :P 06:01:48 Well I can't help that your'e dumb. 06:01:50 :P 06:01:51 lol 06:01:56 It's on the internet. 06:02:05 MLG is a US-based tournament. 06:02:08 It happens about once a month. 06:02:12 They livestream the games. 06:02:14 cswords_: I changed my mind. The casting was kind of bad for the first game I watched. 06:02:19 lots of shouting. :P 06:02:34 but then I listened to more day9 stuff. 06:03:21 wow what's this here now, cswords' nick is of such a bright and morningly color 06:03:45 my eyes are rejoicing 06:04:27 WTF does that even mean? 06:04:54 er 06:05:06 -!- cswords_ has changed nick to cswords. 06:05:08 can you be more specific 06:05:18 wow what's this here now, cswords' nick is of such a bright and morningly color 06:05:35 well "what's this here now" means i'm astonished about something 06:05:48 Thanks. 06:05:50 Thanks for that. 06:06:07 well i'm going to explain the rest as well, just gimme a minute 06:06:19 cswords' nick is your nick which i see on my screen 06:06:27 when you say things, i see your nick before those lines 06:06:35 your nick is cswords 06:06:48 now, your nick has a color, as is obvious from my line 06:06:55 it is very bright and morningly. 06:06:55 was it bright and morningly 06:06:57 yes 06:06:57 :o 06:07:02 it was very bright and morningly 06:07:08 and still is 06:07:16 bright means like emits lots of light 06:07:21 Aren't. 06:07:23 What the fuck 06:07:26 all I see is grey; my eyes are rejoicing 06:07:30 Aren't all the nicks the same color? 06:07:34 Why would mine be different? 06:07:43 different clients or extensions or w/e 06:07:47 some people like colored names 06:07:49 cswords: but yeah... HD is bad. 06:07:54 no, none of the colors are the same. 06:07:55 I don't care enough to do name coloring 06:08:02 as is very common in modern irc clients 06:08:12 sometimes name coloring can be ugly 06:08:17 try always 06:08:37 i don't care enough to not do it. because it's done automatically 06:08:37 * kallisti just reads peoples' names. 06:08:39 it's amazing. 06:08:48 one time I heard of name coloring that colored both the foreground and the background 06:08:51 double ugly 06:08:55 What color is mine, oklopol? 06:09:00 bright and morningly 06:09:07 cswords: super bright morning green 06:09:23 Because mornings are green in Finland! 06:09:52 mine colors backgrounds too 06:10:00 eugh 06:10:07 Ugh. 06:10:09 WTF internet. 06:10:11 nonblack backgrounds make me sad 06:10:16 make my eyes sad 06:10:18 make me sad 06:10:19 well it makes logreading way faster 06:10:23 monqy: White on black makes your eyes sad. 06:10:38 but then again i'm sure you could do all kinds of horrible things with colors that would make it even faster 06:10:55 elliott: I prefer it a bit dimmer than white 06:11:11 I also have some green stuff going on 06:11:12 monqy: Well, pure black backgrounds in general are a bad idea on LCDs. Try #333. 06:11:26 Green on black. You're a bad person. I bet it's monospaced too. 06:11:30 It might even be aliased. 06:11:35 not aliased 06:11:42 but it's a bitmap font 06:11:48 do i lose points for that 06:11:51 oh wait 06:11:53 There are antialiased bitmap fonts? 06:11:54 i mixed up 06:11:57 aliased and antialiased 06:12:00 woops 06:12:00 white on black is my favorite irc and porn style 06:12:02 cries 06:12:09 You've pretty much lost all the points monqy. 06:12:12 It's been nice knowing you. 06:12:12 :( 06:12:22 the green is just for the 06:12:23 uh 06:12:29 "everything" 06:12:31 no 06:12:36 just for the very bottom and top 06:12:42 That's too much green, monqy. 06:12:44 where the topic goes and the info bar thing goes 06:12:45 My IRC is many colors on black with monospaced 06:12:55 what's so bad about green 06:12:57 green is coooool 06:13:12 green can be bright and morningly 06:13:14 You're not a hacker monqy. You won't be like in those movies just because you use green to make your IRC client less boring. 06:13:23 oklopol: Yes, I'll allow bright and morningly greens. 06:13:26 But only for nicks. 06:13:34 Other contexts are unworthy of the privilege of that colour. 06:13:39 i dont want to be a hacker :( but i don't have other good colors 06:13:48 blue is a bit too dim and red is a bit too bright 06:13:49 green is 06:13:51 ~just right~ 06:13:53 and also a good color 06:13:58 There are more than three colours, monqy. 06:14:00 -!- azaq23 has quit (Remote host closed the connection). 06:14:08 monqy: I think, select the color of your choice; the choice of your color does not make you a hacker or not hacker 06:14:16 -!- cswords_ has joined. 06:14:16 thanks zzo38 06:14:19 i feel better now 06:14:22 STOP PROMOTING EQUALITY 06:14:36 Ah 06:14:49 What equality? 06:14:55 i could pick grey but so all the chatter is grey and making the ui grey would be boringggg 06:15:02 Equality of green and non-green people! 06:15:05 are there other colors 06:15:10 monqy: Yes. 06:15:12 :o 06:15:16 So 06:15:22 Resetting modem = good internet 06:15:23 monqy: Haven't you upgraded to RGBOA yet? 06:15:23 Why should other people care what color you use on your IRC if other people do not use your computer? 06:15:28 Red, green, blue, octarine, alpha. 06:15:40 :o octarine 06:15:44 some people are way better than others 06:16:00 alpha would be bad because my background color is black so it would all just blend in 06:16:17 elliott: pure (==) --promoting equality 06:16:38 Nobody uses any computers. 06:16:40 :t pure (==) 06:16:41 That I won 06:16:41 forall a (f :: * -> *). (Eq a, Applicative f) => f (a -> a -> Bool) 06:16:43 Except me 06:16:46 cswords_: What. 06:17:08 -!- cswords has quit (Ping timeout: 268 seconds). 06:17:28 zzo38: would you not care if someone killed the whole population of norway just because you don't know any people worth knowing from there? 06:17:31 OOOOOPS 06:17:31 I don't know. 06:17:32 Never mind. 06:18:36 oklopol: That is different for at least two reasons. 06:18:39 elliott: why did you check the type of that... 06:18:43 tell me 06:18:49 kallisti: Magic. 06:18:52 i need to leave soonish 06:19:07 elliott: "magic" is only an acceptable answer to "how" questions. 06:19:43 in one case, someone is hurting themselves, in the other, they are only hurting (all) norwegians (to death) 06:19:44 oklopol, don't go! 06:20:16 i have to go do some programming 06:20:25 oklopol: Norway must stay. Sweden must go. 06:20:33 and before that, visit the uni to leave my friend's projector there 06:20:38 oklopol: You still program? Ever? 06:20:44 well kind of 06:21:05 `addquote in one case, someone is hurting themselves, in the other, they are only hurting (all) norwegians (to death) 06:21:07 766) in one case, someone is hurting themselves, in the other, they are only hurting (all) norwegians (to death) 06:21:14 what we do is that i stare at the screen and my friend programs, and when he has a bug i look at the screen and fix it, and program the few interesting ones 06:21:31 (staring doesn't imply looking) 06:21:40 erm 06:21:52 ones? like the few interesting bugs? i think i meant, like, things. 06:22:05 oklopol: Yes, that is one thing. If you hurt yourself on purpose then probably that is what you wished anyways..... But there is also, many other people might care even if one person does not care (note the qualified "just because you don't know any people worth knowing from there" as well). 06:22:33 well you make a waterproof point 06:22:46 i guess all i can say is LEAVING TIME, WOOOOOO 06:22:49 see you :))))) 06:23:23 :') 06:37:04 -!- Slereah_ has quit (Ping timeout: 244 seconds). 06:42:35 -!- augur has changed nick to NOTBROSEFSTALIN. 06:42:42 -!- NOTBROSEFSTALIN has changed nick to augu. 06:42:44 -!- augu has changed nick to augur. 06:59:31 -!- DCliche has quit (Quit: You are now graced with my absence.). 07:30:58 Wow. 07:31:02 Merge sort is older than bubble sort. 07:32:12 Merge sort was done in 1945 by von Neumann, bubble sort in 1956 by some grad student at Stanford. 07:33:07 aw, I was hoping quicksort would be older than bubblesort too 07:35:34 But radix sort is older still: "Radix sort dates back as far as 1887 to the work of Herman Hollerith on tabulating machines." 07:36:02 turns out people like to sort stuff fast! 07:37:19 I wouldn't be surprised if insertion sort also beat bubble-bobble, but couldn't find a reference for that, just that shell sort (as an extension of insertion sort) is from 1959. 07:37:59 modern cutting edge research into sorting algorithms includes: bogosort and quantum bogosort. 07:40:25 best case on bogo sort is even O(n) 07:40:28 !!! 07:42:02 What was the point of bubble sort? 07:42:13 Besides educational? 07:42:27 Non-seriously you could argue that the best case for any sort is O(1), happening when the array is already sorted and a random cosmic ray flips the instruction pointer (and related bits of memory, if any) so that the implementation glitches and jumps directly to the "okay, sorted" stage. 07:43:31 O(1) sorting could be possible if you maintained some kind of "sorted" bit. I'm not really sure if you could maintaining its accuracy with constant time though. 07:43:46 weroweroiijwer enghlish 07:44:15 I'm calling that bogo-best case. 07:44:37 but you could certainly turn on the sorted bit after you sort something, and then turn it off when you modify the sequence. 07:45:20 Bogo-best case for sorting is, indeed, O(1). 07:45:33 for appends/pushes/pops you could actually continue to maintain the sorted bit in constant time provided you also knew if it were ascending or descending order. 07:45:42 pikhq: oh I thought it was linear, because it has to shuffle it once. 07:46:11 oh 07:46:13 bogo-best 07:46:15 kallisti: "Bogo-best case" is the case where the list is already sorted and the instruction pointer randomly skips the sorting function. 07:46:17 not bogosort best case :P 07:46:24 gotcha 07:47:11 "Bozo sort is another sorting algorithm based on random numbers. If the list is not in order, it picks two items at random and swaps them, then checks to see if the list is sorted. The running time analysis of Bozo Sort is more difficult, but some estimates are found in H. Gruber's analysis of perversely awful randomized sorting algorithms.[1]" 07:47:15 "[1] Gruber, H.; Holzer, M.; Ruepp, O., "Sorting the slow way: an analysis of perversely awful randomized sorting algorithms", 4th International Conference on Fun with Algorithms, Castiglioncello, Italy, 2007." 07:47:26 Computer scientists having fun? How inappropriate. 07:48:14 a constant-time sort is possible for pointers to C arrays by swapping out the array with an already sorted array. 07:48:45 for example, an empty array! 07:49:34 "To our knowledge, the analysis of perversely awful algorithms can be tracked back at least to the seminal paper on pessimal algorithm design in 1984 [2]. -- Among other solutions, the formerly mentioned work contains a remarkably slow sorting algorithm named slowsort achieving running time Omega(n^(log n/(2+eps))) even in the best case." 07:49:42 These dudes certainly like their slow sorts. 07:51:17 bogosort and bozosort have the maximal worst time at O(infinity) 07:51:24 can't beat that 07:51:49 if so, I think they would fail to count as algorithms 07:52:24 (because an algorithm must terminate) 07:52:26 though isn't O(infinity) a kind of constant time? 07:52:30 where the constant is infinity? 07:52:41 it doesn't vary with the input. 07:52:42 The odds of them halting are 1. 07:52:49 olsner: Well, it's a probabilistic algorithm, and it will "almost surely" (as they say) terminate, so. 07:52:52 But they're not guaranteed to halt. 07:53:05 :P 07:53:12 With a bad PRNG, it might also in practice never halt. 07:53:16 fizzie: so "almost" algorithms then? :) 07:53:47 Though if you say "in practice", I suppose it'll halt at heat death time, if not earlier. 07:53:49 Quantum bogosort is much better. 07:54:16 Yay, O(n). 07:54:38 if you're lucky 07:54:44 your universe only gets a few of those perfect sorts. 07:55:10 But by MWI and quantum immortality, I'm sure to be in the universe that gets perfect sorts! 07:55:13 :P 07:55:25 consider the universes in which a bogosort was needed to run at O(n) in order to save humanity 07:55:35 now consider the ones that failed to do so. tragic. 07:55:42 Tragic indeed. 07:55:53 now consider the ones that succeeded. TRIUMPH. 07:56:09 Should've had broken world destruction mechanisms. 07:56:16 I think it's funny how the "List of dates predicted for apocalyptic events" also lists heath death of the universe, at (a remarkably stetson-harrison looking number of) 10^100 years, claimed by "various scientists". (And the Sun's red-giant stage in about 5 billion years, also claimed by "various scientists".) 07:56:59 fizzie: the only true apocalypse is IPv4 address exhaustion. 07:57:20 Don't say that, someone's going to add IPv4 exhaustion predictions onto that list. 07:57:22 * kallisti needs to get a static IP to Prepare. 07:57:37 but maybe even that won't save me! 07:58:23 for appends/pushes/pops you could actually continue to maintain the sorted bit in constant time provided you also knew if it were ascending or descending order. 07:58:36 kallisti: the word you are looking for here to explain why this doesn't make everything O(1) is "amortised" 07:59:00 elliott: wow thanks I had no clue what that was. 07:59:09 Clearly. :P 07:59:19 I "have" two IP addresses, but sadly they're just assigned to me by the ISP and not actually allocated to myself, so when the Ipocalypse hits they can just terminate my contract and reclaim them. :( 07:59:33 If only Ilari were here. 07:59:37 fizzie: Track down Ilari for us. 07:59:40 Bring him home. 07:59:50 I don't even know his last name. 08:00:06 ReaderT seem to make a Kleisli compose, for example you make a monoid of (ReaderT x m x) by Kleisli composition 08:00:07 There are quite a few of Ilaries in Finland. 08:00:41 mempty = ReaderT return; mappend (ReaderT x) (ReaderT y) = ReaderT (x >=> y); 08:00:46 finland, famous for its ilaries 08:01:02 Because it is also like a Kleisli category 08:01:08 elliott: "amortized" doesn't explain in what way. 08:01:43 -!- monqy has quit (Quit: hello). 08:01:43 olsner: Land of a thousand Ilaries. 08:02:09 fizzie: Unfortunately grepping produces naught. 08:02:18 hmm, some sense of the IPv4 address exhaustion has already happened though, hasn't it? 08:02:19 Wait, Ilari is online now. 08:02:23 fizzie: As a Finn you must invite Ilari back. 08:02:24 olsner: Yes. 08:02:44 it just hasn't yet become apocalyptic 08:02:49 olsner: In fact, land of the 13724 Ilaries, at December 12th, according to the Population Register Centre. 08:02:57 fizzie: wow! 08:03:32 *Ilarien 08:04:15 Or the 13724 male Ilaries and "less than 15" female ones, even though it's a male name. (It doesn't give exact numbers if there are <=5 people in the particular name/gender/year-of-birth-range bucket.) 08:04:54 Also some of those are dead. 08:05:16 Of surnames it gives different living/dead counts, but of first names no. :/ 08:05:25 Det finns 206 män som har förnamnet Ilari. Av dessa har 20 namnet Ilari som tilltalsnamn. 08:05:37 but no swedes with ilari as their surname, apparently 08:05:37 why do I have 20 cents in my paypal. 08:06:03 There are "less than 5" dead people with the surname "Ilari"; none living. 08:06:23 no living dead people? 08:06:52 10 living, 7 dead, and "less than 5" had-the-name-earlier-but-not-any-more people with my surname. It's an exclusive club. 08:07:22 -!- zzo38 has quit (Remote host closed the connection). 08:09:01 oh, 3 people in sweden have olsner as their surname 08:10:19 fizzie: INVITE ILARI BACK ;__; 08:10:29 hes our bef 08:10:29 bff 08:10:31 fbfbf 08:10:59 hmm, 2011-04-30 was the last day Ilari was in here 08:11:03 Ilari: i am _so_ tempted to ban you for ignoring my comments... 08:11:12 last non-join/part line mentioning Ilari before he left :P 08:11:25 and there are 16 swedes (all men) with the name Django 08:11:34 I don't want to, it would be a SOCIAL INTERACTION THING, I don't do those. 08:11:43 olsner: It takes 16 to Django. 08:11:46 fizzie: I KNOW YOU'RE A FINN BUT CAN'T YOU NOT BE A FINN JUST FOR A LITTLE WHILE? 08:13:32 <=20 Djangos in Finland; <=10 male, <= female; <=5 men born in 1980-99, <=5 women born in 1980-99, <=5 men born in 2011, <=5 women born in 2011. So during this year there's been at least one boy and girl both named Django. 08:13:46 Wonder if they're named after the web framework. 08:13:57 Also whether they're in the same family. 08:14:05 * elliott decides to name his future children after web frameworks. 08:14:16 ASP.NET MVC is such a good baby name. 08:14:32 "Little Aspy", you can call him/her. 08:14:41 /it. 08:18:59 fizzie: what are you using to determine those name-related statistics? 08:19:23 the department of name-related statistics, obviously 08:22:26 There's a web-terface to our population registry; it can look up given names (and return a histogram-ish thing of counts per gender/birth-year-range) and surnames (counts per gender/{current name,ex-name,deceased}). 08:22:42 http://verkkopalvelu.vrk.fi/Nimipalvelu/default.asp?L=3 08:25:07 "verkkopalvelu" Oh, Finland, your non-Indoeuropeanness is so strange. 08:27:52 Lit. "network service". 08:28:21 The Population Information System does not contain the surname you searched for 08:29:45 not a big surprise. 08:30:10 does it contain sweden too fizzie? 08:30:23 or just finland finland 08:30:40 different countries, man 08:31:14 the swedish counterpart: http://www.scb.se/Pages/NameSearch____259432.aspx 08:32:08 they actually have that in english too, but since swedish is indo-european you should have no problems understanding it 08:33:36 fizzie: Does it contain Russia? 08:33:40 How about France? 08:35:26 Huh, Hitchens died. 08:52:21 elliott: so does infinite time technically count as a sort of constant time or does infinity not work like that. 08:52:51 kallisti: "Infinity" is not a real number. 08:52:55 or do algorithms not work like that. since they must always halt. 08:52:57 elliott: I'm aware. 08:53:36 Can I just say "no, it doesn't count" or will you ask why? 08:53:44 no that's fine. 08:54:14 No, it doesn't count. 08:55:21 but why? it doesn't vary with input. 08:55:28 >:) 08:55:30 It's also a non-number. 08:55:46 is big O constrained to reals? 08:56:06 kallisti: I'm not answering the "why", that's why I checked first. 08:56:07 I guess so, yes. 08:56:52 elliott: Well, there's the unexplanative answer. 08:56:57 "It just doesn't work that way". 08:57:02 I'm going with that. 08:57:09 And considering sleep. 08:57:42 I ask because Wikipedia lists bogosorts worst case complexity at O(infinity) 08:57:53 which I'm guess is not an actual thing but just an intuitive idea? 08:58:00 As far as I'm aware. 08:58:33 Sure O(\infty) makes sense. 08:58:40 See http://en.wikipedia.org/wiki/Big_O_notation. 09:00:52 so O(infinity) is O(g(x)) where g(x) = infinity 09:00:59 LOOKS PRETTY CONSTANT TO ME. :> 09:01:07 constantly infinite. 09:01:40 Note the bit about "reals" there. 09:01:50 \infty is not in R. 09:01:56 yeah I noticed that. 09:02:51 so then the O(infinity) that makes sense to elliott is not the thing that's being described here. Though maybe I'm missing some section about infinity. 09:03:39 f(x) = O(\infty) iff there exists a positive real number M and a real number x_0 such that |f(x)\ <= M|\infty| for all x > x_0 09:03:48 f(x) = O(\infty) iff there exists a real number x_0 such that |f(x)\ <= |\infty| for all x > x_0 09:03:53 f(x) = O(\infty) iff there exists a real number x_0 such that |f(x)| <= \infty for all x > x_0 09:04:04 Everything is <= \infty, blah blah blah 09:04:11 It's about growth, \infty makes perfect sense there 09:04:19 It means unbounded growth 09:04:47 ah okay. O(1) is no growth. 09:04:56 YES, I CAN INTUIT THIS. 09:05:17 but I don't grok the math much. Soon I'll be taken an algorithm analysis class though. 09:05:20 so maybe I'll actually learn something. 09:05:37 It is... really not difficult, f(x) here is the number of steps f takes to complete. 09:05:44 no I get all of that. 09:05:47 Machine instructions, whatever, it's all constant factors so it ends up equivalent. 09:05:50 Once you go Inuit, you never come out of it. (elliott: that's an isometric quote this time.) 09:06:11 elliott: I understand what the function represents. 09:06:35 fizzie: Thanks for letting me know. 09:07:02 I'm trying to find it but I just recall that the name wasn't very related to the contents. 09:07:20 http://isometric.sixsided.org/strips/you_dont_go_back 09:07:24 Related enough. 09:07:27 It's even on the front page. 09:07:30 Oh. 09:07:44 I was being too diffikult. :/ 09:07:46 This is a good comic. 09:07:47 elliott: oh hmmm, big O notation really isn't saying much at all. 09:07:50 So much better than Station V3. 09:07:53 elliott: it basically eliminates constant factors. 09:07:59 kallisti: You only just realised? 09:08:01 in the actual definition 09:08:09 elliott: no I knew that just not /how/ 09:08:17 I have never actually sat down and studied the definition of big O 09:08:20 Saying an algorithm is O(g(n)) is just saying that the number of steps it takes is g(n), modulo constant factors. 09:08:26 just what it means intuitively. 09:08:30 elliott: yes yes I know. 09:08:36 Well, now you know twice. 09:08:43 So that's the full battle. 09:09:12 elliott: I thought perhaps there was more to it than that. 09:09:22 Come on guys, don't G.I. Joe references satisfy you?!?!?! 09:09:26 It's FUNNY. 09:09:35 fizzie: Tell me you got it. 09:09:43 elliott: I have no idea what G.I. Joe is. 09:09:51 The only thing I've ever seen is references. 09:09:52 Yes, yes, twice a half is the whole enchilada, sure. 09:09:53 shachaf: YOU'RE JUST NOT GOOD (BAD) ENOUGH FOR US 09:09:55 In particular, that reference. 09:10:14 I have actually watched *several episodes* of the animated series. 09:10:16 elliott: lawyer time: it doesn't /have/ to be "steps" 09:10:33 elliott: it could be oranges, for example. You could have an orange orchard algorithm. 09:10:36 kallisti: Yes it does; big-O in algorithms is always referring to the time the function takes. 09:10:46 It does? 09:10:55 elliott: not space? 09:10:55 shachaf: Well, in the kind of low-class dreck /kallisti/ will be reading. 09:11:01 Or that, yse. 09:11:02 yes. 09:11:04 lol 09:11:04 But not oranges. 09:11:10 it COULD be though 09:11:16 there is no unit specified. 09:11:18 elliott: It could be "comparisons" or "swaps" or something. 09:11:30 I guess those count as steps. 09:11:33 it could be people. the rate of growth of people ignoring uh, multiplication. 09:11:42 In fact, if you broaden your definition of "step" enough, anything counts as a step. 09:11:48 shachaf: That's why I clarified to "time". 09:12:11 shachaf: But we can just fix the definition of "step" to something Turing-machiney which has O(1) integer arithmetic, and we'll b done. 09:12:11 in minecraft, n could be boredom. 09:12:12 *be 09:12:19 constant factors could include how prone you are to boredom 09:12:26 but the rate of growth is always factorial for everyone. 09:12:27 :> 09:12:38 O(1) integer arithmetic? 09:13:19 shachaf: People tend to assume that when calculating big-Os. At least in my experience. 09:13:36 people who actually play minecraft just have an enormously tiny constant factor, so they haven't realized they're bored yet. 09:15:14 * kallisti sound maths. 09:15:32 elliott: By the way, huge pages didn't magically make my thing faster. :-( 09:15:43 shachaf: That's because it's NoSQL. Try adding some SQL and it'll be fast. 09:15:57 Who said anything about NoSQL? 09:16:13 Memcache is, like, NoSQL, so you're NoSQL too, so EVERYTHING YOU TOUCH IS NOSQL. 09:16:21 I suppose this program doesn't have any SQL support. 09:16:39 Quite a lot of things are NoSQL, come to think of it. 09:16:46 NoSql could easily be a rip-off band copying NOFX 09:16:48 My toothbrush is NoSQL. 09:16:53 That's why us Brits have such bad dental hygiene. 09:17:22 * elliott is kidding; he doesn't actually have teeth. 09:17:54 I thought it was because you ate limes all day. 09:18:03 limes and tea. 09:18:19 90% of the britons diet. 09:18:21 kallisti: That was the predominant hypothesis before Newton invented science and discovered that what we needed was a good dose of SQL. 09:18:31 lolwat 09:20:00 elliott: Men, remember that it was my citrus laser which protected you from the space scurvy! (I've got that comic in my brain now, thanks to earlier.) 09:20:00 my plan for future success: invent time machine; travel to 90s; invest in promising startups; exploit stupid things like poor input sanitization and javascript validation 09:22:03 other plans: take versions of present day open source software and sell it to somebody for last sums of money (would that even work???) 09:22:11 s/last/vast/ 09:23:06 You could sell the completed Hurd to Stallman in the 80s. 09:23:19 fizzie: no such thing 09:23:53 (haha hurd humor) 09:29:13 candide's ",english", the most useful bot-command ever: http://codepad.org/EaZo3jrm 09:29:18 It translates C code to English. 09:36:30 fizzie: What is that function? 09:36:59 Hey shachaf, take a look at this (probably) GHC bug: http://stackoverflow.com/questions/8531997/adding-ghcis-inferred-type-signature-causes-an-error 09:37:00 It's a brainfuck interp; I just picked something short. 09:37:04 The last line is a punchline 09:37:10 I HEAR YOU'RE A CONNOISSEUR OF THEM. 09:37:38 fizzie: Hey, it turns DeCSS into something legally redistributable... 09:41:27 elliott: Not as good as the one where it deletes your source code. 09:42:13 o.O 09:43:17 ACTION �n����������n�p�@�?����U`>�1�R`>A�.���r��r��r��r��r��r��r��r�p��0s���������@s��t� �?����U`>W1�R`>A�.��Sw�Sw�Sw�Sw�Sw�Sw�Sw�Tw��t���w����������w�y��?����U`>ǰ�R`>A�.���{��{��{��{��{��{��{��{�y��0|���������@| 09:43:23 shachaf: Hi. 09:44:11 Sgeo: "ghc had a bug once where it deleted the source file if it had a type error. Quite sensible, I think." --augustss 09:44:14 I hope that random memory I just pasted didn't have anything confidential in it. 09:44:21 Or the HIPSTER 2011 TWITTER VERSION, http://twitter.com/#!/bos31337/status/116372971509121025. 09:44:27 shachaf: You forgot the terminating one-byte. 09:44:48 Hey, snow. 09:45:20 Unicode snow? 09:45:23 Yes. 09:45:26 IRL. 09:45:28 IRL Unicode snow. 09:45:41 elliott: Note that the [] is apparently superfluous. 09:46:05 elliott: I.e., f' :: a -> F a b; f' a = f a has the same problem. 09:46:34 shachaf: Yikes. 09:46:57 shachaf: Can I quote you on that? 09:47:42 I suppose. 09:47:50 Don't worry, I won't bother attributing it. 09:47:55 :p 09:49:03 "I am never forget the day I first meet the great elliott. In one word he told me secret of success in mathematics." 09:49:28 PRECISELY. 09:49:33 There's REPUTATION at stake here!!!! 09:49:41 I put it in quote marks though, so everyone knows I don't really "believe" it. 09:50:26 -!- elliott has quit (Remote host closed the connection). 09:51:44 Aw, elliott's gone. I was about to tell him I simplified it even further. 09:53:04 @tell elliott type family F a; f :: x -> F a; f = undefined; f' a = f a 09:53:04 Consider it noted. 10:02:04 -!- elliott has joined. 10:02:09 I'm back now. 10:02:09 elliott: You have 1 new message. '/msg lambdabot @messages' to read it. 10:02:12 @messages 10:02:12 shachaf said 9m 8s ago: type family F a; f :: x -> F a; f = undefined; f' a = f a 10:02:17 And HUNGRY FOR REPUTATION. 10:02:49 shachaf: Also, surely you need a type signature on that f' for it to fail. 10:03:02 elliott: I know. 10:04:09 shachaf: Nice tip. I'll do you one better still: type family F a; x, y :: F a; x = undefined; y = x. – Daniel Wagner 1 min ago 10:04:21 I HAVE TO REPUTE FAST AND SHACHAF TOO SLOW 10:04:51 elliott: While you were gone I gave my improvement to dmwit in #haskell. 10:04:58 So really everything here is a derivative work of me. 10:05:07 TRAITOR!!!! 10:05:34 shachaf: (At this point I realise that that guy is dmwit.) 10:05:43 * elliott is a clever, clever person. 10:05:54 elliott: It's OK, he realized that you were ehird a little while before. 10:06:17 I think he realised I'm ehird pretty quickly, seeing as it's right there below my answer. 10:06:40 elliott: When I mentioned "elliott" in IRC, I mean. 10:06:57 shachaf: I think what we can learn from this is to never rely on you for plagiarisation. 10:07:29 @tell shachaf he's a bad person. 10:07:30 Consider it noted. 10:07:36 -!- elliott has quit (Quit: DRAMATIC EXIT). 10:07:50 @messages 10:07:50 elliott said 21s ago: he's a bad person. 10:25:28 -!- Jafet has joined. 10:49:58 -!- elliott has joined. 10:55:00 -!- MSleep has joined. 11:26:39 -!- cheater has quit (Ping timeout: 248 seconds). 11:27:59 -!- cheater has joined. 11:32:42 -!- cheater has quit (Excess Flood). 11:33:55 -!- cheater has joined. 11:36:31 -!- cheater has quit (Excess Flood). 11:36:58 -!- cheater has joined. 11:40:06 -!- Phantom_Hoover has joined. 11:40:41 What,, are,,, the hap 11:40:41 Phantom_Hoover: You have 2 new messages. '/msg lambdabot @messages' to read them. 11:42:26 -!- cheater has quit (Ping timeout: 244 seconds). 11:43:05 -!- cheater has joined. 11:45:00 -!- cheater has quit (Excess Flood). 11:46:11 -!- cheater has joined. 11:50:39 -!- cheater has quit (Ping timeout: 248 seconds). 11:56:22 -!- cheater has joined. 11:59:43 -!- cheater has quit (Excess Flood). 12:01:01 -!- cheater has joined. 12:04:35 -!- cheater has quit (Excess Flood). 12:31:24 Hmm, Christopher Hitchens is dead. 12:31:40 Was he the terrible Hitchens or the— wait both Hitchenses were terrible. 12:39:12 -!- GreaseMonkey has quit (Quit: The Other Game). 12:39:44 -!- Ngevd has joined. 12:40:15 Hello! 12:44:16 GOODBYE 12:44:17 hi 12:58:45 Well, I've started my first BytePusher project 13:01:53 I saw. 13:02:06 It will take a while 13:02:10 BUT IT WILL BE EPIC 13:02:47 Also, it is snowing. 13:03:06 I don't know if you know this, but it is true 13:03:48 No, I live in Finland. 13:03:51 It never snows here. 13:04:56 It's not snowing here :( 13:06:49 Serves you right for not going to Edinburgh from York via Carlisle, Dumfries, and Glasgow 13:09:38 I'm so sorry. 13:09:51 Hang on. 13:10:00 We need ais523 to tell us if that would be legal 13:10:22 Ngevd: You could read the book yourself! 13:10:31 I REFUSE 13:11:04 "Enthusiasts using the routeing guide to identify good value travel often use the two together." BUT WHY 13:14:24 http://blackboardsinporn.blogspot.com/ 13:14:35 a) why is this a thing; b) why is this such an amazing thing 13:15:03 I've seen that site before! I am hipstererer than thou. 13:15:11 (I spend my days googling for blackboards in porn.) 13:16:40 -!- derdon has joined. 13:17:35 "Unfortunately, despite this good academic work, Dr Lagina is entirely unsuited to a career in education due to his surname. It would be no use trying to insist on a different pronunciation such as La-GHEE-na as students of any age will still make cruel remarks – it is little wonder that his detention list is so long. It is a shame that no careers officer ever tried to dissuade him from his current employment path, though he is still young enoug 13:17:35 h to change his vocation. It is either that or change his name: even a teacher should be able to afford the £33 fee for a Deed Poll, though perhaps he has already changed it from something even more embarrassing, like Dr Lesticle, Dr Lyphilis or Nick Clegg." 13:17:36 :D 13:20:30 * Phantom_Hoover wonders if there's a pro-SOPA subreddit. 13:21:44 Phantom_Hoover: Does your contrarianism have no bounds??????????????//////////1111 13:22:15 http://www.reddit.com/reddits/search?q=sopa ;; Well, there's /r/SOPACIRCLEJERK. 13:33:59 -!- sebbu2 has joined. 13:34:00 -!- sebbu2 has quit (Changing host). 13:34:00 -!- sebbu2 has joined. 13:35:59 -!- sebbu has quit (Ping timeout: 255 seconds). 13:42:17 -!- ais523 has joined. 13:42:29 -!- Betawolf33 has quit (Quit: Quick, say something cutting!). 13:42:43 -!- Vorpal has joined. 13:42:53 -!- Betawolf has joined. 13:43:00 -!- Betawolf has left. 13:50:18 hi 13:50:39 Hello! 13:52:42 -!- derdon has quit (Remote host closed the connection). 14:12:16 -!- Ngevd has quit (Ping timeout: 244 seconds). 14:13:50 -!- Patashu has quit (Quit: MSN: Patashu@hotmail.com , Gmail: Patashu0@gmail.com , AIM: Patashu0 , YIM: patashu2 , Skype: patashu0 .). 14:14:01 -!- elliott has quit (Ping timeout: 240 seconds). 14:28:37 -!- pikhq has quit (Ping timeout: 245 seconds). 14:28:43 -!- pikhq has joined. 14:35:44 -!- cheater has joined. 14:38:06 -!- kmc has joined. 14:41:21 -!- cheater has quit (Ping timeout: 252 seconds). 14:45:40 -!- cheater has joined. 14:46:28 -!- cheater has quit (Excess Flood). 14:47:47 -!- Slereah_ has joined. 14:51:40 -!- cheater has joined. 14:51:40 -!- cheater has quit (Excess Flood). 14:52:11 -!- cheater has joined. 14:54:05 -!- cheater has quit (Excess Flood). 14:56:15 -!- cheater has joined. 14:56:23 -!- cheater has quit (Excess Flood). 15:01:16 -!- Ngevd has joined. 15:06:30 now we need to invent an esolang called Single Fifo 15:06:54 it's the most ontopic name a spambot's come up with yet, even if it's not as /funny/ as My name Is Johny, what the F**K??? 15:14:17 -!- cheater has joined. 15:16:23 -!- copumpkin has quit (Quit: Computer has gone to sleep.). 15:19:22 -!- cheater has quit (Ping timeout: 240 seconds). 15:19:22 -!- sebbu2 has changed nick to sebbu. 15:40:02 -!- copumpkin has joined. 15:44:39 -!- kmc has quit (Quit: Leaving). 15:49:02 -!- sebbu has quit (Read error: Connection reset by peer). 15:49:07 -!- kmc has joined. 15:49:27 -!- sebbu has joined. 15:49:27 -!- sebbu has quit (Changing host). 15:49:27 -!- sebbu has joined. 16:19:28 -!- Taneb has joined. 16:20:21 -!- Ngevd has quit (Ping timeout: 240 seconds). 16:20:52 hmm, I just walked out of the office Christmas party, because I didn't understand it 16:21:03 Oh god. 16:21:04 Why. 16:21:16 I, umm, just don't get it 16:21:33 it's like everyone's just turning up and acknowledging that it's a Christmas party 16:21:37 aren't those things meant to have some purpose? 16:23:14 Naw 16:24:31 so why do they happen at all? 16:24:44 it just seems like a huge waste of time and organisation effort for everyone involved 16:24:54 Pretty much 16:25:32 that doens't explain why they hapen 16:25:33 *happen 16:26:39 -!- KingOfKarlsruhe has joined. 16:36:29 -!- Taneb has quit (Ping timeout: 248 seconds). 16:44:25 -!- Ngevd has joined. 16:57:07 -!- MSleep has changed nick to MDude. 16:58:10 -!- Ngevd has quit (Ping timeout: 240 seconds). 16:59:49 -!- Ngevd has joined. 17:07:47 -!- derdon has joined. 17:07:49 ais523: EGGNOG BODY SHOTS WOOOOO 17:07:49 Cobalt comes out sometime today! 17:08:14 Gregor: I don't think it's that sort of Christmas party 17:08:29 ais523: Then MAKE IT that sort of Christmas party! 17:16:17 We just had a free lunch. 17:16:32 Can't say I minded that part. 17:17:07 Though that was for the whole "school" (~1500 employees); the departmental party was more partyish. (I.e. a free dinner instead.) 17:19:33 I've always assumed their main purpose is to be some sort of a collective present from the company/department/organization/whatever to the people, in that they're being given free consumables + someone pays the rent for a place where they can socialize; wasn't aware of any sort of hidden deeper purpose there. 17:20:22 fizzie: there doesn't even seem to be socializing, though 17:20:25 just… noting that people are there 17:21:46 Well, our department party had socializing. Yesterday's lunch not so much, but maybe it was the 600-or-so people who were mostly unfamiliar. On the other hand, it *was* in just the lobby of the building next door, so that one I interpreted as a free lunch coupon from the school. 17:23:45 (I may have a slightly phdcomics-y "free food" focus on events.) 17:23:47 "Yeah, we had a Christmas party. It was on the third floor of a building nearby, in some Real Estate company's office. I didn't recognize anybody there, but the food was good!" 17:24:31 Sadly, it wasn't especially good. 17:24:51 Except for the quality/price ratio, which is easy to get up by providing non-negative-quality food with zero cost. 17:25:45 If the quality was /precisely/ zero though then they ratio would be /NULLITY/ 17:26:54 Sadly our food scientists are unable to obtain absolute zero (aka "the ultimate meh") in food quality yet. 17:29:03 fizzie: there doesn't even seem to be socializing, though 17:29:12 So noöne is talking to anyone else. 17:30:08 they're just leaving one at a time after realising they have no reason to be there 17:30:56 The aisiest party ever. 17:31:34 nah, a party entirely full of me and duplicates of me would go fine 17:31:41 assuming there were actually multiple people there 17:31:49 it wouldn't work too much like normal parties, though 17:52:47 Is jedit usually considered decent? 17:56:15 gah, there are a large number of people in the atrium wielding umbrellas 17:56:28 I think it's connected to the Christmas party somehow, but don't want to delve too deeply into it 17:56:41 Sgeo: it's entirely usable 18:17:50 -!- Ngevd has quit (Ping timeout: 240 seconds). 18:27:59 -!- Ngevd has joined. 18:54:27 @pl \x -> length (filter (\y -> length y == 3) (nub (concat (concat (map subsequences (permutations x)))))) > 0 18:54:27 (> 0) . length . filter ((3 ==) . length) . nub . join . join . map subsequences . permutations 18:58:04 Hmm 18:58:15 pl looks easier to read, I think 18:58:27 Neither of them are what I wanted... 18:58:45 Although I did trip up on the ((3 ==) . length) at first 19:00:02 Some variation of map subsequences (permutations x) should be in the final 19:00:11 But beyond that I just confused myself 19:04:30 @pl \x -> any (15==) $ map sum $ filter ((3 ==) . length) $ nub $ concat $ map subsequences (permutations x) 19:04:30 any (15 ==) . map sum . filter ((3 ==) . length) . nub . join . map subsequences . permutations 19:04:34 Uh 19:04:45 You ... did get a variation of map subsequences (permutations x) 19:05:01 So that is what I wanted 19:05:13 I have no idea what you want, but it's possible. 19:05:37 Somehow, it's for my stupidly complicated naughts and crosses game 19:05:46 (> 0) . length . filter ((3 ==) . length) . nub . join . join . map subsequences . permutations is the same as 19:06:19 \x -> (> 0) . length . filter ((3 ==) . length) . nub . join . join $ map subsequences $ permutations x 19:06:40 I think 19:09:59 ,,,, 19:11:24 you think? 19:14:05 that's a 4D list. 19:14:13 what is it for? 19:14:38 Who are you asking? 19:14:44 relevant persons. 19:15:12 The bit of code happens to be for seeing whether a game of naughts and crosses has been won 19:15:20 ah 19:15:58 so the input is two-dimensional? 19:16:08 :t permutations 19:16:09 forall a. [a] -> [[a]] 19:16:11 :t map subsequences 19:16:12 forall a. [[a]] -> [[[a]]] 19:16:16 oh no 19:16:19 one dimensional. 19:16:21 okay. 19:16:49 or... 19:16:53 SO MANY DIMENSIONS AAAAH 19:17:50 I'm going to guess 2D because that would make sense. :P 19:18:02 The type signature is Num a => [a] -> Bool, I thin 19:18:03 k 19:18:22 yes that's correct. 19:18:41 that's simply because it can work on lists of arbitrary dimension. 19:18:53 but it may not be relevant to what you're trying to solve. 19:20:04 Tic-tac-toe, also called wick wack woe (in some Asian countries) and noughts and crosses (in the UK, Australia, New Zealand, South Africa, India and the rest of the British Commonwealth countries) 19:20:09 I like how US-centric Wikipedia can be. 19:22:39 http://en.wikipedia.org/wiki/Wikipedia:LAME#Spelling 19:27:53 Who was it that was asking me about "classical" composers? 19:28:01 But is also never on while I'm awake. 19:30:54 Chopin is the only clsaasical ocmpostr 19:31:14 ... wow. 19:31:22 I was Chopin for more from you, kallisti 19:31:24 That statement is so bizarre on so many levels. 19:31:34 Ngevd: THAT IS NOT HOW CHOPIN IS PRONOUNCED. 19:32:13 I pronounce it "showpan" 19:32:27 roughly 19:32:56 Showpa(french sound) 19:33:19 And hence, not "hopin'" with a 'c' X_X 19:33:35 Gregor OFFENDED 19:34:07 Gregor: exactly how many levels is my statement bizzare on? 19:34:15 three? 19:34:20 I've got a whole Bach of these 19:34:40 ...... 19:35:15 kallisti: 1) Not a classical composer, 2) not a pre-20th-century composer people usually think of in the top five, making "only" bizarre, 3) "clsaasical", 4) "ocmpostr" 19:35:34 Gregor: I grouped the misspellings into one level. 19:36:11 I like Chopin 19:36:18 but doesn't the Romantic period count as a period of classical music? 19:36:30 kallisti: No, the classical period counts as a period of classical music. 19:36:30 Classical and Romantic are distinct 19:36:46 hmmm, okay. 19:37:31 I think someone else would disagree though. 19:37:41 And they would be wrong 8-D 19:37:48 someone who knew what they were talking about even. As the "classical period" is not the only source of "classical music" 19:37:48 Not all Classical music is classical music 19:38:23 When people group Mozart and Borodin into the same style of music, I respond "well, blues and indy-grunge are basically the same, so I call them both 'modern music'" 19:38:38 yes, that's accurate. 19:38:42 THE VENN DIAGRAM OF MUSIC. 19:39:09 http://www.amazon.co.uk/Venn-That-Tune-Bringing-Poetry/dp/0340955678/ref=sr_1_1?ie=UTF8&qid=1324064329&sr=8-1 19:39:41 I think you could probably make a distinction between Western classical music and classica era music, with "classical music" meaning either the more general or the more specific depending on the context. 19:40:04 +l 19:40:57 if you're in a class about musical history, "classical music" would probably not be how you would describe Romantic period music. 19:41:33 The problem is that part of the reason why people are so quick to dismiss all music more than a hundred years old is that everybody else is so quick to categorize it as one huge group. 19:41:46 Gregor: lame. 19:41:52 As if Rigoletto and Bach's Air on G are one in the same. 19:42:09 everyone knows Bariouqe is teh only clsaasical 19:42:14 X-D 19:43:05 incidentally, I've taken a liking to a lot of "very very new" "classical" music. 19:43:37 I think they call it like "alt classical" or something? 19:43:41 something silly like that. 19:44:22 I've heard the terms "neo-classical" and "modern classical" (which are both weird) 19:45:32 I think this is even newier 19:45:41 How 'bout modern classical-influence neo-jazz fusion (lol I'm putting so many nonsense words here) 19:45:52 neo-jazz fusion? definitely not. 19:45:59 http://erictheallen.com/music/Contrafunktus.mp3 19:46:14 I think you're just genre pretentious. GOSH I fucking hate those people. 19:46:32 (see: electronic music genre pretentious earlier) 19:46:36 I'm mostly just inventing words here :P 19:47:08 Gregor: well no, that's not where the pretentiousness arises. It's the insistence that "classical" refers to a specific historical period in absolutely all contexts 19:47:12 so "modern classical" is impossible. 19:47:18 or something. 19:48:11 in much the same way that I think people use "techno" when they really mean "electronic music" 19:48:34 the difference being that I'm totally right. :P 19:49:55 I see you have no comment on my link though :P 19:50:55 There's gotta be an easier way to do what I'm trying to do 19:50:56 oh I was too busy being right, I stopped paying attention to everyone else. 19:50:58 * kallisti clicks. 19:51:50 Ngevd: what kind of possible inputs do you have for your problem? 19:52:14 Subsets of [1..9] 19:52:17 Gregor: noice 19:52:23 But not that problem 19:52:33 It's making that thing useful 19:52:39 Ngevd: so this is a theoretical problem and not part of something more practical? 19:52:46 oh 19:52:49 okay. 19:52:57 Wait, OF COURSE 19:53:00 kallisti: That's a friend of mine whose current career is "trying desperately to be noticed in New York" :P 19:53:04 Of course? 19:53:05 YES 19:53:10 Gregor: sounds difficult. 19:53:10 It's surprising just how unmoonlike the far side of the moon looks. 19:53:18 I just need some sort of version of Either that has three things 19:53:31 :D 19:53:33 Either a (Either b c) :P 19:53:44 kallisti, perfect. 19:53:53 or you know, like, an ADT. 19:54:09 Actually, even better, Maybe (Either Piece Piece) 19:54:10 I've read those are useful. 19:54:15 * Phantom_Hoover didn't remember if disjoint union was associative for a second there. 19:54:28 Or Maybe (Either Int Int) 19:56:10 Gregor: "eric the allen"? 19:56:45 Oh, hey, Cobalt is out 19:56:50 kallisti: Eric [of] the [house of] Allen :P 19:57:17 -!- zzo38 has joined. 19:57:17 kallisti: Which of course is ultimately just his name, with "the" in the middle because all other combinations of domain names were taken. 19:57:24 okay.. 19:57:45 kallisti: It has more relevance to his name than codu.org has to mine :P 19:57:50 Ngevd: are you making a tic tac toe AI? 19:58:02 kallisti, that would be easier 19:58:20 Gregor: codu is pretty catchy though it could easily be a business name 19:58:30 kallisti, I'm just making a game 19:58:41 Ngevd: a game of tic tac toe? 19:58:49 Gregor: though I pronounce it as "code you" 19:58:55 kallisti, NO 19:59:12 Naughts and Crosses, for I is a citizen of two different commonwealth countries 19:59:28 uh.. 19:59:33 chances are you don't need subsets of anything. 19:59:36 to code that. I would think. 20:00:24 Yeah, but I'm crazyu 20:00:46 @pl \xs -> lefts (filter isJust xs) 20:00:46 lefts . filter isJust 20:00:52 and don't really understand (.) 20:00:56 lol 20:01:04 think of it as like... 20:01:05 Gregor: though I pronounce it as "code you" // heh, I just pronounce it co-du, though code-you is better :P 20:01:08 function composition. :p 20:01:18 Gregor: less accurate though. 20:01:24 co-du makes way more sense. 20:01:29 given the spelling. 20:01:51 I pronounce it Code ooh 20:01:59 Code! Oooooooh 20:02:02 lol 20:02:10 @pl \xs -> has_won (lefts (filter isJust xs)) 20:02:11 has_won . lefts . filter isJust 20:02:20 Ngevd: ....really? 20:02:23 Yup 20:02:52 Ngevd: imagine you have like.... functions 20:02:58 now you want the output of one to be the input of another. 20:03:12 and you want the result of this combination to be A NEW FUNCTION 20:03:16 bam! function composition! 20:03:19 +_+ 20:03:35 Hold on, Scrabble time 20:04:31 :t isLeft 20:04:32 Not in scope: `isLeft' 20:04:40 @hoogle Either a b -> Bool 20:04:40 Data.Graph.Inductive.Basic hasLoop :: Graph gr => gr a b -> Bool 20:04:40 Data.Graph.Inductive.Query.DFS isConnected :: Graph gr => gr a b -> Bool 20:04:40 Data.Graph.Inductive.Graph isEmpty :: Graph gr => gr a b -> Bool 20:04:41 f x = a $ b $ c $ d x is the same as f x = a . b . c $ d x is the same as f = a . b . c . d if that helps 20:05:12 Having elliott yell at me for using the first one helped me learn that >.> 20:05:13 :t lefts 20:05:13 forall a b. [Either a b] -> [a] 20:05:38 Sgeo: either usage is fine, honestly. obviously you want to use function composition when writing pointfree though 20:05:54 @source (.) 20:05:54 (.) not available 20:06:07 @source Prelude.. 20:06:07 Prelude.. not available 20:06:13 oh, hm. 20:07:41 -!- Ngevd has quit (Ping timeout: 240 seconds). 20:07:46 -!- monqy has joined. 20:08:01 monqy: hi 20:08:09 hi 20:08:28 I think it can make for other m (Either a b) -> m a (>>= either return (const mzero)) 20:09:02 @source . 20:09:03 . not available 20:09:11 @source (Prelude..) 20:09:11 (Prelude..) not available 20:09:30 :t f Prelude.. x 20:09:31 Couldn't match expected type `a -> b' against inferred type `Expr' 20:09:31 In the second argument of `(GHC.Base..)', namely `x' 20:09:31 In the expression: f GHC.Base.. x 20:09:34 :t f Prelude.. g 20:09:35 @tell Ngebd COME BACK I HAVE SOMETHING IMPORTANT TO SAY. 20:09:35 Consider it noted. 20:09:35 Ambiguous type variable `b' in the constraints: 20:09:35 `Show b' arising from a use of `f' at :1:0 20:09:35 `SimpleReflect.FromExpr b' 20:09:42 :t f . g 20:09:43 forall a b (f :: * -> *). (Show a, SimpleReflect.FromExpr b, SimpleReflect.FromExpr (f a), Functor f) => f b 20:09:47 Hmm, that's weird 20:09:57 Sgeo: . is fmap in lambdabot 20:10:07 Oh 20:10:21 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds). 20:10:22 > f . [1..] 20:10:23 Ambiguous type variable `b' in the constraints: 20:10:23 `SimpleReflect.FromExpr ... 20:10:30 > f . [1..] :: [Expr] 20:10:32 [f 1,f 2,f 3,f 4,f 5,f 6,f 7,f 8,f 9,f 10,f 11,f 12,f 13,f 14,f 15,f 16,f 1... 20:10:34 @unpl (.) 20:10:35 (\ a b c -> a (b c)) 20:11:22 Sgeo: though really I think it should be (.) from Category 20:12:09 we already have <$> for fmap and it looks quite nice. 20:12:47 @tell Ngevd f x = a $ b $ c $ d x is the same as f x = a . b . c $ d x is the same as f = a . b . c . d if that helps Having elliott yell at me for using the first one helped me learn that >.> 20:12:47 Consider it noted. 20:13:53 Yes <$> for fmap is better. Since you can use . for category morphism composition 20:14:18 also <$> has the $ which implies function application, which is how fmap is typically uses. 20:15:14 @tell Ngevd also lefts (filter isJust xs) isn't going to work because xs is still a list of Maybes after filtering. 20:15:14 Consider it noted. 20:16:04 @hoogle [Maybe a] -> a 20:16:05 Data.Maybe catMaybes :: [Maybe a] -> [a] 20:16:05 Data.Maybe fromJust :: Maybe a -> a 20:16:05 Control.Monad msum :: MonadPlus m => [m a] -> m a 20:16:15 @tell Ngevd Is the same as f x = a . b . c . d $ x 20:16:15 Consider it noted. 20:16:16 oh hmmm I thought catMaybes would return a 20:16:31 @tell Ngevd use catMaybes :: [Maybe a] -> [a] instead 20:16:32 Consider it noted. 20:16:38 @teel Ngevd AAAAAAAH SO MANY MESSAGES 20:16:38 Consider it noted. 20:16:57 And then lambdabot crashes. 20:17:08 -!- Phantom_Hoover has joined. 20:17:18 @lastspoke Phantom_Hoover 20:17:18 Unknown command, try @list 20:17:43 -!- derrik has joined. 20:21:22 Should it be fixed to work with other monads too? Such as, instead of only list monad it can work other MonadPlus as well. 20:22:09 zzo38: that would make it much more inefficient for the list case I believe. 20:22:57 zzo38: also what are you using MonadPlus for? 20:23:21 you'd want Functor I think. 20:23:32 or... 20:23:35 kallisti: MonadPlus in case you need to use mzero, and you also need join 20:23:38 Functor and MonadPlus? 20:24:26 :t join 20:24:27 forall (m :: * -> *) a. (Monad m) => m (m a) -> m a 20:24:34 zzo38: what do you need join for 20:24:39 catMaybes = (>>= maybe mzero return); lefts = (>>= either return (const mzero)); 20:25:02 Note that >>= combines join with fmap 20:25:06 join = (>>= id) 20:25:10 ah yes. 20:25:17 cool. 20:25:41 @src catMaybes 20:25:41 catMaybes ls = [x | Just x <- ls] 20:26:21 -!- oerjan has joined. 20:26:22 :t either 20:26:23 forall a c b. (a -> c) -> (b -> c) -> Either a b -> c 20:26:23 hmm, I guess that's equivalently efficient. 20:26:42 -!- sebbu2 has joined. 20:26:42 -!- sebbu2 has quit (Changing host). 20:26:42 -!- sebbu2 has joined. 20:28:31 fmap f = (>>= return . f) 20:28:36 x >>= f = join $ fmap f x 20:29:41 -!- sebbu has quit (Ping timeout: 240 seconds). 20:35:37 * elliott is trying to point-free: f x y z = g (h x) (h y) (h z) 20:36:01 http://boards.trutv.com/showthread.php?14444-seth-gold-is-hot!!! 20:36:29 :t \x -> ?g (?h x) `on` ?h 20:36:30 oerjan: with lambdabot around, why is that hard? 20:36:30 forall b c a. (?h::a -> b, ?g::b -> b -> b -> c) => a -> a -> a -> c 20:36:51 ais523: because the @pl result looks awful 20:37:12 @pl lacks many of the more subtle methods 20:37:41 :t on 20:37:42 forall b c a. (b -> b -> c) -> (a -> b) -> a -> a -> c 20:38:05 what he really needs is some kind of on3 20:38:12 yep 20:38:25 :t on ?h . ?g . ?h 20:38:25 forall b c a. (?h::b -> b -> c, ?g::(b -> c) -> a -> b) => b -> a -> a -> c 20:38:56 maybe I'm missing something here... 20:39:43 well a flip in front of on, to start 20:39:56 oh 20:39:59 :t flip on ?h . ?g . ?h 20:40:00 forall c a a1. (?h::a -> a1, ?g::a1 -> a1 -> a1 -> c) => a -> a -> a -> c 20:40:07 is that equivalent? 20:40:11 to what you just wrote? 20:40:14 i think so 20:40:38 oerjan: you and elliott should devise a pointfree library. :3 20:40:40 with an on3! 20:41:09 i vaguely think i made a recursive onN sort of thing in a previous discussion 20:41:22 -!- zzo38 has quit (Remote host closed the connection). 20:44:52 \x y z -> g (h x) (h y) (h z) = \x y -> g (h x) (h y) . h = \x y -> on g h x y . h 20:45:08 @pl \x y -> on g h x y . h 20:45:08 flip flip h . ((.) .) . on g h 20:45:19 bah 20:47:17 :t \x y z -> foldl (. ?h) ?g [x,y,z] 20:47:18 Occurs check: cannot construct the infinite type: a = a1 -> a 20:47:18 Expected type: a 20:47:18 Inferred type: a1 -> a 20:47:22 eek 20:47:36 oh well 20:50:01 How about dup and swap? 20:50:13 cleave 20:50:16 etc 20:50:19 All the Factor stuff 20:50:22 Can that be done? 20:50:59 fsvo done 20:51:19 it's not like haskell naturally is about stacks 20:51:36 or concatenative 20:51:59 I want a function f, such that (+) . f :: (Num a) => a -> a 20:52:17 Why don't I say dup instead of f 20:52:18 :t (+) . ?f 20:52:18 forall a (f :: * -> *). (Num a, ?f::f a, Functor f) => f (a -> a) 20:52:28 oerjan, huh? 20:52:35 :t (+) Prelude.. ?f 20:52:36 forall b a. (Num b, ?f::a -> b) => a -> b -> b 20:52:39 Sgeo: join (+) 20:52:43 or uh 20:52:45 wait i forget ugh 20:52:57 Lemme solve for the types 20:52:59 been a long time since i did that sort of thing 20:53:10 :t (.) 20:53:11 forall a b (f :: * -> *). (Functor f) => (a -> b) -> f a -> f b 20:53:12 oops 20:53:15 :t (Prelude..) 20:53:16 forall b c a. (b -> c) -> (a -> b) -> a -> c 20:53:18 :t join (+) 20:53:18 forall a. (Num a) => a -> a 20:53:25 > join (+) 5 20:53:26 10 20:53:28 monqy, that's not quote what I want, though 20:53:31 quite 20:53:39 Sgeo: i just did, and there is no solution 20:53:45 o.O 20:54:20 -!- variable has quit (Quit: I found a 1 /dev/zero). 20:54:24 you cannot get around the fact that (+) . f will still be a function of two arguments 20:54:35 Sgeo: uncurry (+) . (id &&& id) 20:55:11 > uncurry (+) . (id &&& id) $ 5 20:55:13 10 20:55:43 basically, (.) does _not_ access all the arguments of its first argument, only the first, so there's no way to use it to treat its first argument as taking a stack. 20:56:38 :t join 20:56:38 forall (m :: * -> *) a. (Monad m) => m (m a) -> m a 20:56:58 :t join.($) 20:56:58 forall a a1. (a1 -> a1 -> a) -> a1 -> a 20:56:59 * Sgeo whats at monqy's join example 20:57:03 :t join :: (a -> a -> b) -> a -> b 20:57:04 forall a b. (a -> a -> b) -> a -> b 20:57:38 -!- Ngevd has joined. 20:57:46 * Sgeo ducks for cover 20:57:56 all brace for the hello 20:58:56 there seems to be a malfunction 20:59:02 `? welcome 20:59:10 Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page 21:00:02 * oerjan looks suspiciously at ais523 21:00:22 ais523 is clearly new to this community. 21:00:37 sgeo: what's so scary about my join example 21:01:03 monqy, I guess I wasn't thinking of functions as a monad 21:01:14 Although I guess they are. Still not intuitive for me though. 21:01:37 iirc it's the same as Reader 21:02:14 all you need to know for join is: join f = \ a -> f a a 21:03:20 Ngevd: hmmm apparently lambdabot is not informing you of MESSAGES? 21:03:21 and iirc fmap f g = f . g 21:03:28 monqy: yes 21:03:44 kallisti: this _might_ be related to the fact Ngevd isn't speaking. 21:03:55 oerjan: oh I thought it informed people when they joined. 21:03:59 no[e 21:04:13 I've never had to use >>= so I've forgotten what it does intuitively :( 21:04:15 okY 21:04:28 f >>= g = f (g x) x 21:04:31 I believe 21:04:35 er 21:04:40 f >>= g x = f (g x) x 21:04:45 f >>= g $ x = f (g x) x 21:04:46 :P 21:04:53 \x -> 21:05:03 ?src >>= -> 21:05:04 Source not found. And you call yourself a Rocket Scientist! 21:05:04 lambdas are for chumps. 21:05:08 ?src -> >>= 21:05:08 Source not found. Take a stress pill and think things over. 21:05:13 ?src (->) (>>=) 21:05:14 f >>= k = \ r -> k (f r) r 21:05:51 kallisti: WRONG!!!!!!!!!!!!!!!!!!!!111111111111111111ELEVEN 21:06:16 oh 21:06:17 indeed 21:06:27 I think f (g x) x is ap right? 21:06:38 ap is whatever S is 21:06:43 i always forget it :( 21:06:45 kallisti: WRONG!!!!!!!!!!!!!!!!!!!!111111111111111111ELEVEN 21:06:49 and pure is const 21:06:52 i.e. k 21:06:56 f x (g x) 21:06:57 is ap 21:07:21 mhm 21:08:06 so >>= is like ap but turnways. 21:08:11 wh 21:08:31 sure 21:12:17 -!- Ngevd has quit (Read error: Connection reset by peer). 21:15:16 monqy: http://www.mspaintadventures.com/sweetbroandhellajeff/?cid=010.jpg 21:15:59 yes i know 21:17:15 g (f x) x vs. f x (g x) 21:17:42 if that isn't turnways I don't EVEN know what it is. 21:18:49 -!- derrik has quit (Read error: Connection reset by peer). 21:21:41 :t flip ap 21:21:42 forall (m :: * -> *) a b. (Monad m) => m a -> m (a -> b) -> m b 21:22:29 :t flip ap . flip 21:22:30 forall b (f :: * -> *) a b1. (Functor f) => f (a -> b1) -> (a -> f b1 -> b) -> a -> b 21:22:53 :t flip ap Prelude.. flip 21:22:54 forall b (f :: * -> *) a b1. (Functor f) => f (a -> b1) -> (a -> f b1 -> b) -> a -> b 21:23:06 :t flip ap . Prelude.flip 21:23:06 forall b a b1 c. (a -> b1 -> c) -> (b1 -> (a -> c) -> b) -> b1 -> b 21:25:05 \f g x -> g (f x) x = \f g x -> flip g x (f x) = \f g -> ap (flip g) f = flip (ap . flip) 21:25:11 :t flip (ap . flip) 21:25:12 forall a b a1. (a1 -> a) -> (a -> a1 -> b) -> a1 -> b 21:25:25 woo 21:25:27 :t (>>=).($) 21:25:28 forall a b a1. (a1 -> a) -> (a -> a1 -> b) -> a1 -> b 21:26:08 :t flip ((>>=) . flip) 21:26:09 forall b (f :: * -> *) a b1. (Functor f) => (f b1 -> a -> b) -> f (a -> b1) -> a -> b 21:26:20 flippity floppity floo 21:26:24 -!- Klisz has joined. 21:26:25 :t ap.($) 21:26:25 forall a b a1. (a1 -> a -> b) -> (a1 -> a) -> a1 -> b 21:26:38 hm that's not quite right 21:26:50 :t flip (>>=) . flip 21:26:51 forall (m :: * -> *) a b. (Monad m, Functor m) => m (a -> b) -> m a -> m b 21:27:19 <*>? :P 21:27:25 oh hm that's actually _general_ ap 21:27:51 given sufficient caleskell 21:27:57 heh 21:28:32 :t Prelude.flip (>>=) Prelude.. flip 21:28:33 forall (m :: * -> *) a b. (Monad m, Functor m) => m (a -> b) -> m a -> m b 21:28:45 :t Prelude.flip (>>=) Prelude.. Prelude.flip --too little 21:28:46 forall a b a1. (a1 -> a -> b) -> (a1 -> a) -> a1 -> b 21:29:28 http://www.guardian.co.uk/science/blog/2009/mar/02/god-particle-peter-higgs-portrait-lhc 21:29:33 This is the best portrait. 21:29:34 :t flip . flip 21:29:34 forall a b a1. (a -> a1 -> b) -> a -> a1 -> b 21:29:50 I like all the blue glowy lines around his head. 21:30:11 It reminds me of that bit in Fine Structure where — oh wait future elliott. 21:30:20 :t flip 21:30:20 forall (f :: * -> *) a b. (Functor f) => f (a -> b) -> a -> f b 21:31:13 only for functions is caleskell flip its own inverse 21:31:48 I'm guessing that's what the higgs boson looks like? 21:32:42 -!- augur has quit (Remote host closed the connection). 21:34:12 i'm guessing that's supposed to be a collision diagram from a particle accelerator 21:38:50 IT'S, LIKE, A LAMBDA *INSIDE* A LAMBDA! <-- BRUIJNCEPTION 21:39:25 Good old De Bruijndices. 21:44:37 we also have single fifo, animated chatrooms, bbw dating north dakota, dating program <-- i suspect we are just going to give up fighting the spam and turn the wiki into a spam appreciation site. 21:48:16 -!- Ngevd has joined. 21:48:21 Hello! 21:48:21 Ngevd: You have 5 new messages. '/msg lambdabot @messages' to read them. 21:48:33 Wow, messages, me? 21:51:52 Ngevd: yes you're special. 21:52:04 Wow 21:52:14 Also, I won at that game of Scrabble 21:52:19 good! 21:52:38 Even low I was below 50 when the person who would eventually lose broke the hundred (he had a good start) 21:52:40 now you can go fix your haskell program in the way that I described. :) 21:53:04 Has anyone got Cobalt? 21:53:20 no what's that 21:53:50 A new game that's being somethinged by the company that makes Minecraft 21:54:04 lol 21:54:05 okay 21:54:58 oh hm, it looks pretty fun 21:56:00 -!- Klisz has quit (Quit: You are now graced with my absence.). 21:56:52 -!- Klisz has joined. 21:57:53 * kallisti wants to play a game that's a sort of mixture between Magicka and Demons' Souls. 21:58:21 a somewhat complex magic system. a strategic, fast-paced action RPG. 21:59:14 Hold on a second 21:59:18 I don't need the Maybes 22:00:23 Ngevd: I'm guessing the eithers represent the two different players? 22:00:27 Yes 22:00:40 what does the inner-type represent? 22:00:42 The Maybe would have represented empty squares 22:00:51 Sounds like you may want Maybe Bool 22:01:04 True = x, False = o, Nothing = empty 22:01:26 Clever plan: Left n = square n is x, Right n = square n is o. 22:01:31 No need for Maybe 22:02:40 oh okay 22:03:12 What's a cool type for the internal "Sorry, that square is full, ask for another square" message? 22:03:28 well if you had. 22:03:34 Map Int (Maybe Bool) 22:03:36 er 22:03:38 Map Int Bool 22:03:39 I mean 22:03:51 then a lookup on the Map would return a Maybe Bool 22:04:03 so you could just test on that. 22:04:20 if it's Nothing, you can place a mark, if it's Just _ then you can't 22:04:30 Clever idea! 22:04:40 Essentially the opposite of what you just said! 22:04:46 a "cool type" for the error message would be String. A cool type to send an error message would be IO. :P 22:04:54 Ngevd: oh? 22:05:12 Nothing = not good enough, try again 22:05:20 that doesn't make any sense. 22:05:25 Just (Either Int Int) = brilliant, here's the new board 22:05:32 wat 22:05:42 I think Map Int Bool would be easier honestly. 22:05:59 and you could turn it into a [Either Int Int] if you needed. 22:06:50 but if you've got a good idea, don't let me stop you. :> 22:06:54 -!- KingOfKarlsruhe has quit (Quit: ChatZilla 0.9.87 [Firefox 8.0/20111104165243]). 22:07:34 Ngevd: because the key piece of data you have is the square I assume. 22:07:41 Ngevd: with the list you have to search through the list 22:07:49 with the Map you can just lookup via the integer. 22:08:02 It's a list with maximum length of 9 22:08:16 well yes, it's not difficult to search through. 22:08:34 If searching through the list is going to be a serious problem, I recommend you get a new computer and a new Haskell compiler 22:08:46 I was referring to conceptual simplicity. :P 22:08:49 But a Map could be really good for my other project... 22:08:52 not a problem of efficiency, really. 22:12:01 placePiece m i p = maybe (insert i p m) (const m) (lookup i m) 22:12:20 m is the Map Int Bool, i is the Int, p is the player (True or False) 22:12:57 of course you'll probably want more logic than that. 22:13:06 because that doesn't tell you whether or not the board changed. 22:13:16 it just leaves it alone if it didn't change. 22:14:11 you could have it return an IO (Map Int Bool) instead or something. 22:14:24 with the error case sending a message to the player. 22:16:24 is it a text-based interface? 22:16:29 or something more complicated? 22:16:37 Haven't actually done the interface yet 22:16:46 what do you plan for it to be? 22:16:54 Probably text 22:17:17 :t lookup -- the list version also exists 22:17:18 forall a b. (Eq a) => a -> [(a, b)] -> Maybe b 22:17:22 then yes placePiece :: Map Int Bool -> Bool -> Int would work 22:17:28 oerjan: indeed. 22:17:31 but MAPS ARE SO MUCH COOLER. 22:17:36 /trees/ man. 22:18:00 yeah but at 9 elements its quite plausible that lists are actually faster, isn't it? 22:18:06 > logBase 2 9 22:18:06 3.1699250014423126 22:18:11 oerjan: nah man never. 22:18:22 NEVER 22:18:24 NOT IN ANY CASE 22:18:28 THERE IS NO SCENARIO 22:18:30 (lies) 22:18:35 just like bubble sort actually wins over quicksort if the array is short enough 22:18:57 oerjan: but you're not thinking about scalability. Maybe Ngevd wants a 1 million square game of tic-tac toe. 22:19:03 eventually 22:19:07 THE REQUIREMENTS CHANGE. 22:19:11 plausible. 22:19:15 best to go with the one with the best growth factor. 22:19:33 kallisti: ah but then you need larger pointers 22:20:05 hm? 22:20:07 lest your solution runs out of them before filling the entire universe 22:20:33 Ngevd: if you'd rather maintain purity then you could return an Either String (Map Int Bool) instead 22:20:47 Ngevd: or Either String [Either Int blah blah blah dumb 22:20:49 :P 22:20:58 also, http://xkcd.com/865/ 22:21:17 What I really want is something like elemBy 22:21:41 :t any 22:21:41 forall a. (a -> Bool) -> [a] -> Bool 22:21:43 :t all 22:21:43 forall a. (a -> Bool) -> [a] -> Bool 22:21:53 any is good 22:23:06 @hoogle Either a a -> a 22:23:07 Data.Either rights :: [Either a b] -> [b] 22:23:07 Data.Either lefts :: [Either a b] -> [a] 22:23:07 Data.Typeable typeOf2 :: Typeable2 t => t a b -> TypeRep 22:23:33 ah I guess no one would need something so silly except Taneb. 22:23:38 >:) 22:23:56 Ngevd: if your elements are ((Int,Int),Bool) then lookup is perfect. 22:24:07 they're Either Int Int 22:24:28 which is isomorphic to (Int, Bool) 22:24:29 or (Int, Bool) equivalently 22:24:30 yes 22:24:35 What I'm probably going to stick with is taken n = any (\x -> Left n == x || Right n == x) 22:24:41 Because I am crazy 22:24:57 ....WHY 22:25:00 And pl'ing that is crazy 22:25:10 map is so much easier... 22:25:13 *Map 22:25:15 @pl \n -> any (\x -> Left n == x || Right n == x) 22:25:16 any . ap (ap . ((||) .) . (==) . Left) ((==) . Right) 22:26:02 Ngevd: (Int, Bool) would probably be easier as well 22:26:07 as then you could just ignore the Bool element 22:26:09 I DON'T CARE 22:26:15 instead of dealing with the Left and Right constructors 22:26:32 Ngevd: okay. 22:27:07 :t join either . (==) 22:27:08 forall a. (Eq a) => a -> Either a a -> Bool 22:27:32 That works too 22:28:04 Except no 22:28:05 oerjan: fancy 22:29:21 Ngevd: the list /might/ end up being easier to work with when you have to compute a win. 22:30:21 -!- MDude has quit (Ping timeout: 240 seconds). 22:32:23 There's probably thousands of different ways of doing this, each with its own merits 22:32:33 but not really because you just generate a list of winning configurations, and then use any (`isSubmapOf` board) 22:32:34 -!- augur has joined. 22:32:50 I'm going to continue with the way I've got half a program to 22:34:43 (the "winning configurations" meaning the 4 different ways to win * the 2 players, not literally every possible winning configuration as that would be crazy slow) 22:38:25 well actually no it wouldn't be that slow. 22:38:44 I was confusing ending positions with possible games. 22:39:02 > 91 + 44 22:39:03 135 22:39:11 is the number of winning positions. 22:39:22 and 3 draws. 22:39:25 > 3^9 22:39:26 19683 22:39:43 > product [1..9] 22:39:44 362880 22:40:00 Number of possible games 22:40:12 not quite. 22:40:37 Niave upper bound for the number of possible games 22:40:45 yes. 22:41:15 "Naive"? 22:41:33 it doesn't take into account that the game /stops/ when you win. 22:41:40 It's an upper bound, aren't all upper bounds of things that can in principle be calculated exactly "naive"? 22:41:52 some can be more naive than others. 22:42:16 Positive infinity is a perfectly accurate upper bound for most things 22:43:29 Ngevd: how do you currently calculate wins? with the permutations thing? 22:43:36 Yes 22:43:40 It uses a magic square 22:44:09 also, 19683 is an upper bound on the number of board positions. 22:44:40 which means you could quite plausibly store them all. 22:44:41 Gonna play Cobalt now 22:44:58 Is Graham's Number naive? 22:45:08 in this case, yes. 22:45:23 well, maybe more like "dumb" :P 22:45:24 worst approximation to 6^H11 ever 22:45:59 Sgeo: oh nevermind 22:46:21 I thought you were asking if Graham's number was a naive upper bound to the number of possible games or something else we were talking about. 22:46:51 sorry, 13. 22:48:00 I'm not even sure why I am doing this 22:49:04 Ngevd: me neither 22:49:24 I could be doing something actually useful to my education and wellbeing rather than make a silly game 22:49:30 Sillily 22:50:21 Now, if I moved to a certain island group, I'd be the silly silly game developer of Scilly 22:53:34 Ngevd: I would be able to take your game more seriously if it used better data structures. 22:53:38 I can't get Cobalt to run 22:53:43 :~( 22:53:48 (is not serious, btw) 22:54:11 Ngevd: what platforms is it available on? 22:54:29 Windows 22:54:38 Coming soon for Mac and Linux 22:54:43 Apparently it works in Wine? 22:55:00 Got it working, maybe 22:59:48 !perl $x=3;$x=3**($x%10**50)for1..500;print$x 22:59:50 Bareword found where operator expected at /tmp/input.15721 line 1, near ")for1" 22:59:56 !perl $x=3;$x=3**($x%10**50)for 1..500;print$x 22:59:57 nan 23:00:18 !perl use integer;$x=3;$x=3**($x%10**50)for 1..500;print$x 23:00:18 1 23:00:20 .. 23:00:32 oh 23:00:40 !perl use integer;$x=3;$x=3**$x%10**50for 1..500;print$x 23:00:41 0 23:02:26 > iterate (\x -> 3^x `mod` 10^50) 3 !! 500 23:02:31 mueval: ExitFailure 1 23:02:31 mueval: Prelude.undefined 23:02:37 oops 23:02:47 oerjan: (^) is slow and stuff 23:03:00 not really 23:03:15 it's slower than (**) isn't it? 23:03:20 but the numbers get huge _before_ you mod them 23:04:06 ** is not exact, so obviously 23:04:11 > 5 ** 5000 23:04:12 Infinity 23:04:21 > 5^5000 23:04:21 :P 23:04:22 707981126104817289238561515869405755294754851033943135872983022354636725918... 23:04:37 > 5 ** 5000 :: CReal 23:04:41 707981126104817289238561515869405755294754851033943135872983022354636725918... 23:04:50 SO MUCH FASTER SEE? 23:04:57 >_> 23:05:50 > x ** 4 23:05:51 x**4 23:05:58 i assume you are trying to calculate the final digits of graham's number as described on wp 23:06:04 yes 23:06:25 i don't think it is quite as simple as that though 23:06:47 -!- ais523 has quit (Remote host closed the connection). 23:06:55 afair i did it myself once 23:07:08 Gonna play Cobalt now 23:07:10 It's out? 23:07:29 -!- DCliche has joined. 23:08:17 > scanl (*3) 1 23:08:18 Occurs check: cannot construct the infinite type: a = b -> a 23:08:28 > iterate (*3) 1 23:08:29 [1,3,9,27,81,243,729,2187,6561,19683,59049,177147,531441,1594323,4782969,14... 23:08:37 `run dc -e '[3z202>xO200^|]dsxxrp' 23:08:55 the thing is, there isn't actually any pattern if you just do 3^x, it has to be 3^3^x 23:09:07 or something like that 23:09:08 No output. 23:09:37 `run dc 0e ;dc -e '[3z202>xO200^|]dsxxrp' 23:09:42 > iterate (^3) 3 23:09:43 er 23:09:43 [3,27,19683,7625597484987,443426488243037769948249630619149892803,871896424... 23:10:03 > map (`mod` 10^10) $ iterate (^3) 3 23:10:06 `run dc -e '3[3rAz^|dz202>x]dsxxAz3-^%p' 23:10:08 mueval: ExitFailure 1 23:10:08 mueval: Prelude.undefined 23:10:09 dc: Could not open file 0e 23:10:12 eek 23:10:18 > take 10 . map (`mod` 10^10) $ iterate (^3) 3 23:10:20 [3,27,19683,5597484987,9149892803,5225665627,1838846883,6369147387,94380896... 23:10:27 ok even that doesn't work 23:10:38 No output. 23:10:54 anyway those programs work on my computer 23:10:57 they just timeout on hackego 23:11:02 -!- Klisz has quit (Ping timeout: 252 seconds). 23:11:59 Why did it hit undefined? 23:12:05 -!- copumpkin has quit (Quit: Computer has gone to sleep.). 23:12:28 Sgeo: dunno, something going wrong when it times out, i assume 23:14:42 -!- Ngevd has quit (Ping timeout: 252 seconds). 23:14:49 > 21*60 23:14:50 1260 23:15:48 oh hm it says on wp that algorithm is actually correct 23:16:43 > iterate (\x -> 3^x `mod` 10^50) 3 !! 50 23:16:48 mueval: ExitFailure 1 23:16:49 mueval: Prelude.undefined 23:16:54 > iterate (\x -> 3^x `mod` 10^10) 3 !! 10 23:16:59 mueval: ExitFailure 1 23:16:59 mueval: Prelude.undefined 23:17:04 darn 23:17:09 > iterate (\x -> 3^x `mod` 10^10) 3 !! 10 23:17:14 mueval: ExitFailure 1 23:17:14 mueval: Prelude.undefined 23:17:58 @hoogle modpow 23:17:58 No results found 23:18:02 @hoogle powmod 23:18:02 No results found 23:18:36 http://en.wikipedia.org/wiki/Vampire_number 23:18:43 I don't really get the point' 23:19:10 http://www.reddit.com/r/AskReddit/comments/nepda/whats_something_you_found_so_pretentious_that_it/c38i4ay 23:19:16 I wish I had taken art. 23:20:18 why? so you could spend lots of money on useless classes? 23:20:29 No, so I could study Dr McNinja. 23:21:23 Oh god now I remember that I *still* haven't read the fourth book of The Sandman, about two years after I read the first. 23:21:37 -!- PiRSquared17 has joined. 23:22:29 * kallisti has never heard of this so-called Dr. McNinja 23:22:33 * kallisti googles. 23:22:39 * kallisti awe 23:22:42 -!- Vorpal has quit (Ping timeout: 276 seconds). 23:23:25 oh god this is beautiful what is this. 23:24:14 "we'll talk once your ghastronaut buddy shows up and gets stuffed on holy knuckle cheeseburgers" 23:24:17 wow. what. 23:24:27 I feel like I should probably read this from the beginning instead of backwards. 23:24:38 yes 23:26:47 !haskell m = 10; newtype M = M Integer deriving (Eq, Show); instance Num M where { M x * M y = M $ (x * y) `mod` 10^m; (+) = undefined; (-) = undefined; abs = undefined; signum = undefined; fromInteger = undefined }; main = print . iterate m (\M x -> M 3 ^ x) $ M 3 23:26:52 runhaskell: syntax: runghc [-f GHC-PATH | --] [GHC-ARGS] [--] FILE ARG... 23:27:12 !haskell 2+2 23:27:15 4 23:27:21 !haskell main = print $ 2+2 23:27:24 runhaskell: syntax: runghc [-f GHC-PATH | --] [GHC-ARGS] [--] FILE ARG... 23:27:32 Gregor: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 23:28:55 how do you even analyze Dr. McNinja 23:29:16 "the author here is trying to convey that a ninja doctor riding a raptor is awesome." 23:31:00 Gregor: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 23:31:28 oerjan: there would be no problem if elliott hadn't deleted my hackego script.. 23:31:39 ic 23:31:40 * kallisti pouts. 23:33:02 `haskell 23:33:04 ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: haskell: not found 23:33:55 @tell elliott you appear to have deleted kallisti's HackEgo haskell script while EgoBot's wasn't even _working_ properly. what do you have to say in defense and how would you like to be executed? 23:33:55 Consider it noted. 23:34:08 oerjan: well. 23:34:11 it was working at the time 23:34:12 but 23:34:14 also at the time 23:34:17 egobot had been down for several days. 23:34:23 ic 23:34:59 I actually don't remember how I wrote it now... 23:35:46 btw i need a version which does newtype and instance declarations, of course. 23:36:22 can ghc run from standard input? 23:36:51 unless someone remembers that lambdabot has an obscure imported module which does modular powers. 23:37:12 -!- copumpkin has joined. 23:37:20 kallisti: for module compilation? doubt it. 23:37:25 oerjan: help how do I runhaskell with standard input. 23:37:30 HOW DID I DO THAT? 23:37:32 maybe I didn't. 23:37:34 what. 23:37:36 I don't know. 23:37:46 tmpfile? it's what EgoBot does, afaik. 23:37:53 I don't recall using a tempfile. 23:37:59 but that's an option. 23:38:07 maybe you just did ghc -e 23:38:14 oh, maybe. 23:39:21 that _should_ be enough with a ghc recent enough to support all declarations in ghci. but that's pretty recent, maybe even after latest platform. 23:39:37 `run ghc -e ' main = print (2+2)' 23:39:44 ​\ :0:6: parse error on input `=' 23:40:08 no, ghc -e doesn't do modules. afaict it does ghci commands 23:41:29 `run ghc -e 'let {m = 10}; newtype M = M Integer deriving (Eq, Show); instance Num M where { M x * M y = M $ (x * y) `mod` 10^m; (+) = undefined; (-) = undefined; abs = undefined; signum = undefined; fromInteger = undefined }; print . iterate m (\M x -> M 3 ^ x) $ M 3' 23:41:34 ​\ :0:13: parse error on input `;' 23:41:43 * Phantom_Hoover → sleep 23:41:45 fancy 23:41:48 -!- Phantom_Hoover has quit (Quit: Leaving). 23:41:54 `run ghc -e 'print (2+2)' 23:41:59 4 23:42:16 `run ghc -e 'let {m = 2}; print (m+m)' 23:42:21 ​\ :0:12: parse error on input `;' 23:42:35 ic :( 23:42:50 not quite all of ghci, i take 23:43:15 `run ghc -e 'putStr "test"; print (m+m)' 23:43:20 ​\ :0:14: parse error on input `;' 23:43:32 right, no support of multiple commands :( 23:43:38 `run cd bin && echo '#!/bin/sh' > haskell && echo '$T=mktemp; echo $1 > $T; runhaskell $T' >> haskell && chmod +x haskell 23:43:40 No output. 23:43:42 oerjan: this is wrong isn't it. 23:44:22 you need .hs extension. 23:44:32 it's... enforced? 23:44:52 well, there's a flag to ignore it 23:45:14 `run cd bin && echo '#!/bin/sh' > haskell && echo '$T=`mktemp`; echo "$1" > $T; runhaskell $T' >> haskell && chmod +x haskell 23:45:16 No output. 23:45:24 `haskell main = print $ 2+2 23:45:31 >_> 23:45:40 maybe I need to actually print something. 23:45:51 > print $ 2+2 23:45:52 23:45:55 boo 23:45:57 ​/hackenv/bin/haskell: 2: =/tmp/tmp.yr3eUgdBhN: not found \ /hackenv/bin/haskell: 2: cannot create : Directory nonexistent 23:46:11 um, okay. 23:46:23 >_>oh 23:46:32 `run cd bin && echo '#!/bin/sh' > haskell && echo 'T=`mktemp`; echo "$1" > $T; runhaskell $T' >> haskell && chmod +x haskell 23:46:34 No output. 23:46:39 `haskell main = print $ 2+2 23:46:42 -!- copumpkin has changed nick to pumpmas. 23:46:44 4 23:46:47 bam 23:47:10 -!- pikhq has quit (Read error: Operation timed out). 23:47:25 oerjan: presumably runhaskell turns on said option. 23:48:02 `haskell m = 10; newtype M = M Integer deriving (Eq, Show); instance Num M where { M x * M y = M $ (x * y) `mod` 10^m; (+) = undefined; (-) = undefined; abs = undefined; signum = undefined; fromInteger = undefined }; main = print . iterate m (\M x -> M 3 ^ x) $ M 3 23:48:06 also when do temp files go away? maybe I shouldn't just create them all the time. 23:48:07 ​\ /tmp/tmp.k5wpKFOHX0:1:224: \ Couldn't match expected type `a0 -> b0' with actual type `[a1]' \ In the return type of a call of `iterate' \ Probable cause: `iterate' is applied to too many arguments \ In the second argument of `(.)', namely \ `iterate m (\ M x -> M 3 ^ x)' \ In the expression: print . iterate m (\ M x -> M 3 ^ x) 23:48:08 -!- pikhq has joined. 23:48:14 fffffffff 23:48:35 kallisti: it is possible .hs is the default assumption, i guess 23:48:47 oh hm 23:49:07 `haskell m = 10; newtype M = M Integer deriving (Eq, Show); instance Num M where { M x * M y = M $ (x * y) `mod` 10^m; (+) = undefined; (-) = undefined; abs = undefined; signum = undefined; fromInteger = undefined }; main = print $ iterate m (\M x -> M 3 ^ x) (M 3) !! m 23:49:12 ​\ /tmp/tmp.ALDmG4ubTI:1:224: \ The function `iterate' is applied to three arguments, \ but its type `(a0 -> a0) -> a0 -> [a0]' has only two \ In the first argument of `(!!)', namely \ `iterate m (\ M x -> M 3 ^ x) (M 3)' \ In the second argument of `($)', namely \ `iterate m (\ M x -> M 3 ^ x) (M 3) !! m' \ In the expression: print $ iterate m (\ M x -> M 3 ^ x) (M 3) !! m 23:49:24 oops 23:49:28 `haskell m = 10; newtype M = M Integer deriving (Eq, Show); instance Num M where { M x * M y = M $ (x * y) `mod` 10^m; (+) = undefined; (-) = undefined; abs = undefined; signum = undefined; fromInteger = undefined }; main = print $ iterate (\M x -> M 3 ^ x) (M 3) !! m 23:49:33 ​\ /tmp/tmp.ME0aPlxkPR:1:234: \ Couldn't match expected type `t0 -> t1' with actual type `M' \ In the pattern: M \ In the first argument of `iterate', namely `(\ M x -> M 3 ^ x)' \ In the first argument of `(!!)', namely \ `iterate (\ M x -> M 3 ^ x) (M 3)' 23:51:03 :t iterate 23:51:04 forall a. (a -> a) -> a -> [a] 23:51:08 explosion of tempfiles. 23:51:28 `ls /tmp 23:51:30 No output. 23:51:34 oh 23:51:48 they're probably not put in the repository 23:53:08 -!- Klisz has joined. 23:53:32 oh hm 23:53:50 `haskell m :: Integer; m = 10; newtype M = M Integer deriving (Eq, Show); instance Num M where { M x * M y = M $ (x * y) `mod` 10^m; (+) = undefined; (-) = undefined; abs = undefined; signum = undefined; fromInteger = undefined }; main = print $ iterate (\M x -> M 3 ^ x) (M 3) !! fromIntegral m 23:53:55 ​\ /tmp/tmp.qMSSrjhqHX:1:248: \ Couldn't match expected type `t0 -> t1' with actual type `M' \ In the pattern: M \ In the first argument of `iterate', namely `(\ M x -> M 3 ^ x)' \ In the first argument of `(!!)', namely \ `iterate (\ M x -> M 3 ^ x) (M 3)' 23:54:04 * kallisti considered actually making a script that generates hackego commands 23:54:19 oh duh 23:54:26 `haskell m :: Integer; m = 10; newtype M = M Integer deriving (Eq, Show); instance Num M where { M x * M y = M $ (x * y) `mod` 10^m; (+) = undefined; (-) = undefined; abs = undefined; signum = undefined; fromInteger = undefined }; main = print $ iterate (\(M x) -> M 3 ^ x) (M 3) !! fromIntegral m 23:54:32 M 2464195387 23:54:35 yay! 23:54:50 -!- pikhq_ has joined. 23:55:06 oerjan: the fabled mod-10 integers... 23:55:09 `haskell m :: Integer; m = 10; newtype M = M Integer deriving (Eq, Show); instance Num M where { M x * M y = M $ (x * y) `mod` 10^m }; main = print $ iterate (\(M x) -> M 3 ^ x) (M 3) !! fromIntegral m 23:55:14 ​\ /tmp/tmp.Ybxs5kTYQA:1:75: \ Warning: No explicit method nor default method for `+' \ In the instance declaration for `Num M' \ \ /tmp/tmp.Ybxs5kTYQA:1:75: \ Warning: No explicit method nor default method for `abs' \ In the instance declaration for `Num M' \ \ /tmp/tmp.Ybxs5kTYQA:1:75: \ Warning: No explicit method nor default method for `signum' \ In the instance declaration for `Num M' 23:55:21 *sigh* 23:55:34 it seems all those undefined's are necessary in HackEgo too 23:55:56 -!- DCliche has quit (Ping timeout: 248 seconds). 23:56:03 `run haskell 'm :: Integer; m = 10; newtype M = M Integer deriving (Eq, Show); instance Num M where { M x * M y = M $ (x * y) `mod` 10^m }; main = print $ iterate (\(M x) -> M 3 ^ x) (M 3) !! fromIntegral m' | tail -1 23:56:06 well necessary if you want to see your output through all the warnings. 23:56:08 ​\ /tmp/tmp.90muCEPMJy:1:75: \ Warning: No explicit method nor default method for `+' \ In the instance declaration for `Num M' \ \ /tmp/tmp.90muCEPMJy:1:75: \ Warning: No explicit method nor default method for `abs' \ In the instance declaration for `Num M' \ \ /tmp/tmp.90muCEPMJy:1:75: \ Warning: No explicit method nor default method for `signum' \ In the instance declaration for `Num M' 23:56:22 wat 23:56:43 um 23:56:45 dunno 23:56:52 -!- pikhq has quit (Ping timeout: 248 seconds). 23:57:23 why in the world didn't the tail -1 work 23:57:52 oh wait hm 23:57:52 my script is too cool for it. 23:58:31 `run haskell 'm :: Integer; m = 10; newtype M = M Integer deriving (Eq, Show); instance Num M where { M x * M y = M $ (x * y) `mod` 10^m }; main = print $ iterate (\(M x) -> M 3 ^ x) (M 3) !! fromIntegral m' 2&>/dev/null 23:58:36 No output. 23:58:51 er hm wait 23:58:55 `run haskell 'm :: Integer; m = 10; newtype M = M Integer deriving (Eq, Show); instance Num M where { M x * M y = M $ (x * y) `mod` 10^m }; main = print $ iterate (\(M x) -> M 3 ^ x) (M 3) !! fromIntegral m' 2>/dev/null 23:59:00 M 2464195387 23:59:03 whew 23:59:20 lol 23:59:23 it didn't work because it only affected stdout 23:59:40 &> redirects everything. 23:59:59 i remembered 2011-12-17: 00:00:32 oh you meant tail. gotcha. 00:00:36 `run haskell 'm :: Integer; m = 20; newtype M = M Integer deriving (Eq, Show); instance Num M where { M x * M y = M $ (x * y) `mod` 10^m }; main = print $ iterate (\(M x) -> M 3 ^ x) (M 3) !! fromIntegral m' 2>/dev/null 00:00:40 M 4575627262464195387 00:01:26 close enough to excellent. 00:04:09 -!- MSleep has joined. 00:04:14 -!- MSleep has changed nick to MDude. 00:04:39 -!- pumpmas has changed nick to copumpkin. 00:04:53 oerjan: and it's still a multiplicative group! 00:05:15 yes 00:05:39 which is why the ^ implementation works for this 00:06:28 what's the difference between a group and a multiplicative group? 00:06:47 well it's about where it's used, i guess 00:06:58 it seems to be a notational thing. 00:07:04 and which notation, yes 00:07:41 abelian groups are frequently given additively, nonabelian ones almost never 00:08:06 addition is for 1st grades 00:08:10 and of course if there is a ring involved, the notation is standard 00:08:13 all the cool kids are doing muliplication. 00:08:40 also ^ would work for any semigroup, i should think 00:08:57 * kallisti imagines an elementary school that taught group theory 00:09:23 except for x ^ 0 which needs a unit 00:09:43 a semigroup is just a group without the unit, I'm guessing? 00:09:51 so no identity law. 00:09:54 no, it's a monoid without the unit 00:10:06 ah okay. 00:10:19 and thus no identity law, but still an associative law? 00:10:25 yes 00:12:03 I think you could probably teach basic group theory to older kids. 00:12:21 -!- derdon has quit (Remote host closed the connection). 00:12:25 it's not even particularly difficult if you explain it in words instead of SCARY MATHS SYMBOLS 00:14:09 I remember the usage of tuples being kind of confusing to me when I was first reading math articles on Wikipedia. 00:14:47 but then it became clear that it was just a notation for grouping components together, and then later "lol product type" 00:16:43 tuples are just elements of the colimit of a diagram with two unconnected sets, what's the problem? 00:17:22 unless it's limit, i can never remember for sure which is which. 00:18:26 .. 00:18:28 k 00:18:31 In abstract algebra, a normal subgroup is a subgroup which is invariant under conjugation by members of the group. Normal subgroups can be used to construct quotient groups from a given group. 00:18:35 so this means 00:19:00 that if you apply one operation, and then a second operation, then reverse the first one 00:19:06 you're back where you started? 00:19:10 for any element in the group? 00:19:13 .....? 00:19:35 no, you get back to the normal subgroup 00:19:55 oh so you're applying operations to the subgroup. 00:20:01 ....? 00:20:22 if you're always back exactly where you started, it's called the center. 00:20:50 or well 00:21:05 aba^-1 = b means ab = ba 00:21:16 ƒ(x) = a^(−1)xa, for all x in G, 00:21:23 where a is a given fixed element of G. 00:21:33 that kind of sounds like what I was saying. 00:21:39 yes that's a conjugation. 00:22:47 A subgroup, N, of a group, G, is called a normal subgroup if it is invariant under conjugation; that is, for each element n in N and each g in G, the element gng−1 is still in N. 00:22:51 oh, okay. 00:23:17 got it. I should have just kept reading instead of traversing infinitely further across Wikipedia's giant directed graph. :P 00:23:59 -!- GreaseMonkey has joined. 00:24:03 as long as you can get back to philosophy. 00:24:38 a concrete example of a normal subgroup would be helpful. it doesn't seem like it applies to very many integer subgroups... 00:25:22 -!- Patashu has joined. 00:26:02 hmmm wait for multiplication on integers, x^(-1) violates the closure property doesn't it? 00:26:51 and for addition, x^(-1) is actally x*(-1) .....? am I reading that correctly? 00:27:01 oh wait 00:27:08 x^(-1) is the inverse of x. 00:27:13 in that group. 00:27:51 kallisti: every subgroup of a commutative group is normal 00:28:33 the rationals \ {0} are a commutative group under multiplication 00:29:08 and the integers are one under addition. 00:29:46 so wait... is multiplication over integers a group at all? 00:29:50 no. 00:29:55 because there's no inverse. 00:29:58 yeah 00:30:07 er well 00:30:12 no inverse for every element, rather. 00:30:19 only 1 and -1 have any 00:32:02 commutativity is boring. 00:32:07 Gregor: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA // I believe elliott broke that. 00:32:10 one subgroup of the rational numbers is the set { 2^n | n integer } 00:33:12 -!- elliott has joined. 00:33:16 kallisti: if you look at permutation groups instead, and consider the permutations of a finite set, then the _even_ permutations form a normal subgroup 00:33:29 ....too advanced right now. 00:33:36 ok 00:33:44 I just now got "subgroups of commutative groups are normal" :P 00:34:06 permutation groups are very fundamental, though 00:34:09 because lol g^(-1)ng 00:34:31 because lol g^(-1)ng 00:34:33 ... Firefox lost its address bar. 00:34:34 Halp 00:34:42 lol g^(-1)gn 00:34:46 lol unit*n 00:34:49 lol n 00:34:53 lol QED 00:34:54 15:06:30: now we need to invent an esolang called Single Fifo 00:34:54 15:06:54: it's the most ontopic name a spambot's come up with yet, even if it's not as /funny/ as My name Is Johny, what the F**K??? 00:34:54 elliott: You have 1 new message. '/msg lambdabot @messages' to read it. 00:34:59 the problem is, how can it be TC? 00:35:04 Gregor: Ctrl+L? 00:35:32 oerjan said 1h 1m 12s ago: you appear to have deleted kallisti's HackEgo haskell script while EgoBot's wasn't even _working_ properly. what do you have to say in defense and how would you like to be 00:35:32 executed? 00:35:33 oerjan: 00:35:38 `run ghc -e '2+2' 00:35:42 oerjan: Complain at elliott. 00:35:43 4 00:35:44 `run ghc -e 'print 42' 00:35:49 42 00:35:51 elliott: not good enough 00:35:51 Q.E.D. 00:35:59 elliott: i was running an example that needed a module 00:36:12 oerjan: kallisti's didn't handle that. the one I wrote did, though 00:36:14 elliott: in fact that part of !haskell still works 00:36:17 admittedly, I do not remember kallisti's at all. 00:36:26 neither do I. 00:36:29 so you're safe. :P 00:36:33 and do not remember deleting one 00:36:37 YOU DID 00:36:39 so... whatever 00:36:40 elliott: anyway kallisti made something which worked afterwards 00:36:42 CURSE YOU 00:36:55 oerjan: well I haven't been online since yesterday if that is what you mean 00:37:10 elliott: this all happened tonight 00:37:17 oerjan: then I deleted nothing 00:37:22 and you're paranoid. 00:37:33 oerjan: but I wrote EgoBot's new !haskell so if it's broken complain to me directly. 00:37:36 elliott: well except that. 00:37:48 !haskell main = print "Why I no work???????????????" 00:37:51 runhaskell: syntax: runghc [-f GHC-PATH | --] [GHC-ARGS] [--] FILE ARG... 00:37:59 It's because you used a meme. 00:38:03 It rejects programs with memes. 00:38:04 ah. 00:38:15 !haskell main = print "What about this, then?" 00:38:18 runhaskell: syntax: runghc [-f GHC-PATH | --] [GHC-ARGS] [--] FILE ARG... 00:38:28 Gregor: Can you push EgoBot's hg repo to http://codu.org/projects/egobot/hg/ so I can see my own script? X-D 00:38:31 !haskell --help 00:38:34 runhaskell: syntax: runghc [-f GHC-PATH | --] [GHC-ARGS] [--] FILE ARG... 00:38:34 Oh, wait! 00:38:37 elliott: lul 00:38:38 oerjan: I remember this problem. 00:38:42 AHA 00:38:46 The problem is that that is trying to use GHC 6.12. 00:38:50 the defendant confesses! 00:38:57 It's Gregor's fault. 00:39:03 Gregor: Where is HackEgo's custom GHC installed from EgoBot's perspective? 00:39:12 `ghc --version 00:39:15 The Glorious Glasgow Haskell Compilation System, version 7.2.1 00:39:21 `haskell import System.Random; main = print `fmap` (randomIO :: IO Int) 00:39:24 elliott: Done 00:39:25 ​\ /tmp/tmp.j7vwVntFq3:1:8: \ Could not find module `System.Random' \ Use -v to see a list of the files searched for. 00:39:26 Good enough, even if it is a bit buggy IIRC 00:39:30 .. 00:39:31 `rm bin/haskell 00:39:32 elliott: Inaccessibly is where. 00:39:34 No output. 00:39:45 Gregor: Can you... fix that? :P 00:40:01 elliott: Is there a cp -hardlink option >_> 00:40:12 Yes, there is! 00:40:12 * kallisti wonders why System.Random did not exist. 00:40:27 kallisti: Probably because System.Random is in random, not base. 00:40:29 !sh ls /opt/ghc 00:40:30 ​/bin/ls: cannot access /opt/ghc: No such file or directory 00:40:33 Err 00:40:43 Oh 00:40:52 elliott: base doesn't include random numbers? o_o 00:41:11 !sh ls /opt/ghc 00:41:11 bin 00:41:20 Yay 00:41:37 Admittedly I should get Gregor to install the Haskell Platform libs globally for that GHC 00:41:39 But that can wait 00:41:47 elliott: also why did you delete my script again? 00:41:52 it still has a purpose currently. 00:41:55 Gregor: Here's yer new interps/ghc/runghc: 00:41:55 #!/bin/bash 00:41:55 src=$(cat $1) 00:41:55 if ! /opt/ghc/ghc -e "$src" 2> /dev/null 00:41:55 then 00:41:56 /opt/ghc/runhaskell <<< $src 00:41:58 fi 00:42:00 Erm 00:42:02 */opt/ghc/bin 00:42:18 kallisti: Because it didn't run the program you made it for and is about to become obsolete :P 00:42:23 elliott: i should point out that kallisti's version had the advantage that it could suppress warnings. (by using `run ... 2>/dev/null, admittedly.) 00:42:36 oerjan: Mine does not run with -Wall. 00:42:47 elliott: Not helpful >_> 00:42:55 Gregor: :'( 00:43:00 It's two path changes :P 00:43:46 elliott: you could at least be polite enough to wait for it to become obsolete. clearly I have some massive Haskell program I want to dump into IRC. 00:44:12 19:27:53: Who was it that was asking me about "classical" composers? 00:44:12 19:28:01: But is also never on while I'm awake. 00:44:17 Gregor: hagb4rd 00:44:18 fucking deletionist scum. 00:44:52 kallisti: elliott will probably die if he's forced to be polite, anyway 00:45:10 Yes. That is why banning me is immoral. 00:45:26 hey banning you doesn't force you to be polite 00:46:01 `run cd bin && echo '#!/bin/sh' > haskell && echo 'T=`mktemp`; echo "$1" > $T; runhaskell $T' >> haskell && chmod +x haskell #edit war, sucker 00:46:04 No output. 00:46:08 WHAT NOW? 00:46:25 Uh, jEdit? 00:46:31 I told you to indent at a width of 4. 00:46:36 Why are you inserting 8 tabs? 00:46:59 you must have tabs set to be half of a space each 00:47:12 *eight spaces 00:47:23 oh. 00:47:28 that's much more reasonable. 00:47:33 (but still wrong) 00:50:51 hey banning you doesn't force you to be polite 00:50:57 it forces me to not be non-polite 00:51:01 `rm bin/haskell 00:51:03 No output. 00:51:04 terrible abuse of mktemp 00:51:10 author does not know how runhaskell functions 00:51:11 also 00:51:18 fails to remove temporary file in any situation (!!!) 00:51:24 thus disk leak 00:51:31 Q.E.D. 00:51:46 runhaskell doesn't allow input from stdin 00:51:51 elliott: erm the /tmp file is not preserved afawct 00:52:02 oerjan: well ok. i defer to all my other reasons 00:52:24 the mktemp is necessary because runhaskell doesn't allow input from stdin. 00:52:27 [elliott@dinky ~]$ runhaskell 00:52:28 main = putStrLn "kallisti is an idiot." 00:52:28 ^D 00:52:28 kallisti is an idiot. 00:52:31 [elliott@dinky ~]$ 00:52:39 Is it just me, or is antialiasing a good thing? 00:52:40 elliott: oh, hmmm 00:52:46 [elliott@dinky ~]$ runhaskell --version 00:52:46 runghc 7.0.3 00:52:48 `runhaskell --version 00:52:49 Sgeo: what 00:52:50 runghc 7.2.1 00:52:51 elliott: that's probably how I implemented it originally 00:52:53 jEdit was hurting my eyes until I enabled subpixel antialiasing 00:53:09 (Well, not literally hurting my eyes, but it was annoying to look at) 00:53:11 oerjan: $TMPDIR might not be, though. 00:53:30 19:35:15: kallisti: 1) Not a classical composer, 2) not a pre-20th-century composer people usually think of in the top five, making "only" bizarre, 3) "clsaasical", 4) "ocmpostr" 00:53:33 Gregor: classical composter 00:53:40 * elliott prefers traditional composint methods 00:53:41 TMPDIR might also have a space in it, which leaves `mktemp` screwing up. 00:53:42 composting 00:53:47 pikhq_: Untrue 00:54:04 Admittedly, this is unlikely in the case of HackEgo. 00:54:10 pikhq_: You are mistaken about how the assignment "statement" works in sh. 00:54:15 (POSIX & bash & all implementations) 00:54:17 -!- Sgeo|jEdit has joined. 00:54:22 Oh, right, that works strangely. 00:54:28 There really isn't a good reason to use this as an IRC client. 00:54:34 `run cd bin && echo '#!/bin/sh' > haskell && echo 'echo "$1" | runhaskell' >> haskell && chmod +x haskell #edit war, sucker 00:54:37 No output. 00:54:37 OF course, the unquoted $T later will screw up. 00:54:41 elliott: it is possible i slightly deluded kallisti into believing runhaskell cannot use stdin *cough* 00:54:46 `rm bin/haskell 00:54:48 No output. 00:54:54 Author does not take advantage of state-of-the-art <<< input methods 00:55:00 oerjan: You are a true patriot 00:55:18 -!- Sgeo|jEdit has quit (Client Quit). 00:55:26 elliott: Which doesn't work with #!/bin/sh (does with #!/bin/bash). 00:55:29 elliott: what advantage? 00:55:36 kallisti: One fewer process 00:55:41 They're in short supply in HackEgo! 00:55:57 pikhq_: Exactly, he uses obsolete technologies!!! 00:56:08 Also, um, echo is a shell builtin. Even in POSIX. 00:56:18 Thus, no extra process. 00:56:36 pikhq_: Nothing's STOPPING you from implementing it as an external program while still being POSIX-compliant. 00:56:44 The builtin could spawn a /bin/echo process. 00:56:53 That said, exec runhaskell <<<"$1" is clearly better. 00:56:55 He used #!/bin/sh, so he can't rely on any implementation guarantees! 00:56:57 elliott: yeah fuck standards compliance! 00:57:10 kallisti: Welcome to the 21st century. 00:57:53 Which I *think* is a Korn-ism, and should work on just about any shell that's not C or very strict POSIX. 00:58:31 `run cd bin && echo '#!/bin/sh' > haskell && echo 'exec runhaskell <<< "1"' >> haskell && chmod +x haskell #edit war, sucker 00:58:33 No output. 00:58:36 `run rm bin/haskell # author has terrible track record; software likely to be unreliable in many respects 00:58:38 No output. 00:58:46 aloril: Fail. 00:58:50 kallisti: 00:58:51 Erm 00:58:51 aloril: Faaaaaaail. 00:58:55 aloril: SHAME ON YOU 00:59:00 pikhq_: fail where? 00:59:05 oh 00:59:12 `run cd bin && echo '#!/bin/bash' > haskell && echo 'exec runhaskell <<< "1"' >> haskell && chmod +x haskell #edit war, sucker 00:59:14 No output. 00:59:20 kallisti: <<< doesn't work in more POSIX-ly shells, such as Debian Almquist. 00:59:23 `run rm bin/haskell # author's contract with us has been terminated 00:59:25 No output. 00:59:37 Also, faaaail 00:59:48 `run cat <<<"1" 00:59:50 1 01:00:02 TIL kallisti can't write a two-line shell script. 01:00:06 Actually, derp 01:00:12 `run <<<"1" 01:00:14 No output. 01:00:23 ... Dammit, that working is a zsh-ism. 01:00:23 `run is sh 01:00:25 not bash 01:00:26 bash: is: command not found 01:00:29 `run bash -c '<<<"1"' 01:00:31 No output. 01:00:32 elliott: I wrote a perfectly fine shell script, but then you told me to use all of these things I'm not familiar with. :P 01:00:34 oh 01:00:43 kallisti: Perfectly fine apart from all the bugs 01:00:54 such as? 01:01:02 `run echo $BASH 01:01:04 ​/bin/bash 01:01:09 Bam, it's bash. 01:01:19 pikhq_: It's bash invoked as sh, I thought, but maybe not 01:01:27 elliott: Can't be. 01:01:27 kallisti: For one, it failed to handle temporary directories with spaces in them. 01:01:39 pikhq_: Hmm, I may have changed that, actually :) 01:01:56 elliott: /bin/sh on the system HackEgo's using is Debian Almquist. 01:02:07 pikhq_: Ah, indeed 01:02:19 pikhq_: Though I believe alternatives lets you select that. 01:02:30 Yeah, but who messes with that? :P 01:02:33 `run cd bin && echo '#!/bin/bash' > haskell && echo 'echo "$1" | runhaskell' >> haskell && chmod +x haskell #this is the best one, okay. 01:02:36 No output. 01:02:48 Hmm. It's not going through the alternatives system here. 01:02:53 It's just a symlink to /bin/dash 01:02:53 `rm bin/haskell 01:02:55 No output. 01:02:59 Spawns additional runhaskell process instead of using exec 01:04:05 `run cd bin && (echo '#!/bin/bash';echo 'exec runhaskell<<<"$1"')>haskell&&chmod +x haskell # Thar 01:04:07 No output. 01:04:28 how is this different from what I wrote.. 01:04:38 or 01:04:39 one of the ones I wrote 01:04:43 that elliott deleted. 01:05:03 oh 01:05:04 I see. 01:05:06 I forgot the $1 01:05:19 Learn to shell kthx 01:05:34 pikhq_: I was under duress from elliott :P 01:06:01 and his fighting words; 01:06:06 fighting words such as "rm" 01:06:13 very enraging. 01:06:51 `haskell main = putStrLn "Hello, World!" 01:06:56 Hello, World! 01:07:50 `haskell 2+2 01:07:55 ​\ /tmp/runghcXXXX276.hs:1:1: \ Parse error: naked expression at top level 01:07:56 `rm bin/haskell 01:07:59 No output. 01:08:07 elliott: use inferior expression-oriented evaluators for that. 01:08:21 elliott: `haskell is for big boys with Real IRC Programs. 01:08:22 You realise that the script in EgoBot does everything you're trying to do and has for ages so you could just copy it in. 01:08:36 elliott: it doesn't _yet_ 01:08:48 oerjan: Yes it does, it would function perfectly in HackEgo's environment. 01:09:08 Also, yeah, I only put that one in because maybe having something do what he *thinks* is desired would make him stop trying. :P 01:09:08 `fetch http://codu.org/projects/egobot/hg/index.cgi/raw-file/4523638d4513/multibot_cmds/interps/ghc/runghc 01:09:10 2011-12-17 01:09:09 URL:http://codu.org/projects/egobot/hg/index.cgi/raw-file/4523638d4513/multibot_cmds/interps/ghc/runghc [91/91] -> "runghc" [1] 01:09:15 `run mv runghc bin/haskell; chmod +x bin/haskell 01:09:18 No output. 01:09:21 `haskell 2+2 01:09:26 Oh, not quite. 01:09:26 cat: 2+2: No such file or directory 01:09:28 Needs one tweak. 01:09:29 :P 01:09:33 @_@ 01:09:41 `run sed -i 's/\$(cat \$1)/$1/' bin/haskell 01:09:44 No output. 01:09:46 `haskell 2+2 01:09:52 4 01:09:58 `haskell main=putStrLn "Hello, world!" 01:10:04 No output. 01:10:10 o_X 01:10:11 o.O' 01:10:18 man it would be so much easier if we like... used that other script 01:10:20 which works fine. 01:10:24 `run runhaskell <<< 'main=putStrLn "Hello, world!"' 01:10:29 Hello, world! 01:10:31 kallisti: Except it clearly doesn't. 01:10:34 Hmm 01:10:37 Maybe 01:10:37 runhaskell <<< $src 01:10:38 pikhq_: in what way? 01:10:41 wasn't as safe as it seemed to be in my tests 01:10:47 kallisti: `haskell 2+2 failed 01:10:55 that's not what `haskell does :P 01:10:55 `run sed -i 's/<<< \$src/<<< "$src"/g' bin/haskell 01:10:57 No output. 01:10:59 `cat bin/haskell 01:11:01 ​#!/bin/bash \ src=$1 \ if ! ghc -e "$src" 2> /dev/null \ then \ runhaskell <<< "$src" \ fi \ 01:11:07 `haskell main=putStrLn "Hello, world!" 01:11:12 No output. 01:11:19 What the fuck? 01:11:29 What the actual fuck. 01:11:33 [elliott@dinky ~]$ ghc -e 'main=putStrLn "Hello, world!"' 01:11:33 :1:5: parse error on input `=' 01:11:33 [elliott@dinky ~]$ echo $? 01:11:33 0 01:11:42 Well that's not fucking idiotic. 01:11:44 WHY GHC WHY 01:11:54 elliott: why did you expect ghc -e to do that? 01:12:04 kallisti: It failed. Failing programs do not exit status code 1. 01:12:14 elliott: $ ghci\nmain=blah\n^D\necho $? 01:12:24 shachaf: It's not ghci, it's ghc -e :P 01:12:44 elliott: ghc -e evaluates ghci expressions. 01:12:49 ghc -e ':m + Foo' -e 'blah' 01:12:51 * oerjan sidles away carefully 01:12:57 kallisti: Because the First Law of Unix is failing programs return 1. 01:12:59 shachaf: PAH 01:13:22 pikhq_: in any case lambdabot works fine for expressions, so does ghc -e 01:13:41 so just have `haskell for actual haskell programs. 01:14:44 kallisti: But GHC is breaking the Law 01:14:50 Not the law, but the Law. 01:14:58 You do not report success on failure. 01:15:10 okay, how is this relevant to having a command that can run whole haskell programs? 01:15:31 Because having a command that can run whole haskell programs and haskell snippets is clearly superior. 01:16:04 what about the intersection of programs that were intended to be whole haskell programs but have syntax errors and accidentally get interpreted as correct expression 01:16:07 YOU NEVER KNOW 01:16:10 IT MAY HAPPEN 01:16:29 You realise that !haskell has always done this. 01:16:35 yes 01:16:42 Its advantages over lambdabot include being able to do IO. 01:16:45 what does that have to do with my TOTALLY AWESOME POINT. 01:16:46 yes I know 01:16:54 `run ghc -e "print 2 + 2" 01:16:59 ​\ :0:11: \ No instance for (Num (IO ())) \ arising from the literal `2' \ Possible fix: add an instance declaration for (Num (IO ())) \ In the second argument of `(+)', namely `2' \ In the expression: print 2 + 2 \ In an equation for `it': it = print 2 + 2 01:17:02 `run ghc -e "print $ 2 + 2" 01:17:07 4 01:17:08 elliott: if only we had some way to do that 01:17:13 * kallisti hmmms. 01:17:23 kallisti: "ghc -e isn't good enough" --kallisti 01:17:31 ..for whole programs, no. 01:17:34 `rm bin/haskell 01:17:36 No output. 01:17:42 kallisti: runhaskell <<< '...' 01:17:49 Basically as short, since apparently you don't mind having to quote things 01:18:23 we could have two different programs. 01:18:36 also, having both in one makes error output potentially confusing. 01:19:13 There are easy ways to report the correct error, but it's even easier to just rm bin/haskell all the time 01:19:48 one day the world is going to need saving 01:19:51 and THE ONLY WAY TO DO IT 01:20:03 IS VIA THIS IRC CHANNEL, BY INPUTTING A WHOLE HASKELL PROGRAM WITHOUT STRINGS TO HACKEGO 01:20:15 AND YOU'RE GOING TO BE SORRY WHEN WE DON'T HAVE THE ABILITY BECAUSE YOU'RE A JERK. 01:20:18 -!- kallisti has quit (Quit: ragequit). 01:21:35 -!- pikhq has joined. 01:22:18 -!- pikhq_ has quit (Ping timeout: 276 seconds). 01:22:53 I would try to make a combination of Forth and Fortran called Forthran, but I don't really know either lnaguage. 01:23:09 That would be ... an interesting language. 01:23:44 It would be stack-based, based on an threaded compiler-style loop, be heavily optimised for fast numerics, have a fixed format for lines to be in... 01:23:52 Assuming we mean Fortran 77 or w/e 01:25:23 -!- kallisti has joined. 01:25:27 AAAAAARGH 01:30:35 -!- cswords__ has joined. 01:32:07 * elliott considers writing a cs-words bot in the proud tradition of news-ham. 01:33:42 " ....too advanced right now." while you may not know what even permutations are, a nice thing to remember is that if N is a subgroup of G that contains half its elements, then it's normal 01:33:56 -!- cswords_ has quit (Ping timeout: 248 seconds). 01:34:45 or if N contains more than a third of G:s elements, since the size of a subgroup divides the size of the group, and G itself is obviously a normal subgroup of itself. 01:35:25 and permutations are divided into even and odd ones, and you have the same amount of each, so evens are normal. 01:36:37 oklopol: I know what a permutation is. -_- 01:36:51 or did you mean permutation group? 01:37:11 what is an "even permutation" 01:39:29 yeah that's what i assumed you didn't get in oerjan's message 01:39:35 the even permutation thing 01:39:40 well 01:39:55 do you know that permutations are generated by swaps 01:39:58 that is 01:40:03 Your item was processed through our JAMAICA, NY 11430 facility on December 11, 2011 at 11:38 pm. Information, if available, is updated periodically throughout the day. Please check again later. 01:40:05 ah okay so I have a vague idea of what a permutation group is, but I'm not clear on what the operation for a permutation group is. 01:40:06 WHY IS MY PACKAGE IN JAMAICA 01:40:16 for every permutation, you can perform a sequence of permutations that just swap two elements which does the same thing 01:40:28 kallisti: oh it's just permuting first with one permutation then the other 01:40:30 oklopol: right 01:40:45 so anyway about these swaps 01:40:58 it turns out half the permutations always take an even amount of swaps 01:41:02 no matter how you do them 01:41:10 and the other half take an odd number of swaps 01:41:22 and the even ones form a subgroup. 01:41:57 BANKRUPTCY EVERYONE!!! 01:42:06 I feel you may be using the word permutation in a different way. I usually think of a permutation as a specific set. but you said "permuting first with one permutation then the other" so then are you talking about permutation as a function? 01:42:13 -!- pikhq_ has joined. 01:42:23 -!- pikhq has quit (Ping timeout: 245 seconds). 01:42:24 a permutation is just a bijection from a finite set to itself, yes 01:42:28 oklopol: ah okay so the parity of a permutation refers to the number of swaps (is there a formal name for that?) 01:42:50 you can represent this with a tuple containing every element exactly once, although there are two ways you can interpret that 01:43:00 oklopol: what about infinite set CHECKMATE!!!! 01:43:04 oklopol: from a finite set to itself... I thought you needed an ordered set for a permutation to make any sense. 01:43:18 kallisti: the number of swaps is not really well-defined 01:43:27 you can perform useless swaps and increase it 01:43:43 point is the parity stays the same (this needs a proof ofc) 01:43:52 kallisti: no you don't need a permutation 01:43:53 well sure I can see why. 01:44:09 a "useless swap" would be where you perform a swap on the same locations twice. 01:44:20 yeah but you could also do something more complicated 01:44:20 2+n will always preserve the parity. 01:44:28 oklopol: yes. 01:44:35 oklopol: but I'm assuming it follows the same basic principle. 01:44:44 happy 1:44 am everybody 01:44:57 well right, it's a plausible conjecture. especially as we know that it's true :P 01:45:41 19:53:10: It's surprising just how unmoonlike the far side of the moon looks. 01:45:42 There's no far side of the moon, really. As a matter of fact it's all far. Er, wait. 01:46:31 we had an 18 hour programming day 01:47:02 oklopol: oh nevermind I misunderstood what you mean by bijective map from a set onto itself. 01:47:36 it just means you move the elements around 01:47:40 oklopol: yes 01:47:53 I was thinking it was a function from a set to itself.... (id function) that didn't make any sense. 01:48:17 yeah the id function is the identity of the permutation group though, so it's very important 01:48:30 ah okay. 01:48:37 and then the operation is composition. 01:48:40 yeah 01:48:41 of the bijective maps. 01:48:45 okay. 01:49:02 of course we have a different permutation group for all set sizes n 01:49:07 so a permutation group just... moves stuff around in a sequence. 01:49:38 like a rubik's cube or something. 01:49:43 yeah. and swaps generate it and things have parity. and every other finite group can be found as a subgroup. 01:49:58 those are the most important things i suppose 01:50:07 oklopol: do the swaps have a name? it would be a permutation where only one element changes. 01:50:15 er, two 01:50:37 yeah but i couldn't remember the real term :d 01:51:33 so all groups have a symmetry group that's all the permutations of its set. 01:51:40 ?? 01:51:56 and then the other permutation groups are subgroups of the symmetry group. 01:51:57 ah it's a transposition 01:52:30 oklopol: hmmm you could also swap things in a cycle. 01:52:43 well the cycles are very important too. 01:52:50 as in, swapping more than 2 elements at once. 01:53:05 but I assume you can construct that from just the 2 element transpositions? 01:53:05 in fact, up to order of cycles, every permutation is a composition of disjoint cycles in a unique way. 01:53:20 yeah you can 01:53:33 that's one way to prove that transpositions generate all permutations 01:53:37 http://phplens.com/phpeverywhere/?q=node/view/254 how to do multithreading in php: make two simultaneous requests to scripts on localhost using asynchronous IO 01:53:41 you can't make this shit up 01:54:47 but about groups and symmetry groups... basically if your group G has size n, then we note that in fact every element of the group "acts" bijectively on G (left multiplication is bijective from G to G), so you can think of any g in G as a permutation on an n element set 01:55:09 and if you take the permutation of each g in G, they form a subgroup of the permutation group of size n which is isomorphic to G 01:55:13 does that make sense? 01:55:13 oklopol: okay so then the transpositions themselves are just elementary permutations that can you can compose into all of the other permutations. 01:55:27 with cycles being another elementary kind of permutation that is also composed of transpositions. 01:56:04 @src (.) 01:56:05 (f . g) x = f (g x) 01:56:05 NB: In lambdabot, (.) = fmap 01:56:09 lesson: @source is not @src, guys 01:56:24 elliott: I was tempted to try @src but I assumed it was the same thing. 01:56:43 20:16:15: @tell Ngevd Is the same as f x = a . b . c . d $ x 01:56:47 is the same as f = a . b . c . d 01:57:03 yeah. if by "that can you can compose into all of the other permutations" you mean every other permutation can be decomposed into a product of transpositions. 01:57:07 20:16:31: @tell Ngevd use catMaybes :: [Maybe a] -> [a] instead 01:57:08 20:21:22: Should it be fixed to work with other monads too? Such as, instead of only list monad it can work other MonadPlus as well. 01:57:08 20:22:09: zzo38: that would make it much more inefficient for the list case I believe. 01:57:14 kallisti: yes, this wild unjustified speculation is reasonable 01:57:23 especially since you can use the SPECIALISE pragma. 01:57:34 elliott, didn't I say that somewhere? 01:57:43 Sgeo: yes, but not while Ngevd was around 01:58:34 elliott: I would think catMaybes uses a recursive definition rather relying on concatMap 01:58:45 +than 01:58:51 kallisti: concatMap is recursive, you moron 01:58:54 which would be more efficient, modulo specialise pragma. 01:58:56 also 01:58:56 elliott: no shit. 01:58:57 20:25:41: @src catMaybes 01:58:58 20:25:41: catMaybes ls = [x | Just x <- ls] 01:58:59 ~NO RECURSION~ 01:59:08 elliott: that's not what I meant. 01:59:11 but no, it would not be more efficient. 01:59:18 GHC has a very aggressive inliner; you're spreading FUD 02:00:04 20:55:43: basically, (.) does _not_ access all the arguments of its first argument, only the first, so there's no way to use it to treat its first argument as taking a stack. 02:00:13 Sgeo: oerjan: however we can model things by changing standard functions 02:00:22 (+) :: (Num a) => (a,(a,r)) -> (a,r) 02:00:31 then all we need is (a,r) -> (a,(a,r)) which is trivial 02:00:36 and (.) works fine 02:00:42 swap :: (a,(b,r)) -> (b,(a,r)) 02:00:50 swap (a,(b,r)) = (b,(a,r)) 02:00:52 elliott: concatenations require more time than simply skipping over Nothing elements in a recursive function while building the list with : 02:00:56 elliott: is what I was saying 02:01:01 elliott: but catMaybes doesn't do that. 02:01:41 kallisti: it is incredibly likely that the concatMap would be completely inlined away in the SPECIALISE-generated Core for zzo's version. 02:02:20 hmm, okay. 02:03:47 21:30:11: It reminds me of that bit in Fine Structure where — oh wait future elliott. 02:03:48 Arse. 02:04:04 I like how he looks hideous in that painting. 02:06:29 elliott, you still haven't read Fine Structure? 02:07:10 I read about ~half of it but then trailed off. 02:08:03 To be fair, the structure of it is sufficiently weird that it's, well, insane to follow. 02:09:00 -!- zzo38 has joined. 02:09:03 * elliott had no problems up to the point he was at. 02:09:31 Maybe he reordered things? 02:09:46 I read it as it released, though. Which was hella-confusing. 02:09:54 Oh, right, he definitely reordered things. 02:10:07 I got up to The Story So Far. 02:10:28 Perhaps I should reread it. 02:10:30 Maybe one or two chapters further. 02:10:31 No, definitely. 02:10:42 Maybe I should read Ra as it comes out. 02:11:12 Unbelievable Scenes, for instance, was not originally the start of Fine Structure. 02:11:28 pikhq_: That is not a change that makes it less confusing. 02:11:37 I'm sad he removed Forgotten things in space though. 02:11:53 Indeed, it was not originally in Fine Structure. 02:12:11 Nor was The Astronomer's Loss. 02:12:33 Neither was Crushed Underground. 02:13:31 what's fine structure about 02:14:14 Lots of things. 02:14:24 As described, "This is a story about science." 02:14:29 http://qntm.org/structure 02:20:14 Well, I now hate my first Hackage package. 02:20:26 And now I know why lazy I/O is loathed 02:20:39 what package 02:20:42 ftphs 02:20:51 why aer you using ftp 02:21:02 why are you using a package that depensd on haskell98 and was last updated in early 2010 02:21:45 elliott, because it's the first one I sw 02:21:46 *saw 02:21:52 clever 02:22:58 23:39:21: that _should_ be enough with a ghc recent enough to support all declarations in ghci. but that's pretty recent, maybe even after latest platform. 02:23:06 oerjan: that's called "ghc from git" 02:23:14 not the most popular release 02:24:44 pretty recent, then. 02:25:32 oerjan: what comes next after 247, 230, 260 btw 02:26:01 hm... 02:26:32 > iterate (zipWith (-) . tail) [247,230,260] 02:26:32 Couldn't match expected type `[a] -> [a]' 02:26:33 against inferred type `[a]' 02:26:45 > iterate (join $ zipWith (-) . tail) [247,230,260] 02:26:47 [[247,230,260],[-17,30],[47],[],*Exception: Prelude.tail: empty list 02:28:05 > scanl (+) 247 [-17,30,77] 02:28:06 [247,230,260,337] 02:28:10 elliott: 337 02:28:18 scientifically proven 02:28:22 oerjan: oh dear. 02:28:25 oerjan: what comes after /that/? 02:28:39 once it exceeds 500 the universe explodes 02:28:51 > scanl (+) 247 $ iterate (+47) (-17) 02:28:52 [247,230,260,337,461,632,850,1115,1427,1786,2192,2645,3145,3692,4286,4927,5... 02:29:24 ok. the universe has 2 more days to live. 02:29:33 then the vortex will engulf us all 02:29:39 ok. 02:29:41 elliott: There's a section in "Mathematics Made Difficult" about "what comes next"-style questions. 02:29:52 shachaf: Yes, yes, anything you want can come next. 02:30:01 Dec 19 2011. Just a little more than a year off. 02:30:03 (I'm assuming that's the point.) 02:30:20 OK, I have now installed a filter that will remove the tongue smiley from every line I type in IRC and IM. I hope to stop overusing it. CAN I SURVIVE??? 02:30:23 oerjan: well the mayans weren't /that/ good at keeping track of time 02:30:33 Gregor: What did you do to the REAL Gregor? 02:31:24 elliott: You'll have to become accustomed to me not sticking my tongue out every line! 02:31:25 ',p 02:31:31 Gregor: :P 02:31:35 oklopol: OH GOD WHAT HAPPENED TO YOUR FACE?!?!?!? 02:31:57 elliott: Well, in particular the contents of that section. 02:32:04 shachaf: Of course the best answer for that is fix (1:) 02:32:38 Gregor: sorry that was my other face 02:32:41 :P 02:32:59 :P:P:P:P:P:P:P:P:P:P:P 02:33:09 :P 02:33:13 :P 02:33:16 OH GOD MY TONGUE HAS A FACE! WITH A TONGUE! 02:33:18 AND IT NESTS! 02:33:21 AAAAGH 02:33:34 :o 02:33:37 pikhq_: those tongues are not getting smaller. your recursion is unsound 02:33:41 i never realized it was supposed to be a tongue, btw 02:33:49 it's finite so it's okay 02:34:01 oerjan: seriously? 02:34:04 elliott: No, my geometry is non-Euclidian. 02:34:18 oerjan: what did you ever realize it is? 02:34:19 >_> <_< 02:34:22 yeah i just thought it was a smiley in profile 02:34:28 I hope I don't just end up overusing these faces >_> 02:34:33 oerjan: how 02:34:36 Or taking the time to type :þ 02:34:37 Gregor: Filter those out too 02:34:51 -!- kallisti has quit (Ping timeout: 248 seconds). 02:34:55 elliott: Naw, I'm not trying to prevent myself from using smileys /at all/, just to stop overusing them. 02:35:00 Gregor: filter everything out 02:35:05 elliott, any good FTP Haskell libraries? 02:35:06 oerjan: I cannot see how that is a smiley in profile at all. 02:35:09 I mean, there's curl, but 02:35:16 Sgeo: http://hackage.haskell.org/packages/archive/pkg-list.html 02:35:20 elliott, I looked 02:35:20 Sgeo: Here's a solution: Don't use FTP. 02:35:22 It's 2011. 02:35:23 Don't use FTP. 02:35:25 irc would be a better place if everyone just said empty lines 02:35:33 02:35:34 you'd have a button called "say" 02:35:45 Too lazy not to use FTP 02:35:53 Sgeo: Why are you using FTP 02:35:58 For class 02:36:14 Sgeo: Can't you just call out to ftp(1) 02:36:16 Too lazy to just grab the files, run the program locally, then upload the result 02:36:29 Dude, don't they have ssh 02:36:41 That's not to my professor's server 02:37:01 Anyway, write a shell script using ftp(1) 02:37:09 Don't want to use bash 02:37:13 Tough 02:37:20 Deal with System.Process' baroque interface then 02:37:56 Or I could attempt to force the list of this thing 02:38:01 That should work 02:38:09 -!- DCliche has joined. 02:38:59 This library looks 100000x more complicated than just using ftp(1). 02:39:19 I just threw in a putStrLn, and all is good 02:41:52 -!- Klisz has quit (Ping timeout: 252 seconds). 02:42:02 Uh, my file got cut off 02:42:08 Whatever, just a trivial bit at the end 02:42:10 Weird though 02:44:23 Why is my file getting cut off? 02:45:21 I don't know, let me get out the oracle of I Haven't Seen Your Fucking Code. 02:45:37 It says you forgot to frobnicate the beeswax. 02:45:53 http://esoteric.voxelperfect.net/wiki/Batman_Wonder_Woman_Relationship 02:45:59 \u00D8 � \u00D8 \u00AA \u00D8 � \u00D8 � \u00D8 \u00A1\u00D9 \"\u00D8 � \u00D9 ... \u00D8 � \u00D8 � \u00D8 � \u00D8 \u00AA \u00D8 � \u00D8 \u00AA \u00D9\u0160 \u00D9 .. 02:45:59 \u00D9 � \u00D9 ... \u00D8 � \u00D8 � \u00D8 � \u00D8 � \u00D8 � \u00D9\" \u00D8 � \u00D8 � \u00D9 ... \u00D8 � \u00D8 � \u00D8 � \u00D9 \"\u00D8 � \u00D8 � \u00D9 \"\u00D8� \u00D9\" \u00D9�\u00D9 � \u00D9 � \u00D9�\u00D8 � \u00D9 � \u00D8 � \u00D8 � \u00D8 \u00AA \u00D9 .. 02:48:04 ? 02:48:19 the contents of that stellar spam page 02:48:38 LOL 02:48:39 Printing the result of putlines made it work 02:48:43 I hate this library 02:49:02 That bot is stupid 02:49:17 Success! 02:49:42 "Autism Mercury Chat" 02:49:45 External links 02:49:46 Wikipedia free odessa personals datingmegafone gay dating numberkansas gay personalsdivorce and personal growth relationshipsyahoo chat listingsthai single datingneta chatballas and bryan relationship 02:51:19 yeah only idiots believe in autism mercury. 02:51:48 mercury, god of autism 02:52:08 dude, my friend got vaccinated and caught autism 02:52:15 never was the same after that 02:52:21 Now I have to leave the world of Haskell and start writing PHP :( 02:52:23 * elliott caught autism in a light breeze. 02:52:28 It's in the air. 02:52:30 elliott: wear one of those masks 02:52:32 Sgeo: aww 02:53:05 copumpkin: It's too late now! They haven't yet found the cure which flips the "autism" bit in the Thinking Lobe of the brain to 0. 02:58:18 well they can detect alzheimer from blood tests now, it can only be a matter of time 02:59:04 also, it think the phrase "the cure which flips the "autism" bit in the Thinking Lobe of the brain to 0" is a sign of autism all by itself. 02:59:07 *i 02:59:12 oerjan: Alzheimer's is actually a trit. The problem is flipping it to 0 instead of 3, sometimes referred to as "super Alzheimer's". 02:59:18 Also, I think it may be a sign of a "joke". 02:59:44 yeah bad humor is also a sign of alzheimer. oh wait. and also, i meant autism. 03:00:00 Perhaps even a sign of ""satirising"" the ""notion"" of ""a"" """cure""" to """"""""""autism"""""""""" "!!!!!!!" 03:00:04 > fix show 03:00:05 "\"\\\"\\\\\\\"\\\\\\\\\\\\\\\"\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"\\\\\\\\\\\\... 03:00:13 > fix autism 03:00:14 Not in scope: `autism' 03:00:54 > fix pmukt 03:00:54 Not in scope: `pmukt' 03:00:55 erm 03:00:57 > fix pmult 03:00:58 Not in scope: `pmult' 03:00:59 > fix ("autism":) 03:01:00 ["autism","autism","autism","autism","autism","autism","autism","autism","a... 03:01:01 Wait, no 03:01:08 > unwords $ fix ("autism":) 03:01:09 "autism autism autism autism autism autism autism autism autism autism auti... 03:01:16 Too much autism! 03:01:21 > unwords$fix("autism":) 03:01:22 "autism autism autism autism autism autism autism autism autism autism auti... 03:01:23 Better? 03:01:40 @hoogle Monoid m => [m] -> m 03:01:40 Data.Monoid mconcat :: Monoid a => [a] -> a 03:01:41 Prelude head :: [a] -> a 03:01:41 Data.List head :: [a] -> a 03:02:03 * MDude 's head explodes from elliot claiming a trit can be set to 3 03:02:05 there should be a function like mconcat, except which use binary splitup 03:02:05 oerjan: fold 03:02:10 from Data.Foldable 03:02:20 i don't think that's binary. 03:02:22 MDude: It's the brain, man. You can't explain the brain!!! 03:02:26 *uses 03:02:31 oerjan: i wrote that before you said that 03:02:34 what do you mean by binary splitup? 03:02:46 you can certainly write a valid fold that e.g. traverses both branches of a binary tree in parallel 03:02:54 f.e. 03:02:58 and other similar tricks, by the monoid laws 03:03:25 oerjan: also mconcat is a class member of Monoid, so... 03:03:31 elliott: well it was while i was doing modular ^ earlier 03:03:54 elliott: well the thing is it would be nice to be able to it with lists, and also without constructing a tree 03:04:18 oerjan: um but you can't really split a list in two and /gain/ efficiency 03:04:26 since you don't know where to split until you reach the end 03:04:45 ^ is essentially (foldMap Product .) . replicate 03:04:51 heh 03:05:09 elliott: um you can collect in twos. i've written such functions before 03:05:12 who put the derp in the herpa-derpa-derp? 03:05:22 oerjan: then i don't know what you are trying to say 03:08:36 -!- kallisti has joined. 03:08:36 -!- kallisti has quit (Changing host). 03:08:36 -!- kallisti has joined. 03:08:55 hai 03:09:11 oerjan: maybe if you gave an implementation :P 03:10:10 > let biFold f [x] = x; biFold f l = biFold f (pair l) where pair (x1:x2:xs) = f x1 x2:pair xs; pair l = l in biFold (*) [1..10000] 03:10:11 284625968091705451890641321211986889014805140170279923079417999427441134000... 03:10:19 > product [1..10000] 03:10:20 284625968091705451890641321211986889014805140170279923079417999427441134000... 03:10:23 > product [1..100000] 03:10:27 mueval-core: Time limit exceeded 03:10:29 > product [1..100000] 03:10:30 oic 03:10:33 mueval-core: Time limit exceeded 03:10:36 oops 03:10:41 > product [1..50000] 03:10:45 334732050959714483691547609407148647791277322381045480773010032199016802214... 03:10:53 gah 03:11:07 > let biFold f [x] = x; biFold f l = biFold f (pair l) where pair (x1:x2:xs) = f x1 x2:pair xs; pair l = l in biFold (*) [1..50000] 03:11:08 334732050959714483691547609407148647791277322381045480773010032199016802214... 03:11:20 > product [1..100000] 03:11:24 mueval-core: Time limit exceeded 03:11:28 > let biFold f [x] = x; biFold f l = biFold f (pair l) where pair (x1:x2:xs) = f x1 x2:pair xs; pair l = l in biFold (*) [1..100000] 03:11:29 282422940796034787429342157802453551847749492609122485057891808654297795090... 03:11:33 there it worked 03:12:10 hm i guess that's not exactly what ^ needs, though 03:12:46 that's actually a different function which could also be done generically 03:12:59 (and in some way is, but you need a dummy Num instance) 03:18:46 Some functions should be changed from Monad to Applicative, such as sequence 03:19:01 zzo38: Strongly agree. 03:20:54 there's sequenceA 03:21:26 There is no sequenceA in Control.Applicative 03:21:31 Data.Traversable 03:21:39 because it applies to all kinds of structures 03:22:08 I think guard should also be Alternative instead of MonadPlus, and so on 03:23:13 -!- Darth_Cliche has joined. 03:23:35 Welp, who votes I reinstall everything 03:26:30 -!- DCliche has quit (Ping timeout: 240 seconds). 03:43:01 I vote you read Fine Structure 03:43:06 And watch Puella Magi Madoka Magica 03:43:12 And read Homestuck... oh wait 03:44:21 > take 10 $ reverse $ show $ product [1..50000] 03:44:25 "0000000000" 03:44:42 Madoka-Kaname, do you vote that elliott watch Puella Magi Madoka Magica? 03:44:51 I dunno! 03:44:56 -!- elliott has quit (Remote host closed the connection). 03:46:14 I haven't seen it, so I can't give such a suggestion. 03:52:11 -!- elliott has joined. 03:52:47 I wonder why this connection is so unreliable lately. 03:53:48 mgnets. 03:54:05 they also stole my a. 03:54:05 wat 03:54:27 i know for a fact that magnets are bad for computers. 03:54:50 Magnets are great for computers. 03:54:50 "trust me, I'm a mathematician" 03:55:13 Who's the mathematician here? 03:55:33 no no, i lost nearly all the games for our first computer because of my stupid cousing playing with a magnet. 03:55:46 *-g 03:55:59 oerjan: Just imagine if magnets stopped working, though. 03:56:07 shachaf: oerjan has a "Ph.D." in "mathematics". 03:56:08 oerjan: Your computer wouldn't be able to read *any* of the games! 03:56:18 If you know what I mean. 03:56:25 What I mean is that oerjan has a Ph.D. in mathematics. 03:56:37 Why is there no instance (Enum x) => Enum (Product x) 03:56:38 elliott: He has one, or he is one? 03:56:47 wow, i would never have guessed. 03:56:48 shachaf: That's for you to decide and me to find out. 03:56:56 I decide that he is one. 03:57:18 Trust him, he's a doctor (of philosphy). 03:57:39 * elliott finds out. 03:57:40 zzo38: i don't think those Monoid wrappers are really intended to be used as independent data types 03:58:05 just for passing to Data.Monoid functions, which don't care about Enum 03:58:23 oh and Foldable. 03:58:36 oerjan: well it makes sense to at least give them Functor instances 03:58:48 Applicative too 03:59:15 Monad, while you're at it. 04:00:13 shachaf: That makes... slightly less sense. Although Applicative is questionable too. 04:00:29 Product (a -> b) is "interesting" if you don't have one of them fancy Num (->) instances. 04:00:50 elliott: I wasn't the one who brought up "sense". 04:06:27 -!- oerjan has quit (Remote host closed the connection). 04:07:02 -!- oerjan has joined. 04:12:05 Trust him, he's a doctor (of philosphy). // Then he IS a D.Ph., he HAS a Ph.D. 04:12:39 technically i have a "Ph.D", aka Dr. Scient. 04:12:42 Gregor: Doctor of Philosophy, abbreviated as Ph.D., PhD, D.Phil., or DPhil 04:13:33 pikhq_: Hmm, my torrent client does indeed record a 16 meg upload of random. 04:13:46 5 days ago, apparently. 04:13:47 -!- salisbury has joined. 04:13:54 By the way, did I mention how there's currently a warrant for my arrest in Finland? 04:14:46 `welcome salisbury 04:14:46 shachaf: Seriously? 04:14:48 salisbury: 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 04:15:05 hey thanks 04:15:05 elliott: Yep. 04:15:12 As of Dec 15. 04:15:15 shachaf: I think I'm going to like this channel 04:15:18 shachaf: Doesn't matter, I hear Finland is very depressing and a bit of a gulag. 04:15:39 shachaf: Did you smile. 04:15:48 Gregor: It's a nice place, man. Lots of lakes. 04:15:49 You should know never to smile in Finland. 04:15:54 salisbury: You can thank for the welcome, but it's there to scare away people who come in looking for astral projection 04:15:56 -!- kallisti has quit (Quit: Lost terminal). 04:16:05 Gulakes(ag). 04:16:19 elliott: They sent me a booklet about my exciting future as a Finnish soldier, and a bunch of the people in it were smiling! 04:16:29 elliott: Note: I tried to put a tongue smiley on my last line and my IRC client removed it. I'm becoming less smiley-dependent already! 04:16:30 Yes. We have to make sure they're *determined* to stay on the path before revealing things like THAT. 04:16:44 astral projection? 04:16:50 Gregor: Somehow the sentence loses nothing for it. 04:16:57 elliott: Exactly! 04:17:10 salisbury: some people are confused and think esoteric means anything but programming languages and also what happens in this channel 04:17:10 salisbury: http://en.wikipedia.org/wiki/Esotericism is relevant :p 04:17:21 It is NOT relevant to this channel though >_> 04:17:34 Well, it's about as relevant as what we usually talk about. 04:17:36 But: less interesting. 04:18:50 shachaf: So why do they have a warrant for your arrest? 04:19:04 Did they draft you or something? I hear Finland does that because it's very depressing and a bit of a gulag. 04:19:10 elliott: They did draft me. 04:19:18 That's because they weren't aware I was a citizen of any other countries. 04:19:23 X-D 04:19:24 (Which I am. Two others.) 04:19:40 You just need to get drafted simultaneously in those ones too. 04:19:40 They draft everyone. I assume you're an expatriot then? Also I thought it didn't matter, they drafted all citizens regardless. 04:19:46 A lot of things are in this channel. The main topic is esoteric computer programming but a lot of other things are discussed, which might, in some cases, have a small amount to do with such things. But if you have message about esoteric programming then please do so. 04:19:56 Gregor: Expatriot :D 04:19:57 Gregor: They don't draft you if you're a US citizen living in the US. 04:20:23 elliott: I CHOOSE TO STICK WITH MY TYPO. 04:20:23 * shachaf also enjoys "expatriot". 04:20:27 elliott: HE IS NO LONGER A PATRIOT. 04:20:41 -!- itidus21 has quit (Read error: Connection reset by peer). 04:25:05 Wow, there are a lot of programming languages I had no clue about.. 04:25:38 most are bad 04:26:31 All are bad. 04:26:36 I see someone put Lisp on there under its development code-name, Parenthesis Hell. 04:27:02 salisbury: Don't be silly, people wrote m-expressions back then. 04:27:13 (Well, okay, they *didn't* and that's why m-exprs never took off.) 04:27:14 bracket hell 04:27:40 Did you hear the theory of how the progress of computer programming involves moving parentheses further and further to the right? 04:28:12 No, but I'm sure you're about to tell us. 04:28:21 The esoteric programming involves a few experimental things, or themed, or joke, or whatever. Instead of being constraint to the purpose of programming, it can be not constrainted to actual use. Some esoteric programming can even be uncomputable 04:28:33 elliott: If you'd said "yes", I wouldn't've. 04:28:44 shachaf: And I wouldn't have been sure! 04:29:02 Allow me be the first to say, "um, DUH?". 04:29:07 *me to 04:29:16 The general idea goes that first you had (f x y); then that turned into f(x, y); and then with OO that turned into x.f(y). 04:29:27 There was more to the theory but I've forgotten it. 04:29:40 x.f y () 04:29:53 * elliott *slightly* suspects f(x, y) predates (f x y). :p 04:29:55 x..............fy)( 04:30:04 elliott: Be quiet. 04:30:13 )x.f.y( 04:30:14 Plagiarist. 04:30:19 I'm speaking really quietly, your IRC client is just amplifying it. 04:30:26 )(x)(f)(y)( 04:30:34 elliott: Too many capital letters. 04:31:18 Maybe I should just bite the bullet and die of something-or-other poisoning; i.e. actually boot this installation non-CD. 04:32:50 elliott: What's non-CD about it? 04:32:58 Is it compact? Is it a disc? 04:33:24 Well, it's not a disc, it's not optical, it's not all *that* compact, and it's not going into a CD drive. 04:33:52 elliott: Is it more compact than a CD? 04:34:02 Fine, it's not a disc. Is it a disk? 04:34:09 No. And yes. 04:34:43 disq 04:35:08 we must therefore invent a language in which all the parentheses are put at the end, after the rest of the code. 04:35:48 , name it after shachaf 04:35:57 oerjan: f g h x y z (((,),,)) 04:36:04 erm 04:36:05 oerjan: f g h x y z (((,),)) 04:36:09 == f(g(h(x,y),z)) 04:36:11 oh, lambdabot is in here too 04:36:15 elliott: sorry, no commas allowed after parentheses 04:36:27 oerjan: ok do currying then 04:36:42 > putStrLn "hey, what's up man?" 04:36:43 04:36:46 .. 04:36:55 oerjan: oh that breaks down a bit 04:36:56 !haskell putStrLn "hey, what's up man?" 04:36:59 hey, what's up man? 04:37:00 salisbury: lambdabot doesn't allow IO. 04:37:54 shachaf: So apparently the GHC devs fixed that type family bug by making the type-signatureless function fail to compile. 04:37:57 > unsafePerformIO $ putStrLn " " -- You have to know how to do it. 04:37:58 04:38:02 elliott: Makes sense. 04:38:07 shachaf: It does? 04:38:10 f g h x y z (((()())())) 04:38:12 > unsafePerformIO (putStrLn "hey, whats up man") 04:38:13 04:38:16 elliott: Yes. 04:38:20 * elliott would generally expect "f x = g x" to always work. 04:38:24 Assuming g is a function. 04:38:28 Which it unambiguously is, here. 04:38:40 elliott: Is there no way to break it with Rank-N types or something? 04:38:44 Or, for the even simpler case, that "y = x" would always work. 04:38:47 salisbury: lambdabot is subtly hinting that you're trying to print the wrong thing. 04:38:51 Where x has any type, I mean come on. 04:38:58 I doubt you can break _that_ with rank-N types. 04:39:05 elliott: It's, like, linear types, man. 04:39:20 > unsafePerformIO $ text "Testing" 04:39:22 Testing 04:39:29 !! 04:39:40 is unsafeperformio = id 04:39:53 ?? 04:40:27 shachaf is doing this thing called ``trolling''. 04:40:33 elliott: No I'm not! 04:40:51 I'll admit, he's got me on this one 04:41:04 :t unsafePerformIO 04:41:05 forall a. a -> a 04:41:10 I shouldn't have done that, I think I gave it away 04:41:10 @undefine 04:41:15 > unsafePerformIO $ text "hey, what's up hermaphrodite" 04:41:16 Not in scope: `unsafePerformIO' 04:41:20 @let unsafePerformIO = undefined 04:41:20 :2:0: 04:41:20 Multiple declarations of `L.unsafePerformIO' 04:41:20 Declared... 04:41:26 shachaf: Oi. 04:41:26 Too late. :-( 04:41:48 > text "Lambdabot prints Docs as you see" 04:41:49 Lambdabot prints Docs as you see 04:41:49 :t text 04:41:50 String -> Doc 04:42:01 Sgeo you magic 04:42:09 My unsafePerformIO was just an attempt to continue the trolling 04:42:25 > text "a\nb" 04:42:26 a 04:42:26 b 04:42:41 > text "\n" 04:42:42 Terminated 04:42:44 > text "\n" 04:42:44 Terminated 04:42:48 > text "a\n\nb" 04:42:49 a 04:42:49 04:42:49 b 04:42:52 > text "\nbluh" 04:42:53 bluh 04:43:36 > text $ interleave (repeat 'a') (repeat '\n') 04:43:40 mueval-core: Time limit exceeded 04:43:42 :0 04:43:59 > var $ interleave (repeat 'a') (repeat '\n') 04:44:00 a 04:44:00 a 04:44:00 a 04:44:00 a 04:44:00 a 04:44:02 [21 @more lines] 04:45:11 @more 04:45:11 a 04:45:11 a 04:45:11 a 04:45:11 a 04:45:11 a 04:45:13 [16 @more lines] 04:45:15 @more 04:45:15 a 04:45:17 a 04:45:19 a 04:45:19 How unpredictable! 04:45:21 a 04:45:23 a 04:45:25 [11 @more lines] 04:45:27 @more 04:45:27 a 04:45:29 a 04:45:31 a 04:45:33 a 04:45:35 a 04:45:37 [6 @more lines] 04:45:39 @more 04:45:40 a 04:45:41 a 04:45:43 a 04:45:45 a 04:45:47 a 04:45:48 Let me guess? More 'a's? 04:45:49 ... 04:45:55 The surprising end! 04:46:11 I have such perfectly bad timing 04:46:35 oerjan: Nice trick to get an infinite Doc, though 04:46:42 Since widths are per-unit-of-text-thing 04:47:18 :t var 04:47:19 forall a. String -> Sym a 04:47:31 [elliott@dinky ~]$ pacman -Qe | wc -l 04:47:31 218 04:47:34 That's not many, right??? 04:47:38 oerjan: oh :P 04:47:42 oerjan: well i think you could do it 04:47:45 with the vertical layout operator 04:47:55 if you say so 04:47:55 :t ($$) 04:47:56 Doc -> Doc -> Doc 04:48:35 > foldl1 ($$) (repeat 'a') 04:48:35 Couldn't match expected type `Text.PrettyPrint.HughesPJ.Doc' 04:48:36 agains... 04:48:38 oop 04:48:51 > foldl1 ($$) (repeat (text "a")) 04:48:56 mueval-core: Time limit exceeded 04:49:04 creys 04:49:11 monqy: foldl1 never is lazy 04:49:11 crey mainframe :( 04:49:14 oh 04:49:15 :( 04:49:19 oerjan: er are you sure 04:49:23 > foldr1 ($$) (repeat (text "a")) 04:49:24 > foldl1 f (repeat x) 04:49:28 oh 04:49:28 mueval-core: Time limit exceeded 04:49:28 mueval-core: Time limit exceeded 04:49:29 foldl 04:49:29 rite 04:49:35 not that it helped 04:49:38 there is an empty :: Doc, btw :P 04:49:40 or mempty :: Doc 04:49:47 > foldr1 ($$) (repeat (text "a")) 04:49:51 mueval-core: Time limit exceeded 04:50:00 it doesn't look like it helps, anyway 04:50:38 > foldr1 ($$) (replicate 10 (text "a")) 04:50:39 hmm, 188 in 19 04:50:41 a 04:50:41 a 04:50:41 a 04:50:41 a 04:50:41 a 04:50:43 [5 @more lines] 04:50:57 yay 04:51:01 oh 04:51:02 nay 04:51:03 @more 04:51:03 a 04:51:03 a 04:51:03 a 04:51:03 a 04:51:03 a 04:51:11 :t ($$) 04:51:14 Doc -> Doc -> Doc 04:51:37 elliott, update 04:51:44 oerjan: http://www.reddit.com/r/haskell/comments/nfyvy/instance_monad_ziplist_where/ 04:56:28 I think I crushed oerjan. 04:56:44 rip 04:56:55 why? 04:57:16 copumpkin: he's been maintaining that ZipList is a monad for ages now :) 04:57:22 well because i have several times claimed that ZipList _can_ be a Monad 04:57:29 it is if you have constraints on the list 04:57:33 no shit 04:57:42 i don't think that's needed. 04:57:56 oerjan: http://stackoverflow.com/questions/6463058/help-on-writing-the-colist-monad-exercise-from-an-idioms-intro-paper seems to have a lot more info, including some from McBride 04:58:09 i'm already on that page. 04:58:12 it is needed 04:58:35 copumpkin: well afaik nobody has actually proved it, at least not publically 04:58:41 and oerjan has a definition he think works 04:58:56 pure produces an infinite list? 04:59:00 I guess it already did 04:59:02 -!- augur has quit (Remote host closed the connection). 04:59:10 copumpkin: yes, what use would ziplist be otherwise 04:59:15 f <$> xs <*> ys 04:59:30 how do you write join if you have no guarantee the intermediate list contains anything at all? 04:59:48 i can dig up oerjan's definition if you want 04:59:49 `log zjoin 04:59:53 it satisfied the easier monad laws 04:59:54 oerjan: oh, I see 05:00:04 cthulhu does too 05:00:08 wat 05:00:17 2011-11-30.txt:10:01:44: oerjan: yes, I am sure that zjoin works fine in the theory you have used to create it :P 05:00:22 argh 05:00:24 zjoin = ZipList . diag . scanl1 (zipWith (flip const)) . map (getZipList) . getZipList where diag = concat . takeWhile (not . null) . map (take 1) . foldr (\x xs -> x:map (drop 1) xs) [] 05:00:28 copumpkin: there you go 05:00:29 thanks 05:00:42 @let zjoin = ZipList . diag . scanl1 (zipWith (flip const)) . map (getZipList) . getZipList where diag = concat . takeWhile (not . null) . map (take 1) . foldr (\x xs -> x:map (drop 1) xs) [] 05:00:44 Defined. 05:00:48 :t zjoin 05:00:49 forall a. ZipList (ZipList a) -> ZipList a 05:01:00 TEST 1: passed 05:01:04 XD 05:01:12 * elliott thinks quickcheck could be useful here. 05:01:35 > getZipList (zjoin (ZipList [ZipList [], ZipList [1]])) 05:01:39 mueval-core: Time limit exceeded 05:01:43 lol 05:01:46 > getZipList (zjoin (ZipList [ZipList [], ZipList [1]])) 05:01:49 mueval-core: Time limit exceeded 05:01:53 wat 05:02:07 Prelude Control.Applicative> let zjoin = ZipList . diag . scanl1 (zipWith (flip const)) . map (getZipList) . getZipList where diag = concat . takeWhile (not . null) . map (take 1) . foldr (\x xs -> x:map (drop 1) xs) [] 05:02:08 Prelude Control.Applicative> getZipList (zjoin (ZipList [ZipList [], ZipList [1]])) 05:02:08 [] 05:02:09 yw 05:02:13 bit of a hard computation 05:02:38 @check \x -> True 05:02:38 Not in scope: `myquickcheck'Not in scope: data constructor `True'Not in sco... 05:02:44 :D 05:03:07 Cale broke something when reinstalling lambdabot's dependencies, I guess 05:03:20 > getZipList (zjoin (ZipList [ZipList [], ZipList [1]])) -- how does this manage to break lambdabot 05:03:22 [] 05:03:26 ah. 05:04:10 @check is this fixed yet 05:04:10 Not in scope: `myquickcheck'Not in scope: `is'Not in scope: `this'Not in sc... 05:04:13 OH GOOD 05:04:14 @check ) 05:04:15 Unbalanced parentheses 05:04:21 @check ")" 05:04:21 Not in scope: `myquickcheck'Not in scope: `$' 05:04:24 X-D 05:05:29 @check ")" where x$y=x y 05:05:30 Parse error at "where" (column 5) 05:06:01 It probably parses your expression to check it's valid first. 05:11:05 pikhq_: Can you dd this ISO file to my USB drive for me? 05:23:00 -!- augur has joined. 05:24:48 so afaiu the monad law which is in doubt is zjoin . fmap zjoin = zjoin . zjoin 05:25:13 *sigh* 05:27:49 If all lists are of same length, then you can join because it is like (->) monad 05:28:36 oerjan: sounds difficult :P 05:28:41 to prove, I mean 05:28:50 when ever I think Im getting my mind around Haskell, someone goes any types something like let zjoin = ZipList . diag . scanl1 (zipWith (flip const)) . map (getZipList) . getZipList where diag = concat . takeWhile (not . null) . map (take 1) . foldr (\x xs -> x:map (drop 1) xs) [] 05:29:42 and* 05:29:55 elliott: well i _think_ that the nth element of each of those lists only exists when the (x,y,z)'th element of the original matrix exists for all x,y,z <= m, and when it does it's of course the (m,m,m)'th element. 05:30:10 s/only exists/exists precisely when/ 05:31:42 -!- MDude has changed nick to MSleep. 05:32:00 er 05:32:11 s/\/n/g 05:32:23 salisbury: Don't worry, oerjan is just terrible at Haskell. 05:32:51 D: 05:33:09 (By "terrible" I of course mean "amazing".) 05:33:15 (by "amazing" I mean terrible) 05:33:18 (it's code) 05:33:20 (secret code) 05:33:35 s/terribly amazing/amazingly terrible 05:33:47 I don't even know what "s/something/something else" means 05:34:25 salisbury: it's vi substitution command 05:34:30 I'm guessing it is not a perl regex 05:34:35 You forgot the last /. 05:34:45 It has the same semantics as Perl s///, it's just fuzzier. :p 05:34:49 oerjan: *ed 05:34:56 ah. 05:35:11 salisbury, do you understand chains of function composition? 05:35:15 don't count on me using consistent regex syntax as well 05:35:20 yes 05:37:34 I just don't really understand what that particular chain is supposed to accomplish 05:38:51 I haven't looked it closely enough 05:39:03 I know more than most beginners, I think, but I'm no expert 05:39:44 remember that time when you wrote cat in haskellg 05:39:46 good times, good time 05:39:47 s 05:39:50 05:40:14 05:40:30 Let me paste my recent code 05:40:33 pikhq_: Does C seriously not guarantee anything about float/double semantics 05:40:48 Not that it's not bad 05:41:01 And some of the comments are obsolete 05:41:09 salisbury: well the diag is taking the diagonal of a list of lists. the scanl1 (zipWith (flip const)) is to fix a problem with the monad laws for ZipList if you do it naively. 05:41:22 *diag function 05:41:30 oerjan: the (>>=) in the reddit post I linked looked like the (>>=) for your zjoin 05:41:31 but I'm not sure 05:42:13 http://hpaste.org/55359 05:42:56 I'm aware that one of the "Dealing with Lazy I/O" lines is probably unnecessary 05:42:59 as is the return () 05:43:58 The "huge trick"? 05:44:01 I was pretending to myself that I might show this to non-Haskellers at some point 05:44:10 "main should always be IO ()" False. 05:44:29 elliott, there's something on the wiki with a function that will read a marked comment in the source 05:44:34 (print =<<) $ putlines ftpConn "populate.php" . lines . buildPHP $ files -- print in the hopes that it forces the entire thing to go through 05:44:37 s/$/./ 05:44:47 Sgeo: Uhh, Haskell is a compiled language. 05:45:12 Nevertheless 05:45:13 http://www.haskell.org/haskellwiki/Poor_man's_here_document 05:45:15 Sgeo: Also theg enerated code has a massive security hole. 05:45:17 *the generated 05:45:36 Sgeo: And that page should be deleted, it's completely unjustifiable to do that. 05:46:13 elliott, hmm? Well, the page is visited once then deleted 05:46:15 But what is it? 05:46:32 insertFile file = "$query = \"INSERT INTO sg_songs (path) VALUES ('" ++ file ++ "')\";\n" ++ performQuery 05:46:40 Oh 05:46:41 -!- oerjan has quit (Remote host closed the connection). 05:47:19 http://hpaste.org/55354 ;; the difference is the difference between fmap and (=<<). 05:47:36 elliott, #haskell helped me with that earlier 05:48:48 elliott, in fairness wrt the SQL injection, it's a one-off script that could only have been exploited by someone knowing that I was generating the page, then visiting the generated page before I had a chance to vet it then run it 05:48:57 And who had access to my FTP 05:49:09 Sgeo: Yes, "it's not a security hole until it bites me" is a common sentiment. 05:49:10 But that's how these things start, isn't it? 05:49:55 Does anyone know a convenient way to sort a list of human file sizes? 05:49:59 i.e. 1.9M vs. 124K. 05:50:41 Is the _ <- stuff ok or bad? 05:50:53 It's fine. You can use Control.Monad.void if you want. 05:51:08 That also lets you reduce do { _ <- m; return () } -> void m 05:51:42 It could use (() <$ m) for any functors 05:55:02 elliott, fun fact, that hope that the print would force the entire thing to go through, instead of cutting stuff off: It worked. 05:55:13 I do not like this library. 05:55:31 @hoogle a -> IO () 05:55:33 Control.Concurrent.SampleVar writeSampleVar :: SampleVar a -> a -> IO () 05:55:33 Control.Concurrent.MVar putMVar :: MVar a -> a -> IO () 05:55:33 Data.IORef writeIORef :: IORef a -> a -> IO () 05:55:44 Someone showed me a function that would do similar 05:55:48 @hoogle evaluate 05:55:49 Control.Exception.Base evaluate :: a -> IO a 05:55:49 Control.Exception evaluate :: a -> IO a 05:55:49 Control.OldException evaluate :: a -> IO a 05:58:49 Sgeo: ITT: deepseq 06:00:00 elliott, I think I'd have to combine deepseq with evaluate, otherwise the deepseqing itself won't be evaluated, I think 06:00:29 Or is fully evaluated later than I want 06:00:30 xs `deepseq` return (), but that's just the same as evaluate xs, modulo exceptions. 06:00:49 erm 06:00:52 *evaluate (deepseq xs) 06:00:58 erm 06:00:59 *evaluate (rnf xs) 06:01:01 dur 06:01:07 where deepseq a b = rnf a `seq` b 06:01:23 evaluate (force xs)? 06:01:27 What is force 06:01:39 (evaluate (rnf a) is equal to (a `seq` return a) >>= return, not (a `seq` return a). If you didn't jump, you don't know Haskell yet.) 06:01:42 Erm 06:01:46 (evaluate (rnf a) is equal to (rnf a `seq` return a) >>= return, not (rnf a `seq` return a). If you didn't jump, you don't know Haskell yet.) 06:01:49 Blah blah blah 06:03:03 rnf returns a () 06:03:08 wow, returns is a bad word 06:03:15 rnf :: a -> () 06:03:19 OK fine 06:03:21 (ok, not quite) 06:03:30 (evaluate (rnf a) is equal to (rnf a `seq` return ()) >>= return, not (rnf a `seq` return ()). If you didn't jump, you don't know Haskell yet.) 06:03:46 "jump"? 06:03:47 AKA evaluate (rnf a) is equal to (deepseq a (return ()) >>= return), not (deepseq a (return ())).) 06:03:52 Sgeo: Yep. 06:04:00 There is a very obvious, very terrible thing there, and you are completely missing it. 06:04:04 If by that, you mean wondering what the difference is 06:04:13 There is no difference; that's one of the monad laws. 06:04:17 m >>= return = m. 06:05:04 I was more confused than startled 06:07:46 > (undefined >>= return :: a -> b) `seq` 1 06:07:46 1 06:09:47 elliott, so why is evaluate (rnf a) one but not the other of things that are equivalent? 06:10:57 > let eval x = x `seq` return x in eval undefined `seq` () 06:10:58 Ambiguous type variable `m' in the constraint: 06:10:58 `GHC.Base.Monad m' 06:10:58 a... 06:11:03 >_< 06:11:07 > let eval :: a -> IO a; eval x = x `seq` return x in eval undefined `seq` () 06:11:08 *Exception: Prelude.undefined 06:11:13 > let eval :: a -> IO a; eval x = (x `seq` return x) >>= return in eval undefined `seq` () 06:11:14 () 06:11:43 Hint: seq is the only thing that lets you distinguish (const _|_) from _|_, and in GHC, IO is implemented with a function inside. 06:13:40 ok, hoogle doesn't let me do _|_.. 06:13:53 salisbury, _|_ is another name for bottom 06:13:55 salisbury: _|_ is any bottom value. 06:14:01 e.g. undefined, or fix id, or error "hi". 06:14:04 And you can use error or undefined as a convenient way to make bottom 06:14:22 I have a function (x -> Natural) for a bounded enumeration x and want to make list of all functions of the same type that their output does not exceed the output of the original function for each input. 06:14:25 Does the runtime detect fix id as <>? 06:14:55 Sgeo: I believe so. 06:15:01 fix id 06:15:06 let x = id x in x 06:15:12 let x = x in x 06:15:17 That's a pretty obvious BLACKHOLEy type thing. 06:15:22 I don't know the actual terminology. 06:15:34 I think the threaded runtime doesn't detect <> at all, though. 06:16:09 oh no.. I use that 06:16:11 How can I make a function to make such a list? 06:16:34 salisbury: ? 06:16:49 I use the threaded runtime 06:17:08 salisbury: You don't care about <> detection. 06:17:10 It's just a cheap trick. 06:17:12 salisbury, so you lose a minor bragging point 06:17:17 over other languages 06:17:22 Not a big deal, I think 06:29:36 elliott: It does. 06:29:42 Oh, okay. 06:29:45 elliott: But only on GC, or something like that. 06:29:49 Heh. 06:29:55 Whereas the non-threaded one detects it immediately. 06:29:56 I don't think fix id allocates. 06:31:19 elliott: Does that matter? 06:31:27 Well, no. But that's what we were talking about. 06:31:29 When the thread tries to evaluate the BLACKHOLE, it'lll get suspended. 06:33:00 GHC GCs while not doing anything? 06:33:39 That's the best time to GC, obviously. :-) 06:33:56 kmc might know the details of this. 06:37:43 I'm disappointed in you all for not making me boot this installation media. 06:38:50 elliott: I'm disappointed in y'all for saying "this ... media". 06:38:58 If it wasn't for this annoying grammatical nitpick I would've done it. 06:39:19 Hmm. 06:39:34 Installation media is a set of {installation CD, installation HD, ...}. 06:39:41 Yes, you're right, it should be "medium". 06:39:43 *medium 06:39:45 (And now for elliott to comment on "wasn't".) 06:39:54 Not "y'all"? 06:40:05 No, "y'all" is an abbreviation for "you all". 06:40:10 It's an accepted one. 06:40:13 I'm one person, shachaf. 06:40:15 Usually. 06:40:23 omfgwhat 06:40:25 elliott: This is where we disagree. 06:40:32 black holes and revelations 06:40:34 Dammit, the elliott cabal has been revealed. 06:40:44 elliott bourbaki 06:40:56 kmc: hi. 06:41:02 hi elliott 06:41:04 helliott 06:41:11 Hi shachaf. Hachaf. 06:41:25 -!- elliott has quit (Quit: shift change for elliott bourbaki). 06:41:26 Bless you, elliott. Blelliott. 06:41:29 That's a fun word. 06:42:33 how come you all talk about haskell all the time 06:42:37 is it the best esoteric language 06:42:59 kmc: #haskell is too full of monad jokes. 06:43:07 what's the best language if im' drunk 06:43:09 This is our escape. 06:43:35 kmc: "I'm drunk". That would be a good keyword for gmail to look for. 06:43:59 WHOA, DUDE. KEYWORD ~ PASSWORD 06:44:02 http://www.sparkfun.com/products/8880 06:44:35 here this should help http://lusorobotica.com/index.php/topic,111.0.html 06:45:11 -!- PiRSquared17 has left. 06:45:15 My head just started seriously hurting. :-( 06:46:13 sux 06:46:53 chemical warfare, chemical warfare, chemical warfare warfare warfare 06:48:27 keep that up and we'll have a Stop IRC Violence Act by this time next month 06:50:06 Do you know what is the best way to make a function that will make a list of all function the output does not exceed the output of the original function for each input that it can be given? 06:50:53 has anyone really been far even as decided to use even go want to do look more like? 06:52:23 kmc: That seems a difficult question that I don't know the answer. 06:52:47 there's no escaping from ohio 06:53:03 -!- elliott has joined. 06:53:13 Look more like what? 06:55:48 -!- Ngevd has joined. 06:58:51 wait where did oerjan go 06:59:01 Hexham 06:59:08 -!- Darth_Cliche has quit (Quit: You are now graced with my absence.). 06:59:11 Where I will now go 06:59:13 -!- Ngevd has quit (Client Quit). 07:00:55 jupiter and beyond the infinite 07:01:30 I have this weird suspicion that kmc isn't entirely sober right now. 07:02:06 it's illegal to be drunk on the internet 07:02:09 we all know that 07:02:15 Yes. 07:02:16 Yes it is. 07:04:53 1 result (0.27 seconds) 07:05:27 It's a well-guarded secret that we all know. 07:09:27 Jupiter is too far away, isn't it? 07:10:17 yes 07:11:01 no actually, if you use the teleport monad 07:11:20 it's undocumented though 07:12:06 >>= :: :: Monad m => m a -> (a -> m b) -> Jupiter 07:12:26 yes, I did mean to type :: twice 07:12:50 The bane of kmc has reached us, even here. 07:13:52 (::) :: Term → Type → Decl 07:14:09 -!- kmc has left ("Leaving"). 07:14:13 -!- kmc has joined. 07:14:30 shachaf, it's your fault really 07:14:48 It is? 07:15:00 you summoned me here 07:15:04 I did? 07:15:12 kmc might know the details of this. 07:15:15 You mean during the BLACKHOLE discussion? 07:15:16 Ah. 07:15:20 You were already in this channel. 07:15:21 the blackest of holes 07:15:25 yeah 07:15:28 i forgot why 07:16:05 Probably to talk about @. 07:16:26 kmc, loop detection in threaded runtime 07:16:38 yeah i dunno how that shit works 07:17:08 elliott, did I just talk to you in another channel? 07:17:18 I have a program to tell you how far away Jupiter is. It is 4.33 units far. 07:17:38 `addquote I have a program to tell you how far away Jupiter is. It is 4.33 units far. 07:17:41 elliott, fun fact: I just confused you with someone else. 07:17:44 767) I have a program to tell you how far away Jupiter is. It is 4.33 units far. 07:17:45 10 parts sugar, 90 parts whiskey 07:17:52 Sgeo: Cool. 07:18:13 "Hearts full of youth / Hearts full of truth / Six parts gin to one part vermouth" 07:19:09 (Distance from the Earth) 07:21:17 Distance from sun is 4.97 07:22:02 * kmc slept through all the lectures but did not cheat on the exams 07:22:34 Average distance from sun is 5.203 07:23:13 Or, at least, this is what it says on the computer. 07:23:15 salisbury doesn't know how to do that thing kmc just did 07:23:52 salisbury also is a chemical pharmacology student and wishes he did comp sci. formally...... 07:24:15 pharmacology?!?!?!? 07:24:21 that's way the fuck better than CS 07:24:47 yeah, but you folks know all this amazing haskell shit 07:24:51 salisbury: /me ... 07:25:01 salisbury: You don't need to be a formal CS student for that. 07:25:04 yeah but you can synthesize novel 5HT subtype-selective receptor agonists 07:25:17 yes 07:25:19 well, 07:25:20 no 07:25:21 but 07:25:24 in theory 07:25:32 plz 07:25:49 salisbury, repeat after me 07:25:55 /me just learned how to /me 07:26:06 * salisbury just learned how to /me 07:26:08 yay 07:26:12 elliott thinks referring to yourself in the third person is just dandy. 07:26:33 elliott: If first -> third, you should second -> first. 07:26:49 Quite. 07:27:06 But also I'm lazy. 07:27:23 kmc, you live in CA? look up alexander shulgin 07:27:29 he lives in the mountains or something 07:27:34 i know who shulgin is ;P 07:27:36 but i don't live in CA 07:28:01 shulgin is basically the man 07:28:03 in this field 07:28:06 but he's pretty old and retired 07:28:34 he has a lab in his garden shed I'm fairly sure 07:28:48 i think much of the research in this area is done by the nichols group at purdue 07:28:54 these days 07:29:49 kmc: Have you considered moving to CA? 07:30:18 shulgin has taken probably 07:30:31 more distinct psychoactive drugs than anyone else in human history 07:30:38 I can compute a lot of other things about planets and sun and moon and so on, not only the distance 07:31:04 shachaf, yes 07:31:17 And even a few asteroids and fixed stars, and even fictitious planets can be computed 07:31:34 there is no interesting research in Canada.. 07:32:00 aaanddd.. I'm transferring into U Toronto.. 07:32:01 salisbury: Are you sure? Have you checked? 07:32:52 at my school the Haskell interest group and the psychedelics / research chemical interest group overlapped significantly.... 07:34:49 I don't even know anyone else who uses Haskell 07:35:06 If you want these informations (including for future and past), you cantell me I can put it into the computer figure out distances and angles and azimuth and whatever else 07:36:28 zzo38 distance from the moon to haley's comet in 1912 07:36:47 in millimeters 07:37:44 O, no, haley's comet is not on here. And distances are only in AU 07:38:05 But angles can be measured in three different ways (radians isn't one of them). 07:38:21 just because it's not on there does not mean its 0 07:38:30 unknown would be more appropriate diction 07:38:55 I didn't say it was 0, I used the letter O not the number 0 07:39:50 I plan I might write a better program later, so I might be able to included haley's comet but probably not in millimeters 07:40:37 *Halley's 07:44:44 I know how to figure out the Chinese New Year, do you know the Chinese New Year? 07:47:45 "I know how to figure out the Chinese New Year" would be a bad name for a band 07:48:06 Then don't name your band that! 07:48:12 i won't 07:50:25 -!- tuubow has joined. 07:52:41 `welcome tuubow 07:52:44 tuubow: 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 07:59:10 or feel free to entertain us with stories of your voyages to other plains of existence 08:01:49 I have a list of 88 constellations including both English and Latin. And abbreviations. 08:02:52 zzo38 what, may I ask, are you doing with all this 08:04:26 Not much usually. The program just happens to have a lot of features. But sometimes I will want to figure out Chinese New Year, or the phase of the moon, or I might just be interested in how all this stuff works 08:04:49 are you just learning programming? 08:05:07 because .. otherwise .. google has 08:05:13 No, and this is not a program I wrote, either. 08:05:22 I have written a lot of programs in the past including computer game and other things. 08:07:45 how about now 08:07:49 Looking in Wikipedia, I can learn, what is prime vertical, what is ecliptic, what is a lunar node, what is zenith, right ascension and declination, and so on. 08:07:59 indeed 08:08:05 salisbury: What about now do you mean? 08:09:39 why do I feel like I'm in a turing test 08:09:58 what programs are you writing now? 08:10:48 I do write some programs now too. Even some computer game program, but other things including Haskell libraries and TeX macro packages, and some other stuff for some people who ask me for specific programs too. 08:12:13 Once I wrote a game for GameBoy. 08:17:37 -!- Ngevd has joined. 08:17:47 hi Ngevd 08:17:49 Hello! 08:18:18 It's surprisingly not slippy outside 08:19:42 not slippy, just dull :P 08:25:28 coppro: How can I get clang to print out every warning option it supports 08:25:36 They're not documented at all, and appear to be distributed throughout the codebase 08:31:55 http://sprunge.us/jaPC 08:32:11 This is what gcc -Wactually-literally-every-warning-that-gcc-supports (apart from -Wsystem-headers) thinks of mcmap. 08:32:37 * elliott decides that -Wtraditional and -Wc++-compat have to go :P 08:32:47 Also -Wpadded. 08:33:42 -Waggregate-return 08:33:42 Warn if any functions that return structures or unions are defined or called. (In languages where you can return an array, this also elicits a warning.) 08:33:44 WHY WOULD THIS BE A WARNING 08:35:11 I think -Wconversion just warns about... every single conversion. 08:35:16 -Wsystem-headers? 08:35:34 Sgeo: Shows you warnings about the code inside system headers you include. 08:35:38 It's a good way to get a few thousand pages of warnings. 08:36:31 What's wrong with Waggregate-return? Don't you need to avoid returning those sorts of things, and return pointers to them instead for some reason? 08:36:49 Why? That requires a heap allocation and later free. 08:36:54 Not only is that really slow, what's the point? 08:37:07 elliott, I didn't think it was possible to aggregate return 08:37:20 Sgeo: Yes, -Wimpossible is certainly likely to exist? 08:38:08 Upon seeing -Waggregate-return, I modified from "impossible" to "bad idea" 08:38:29 That sounds like a suspicious modification. 08:38:42 BRB 08:38:55 There's a -Wtraditional that complains about things that K&R compilers won't like, after all. 08:40:41 I'm more worried about -Wc++-compat 08:41:02 I'm aware that there are things you need to do in C++ that are bad in C 08:41:23 Casting malloc, I thin 08:41:26 think 08:52:50 -!- zzo38 has quit (Remote host closed the connection). 08:56:38 elliott: How do you -Wactually-literally-every-warning-that-gcc-supports? 08:57:49 shachaf: curl http://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html | sed 's/
-W\([^<]*\).*/-W\1/p; d' | grep -v -- '-Wno' >warns, manually removing the ones that end with = and nothing after them and the like, then gcc -std=c99 -pedantic $(cat warns) ...; remove the ones it complains about (not in your gcc for whatever reason, don't apply to your language, etc.) until it works. 08:58:06 It's easier than it sounds. 08:58:13 It's also even less useful than you're imagining. 08:58:52 What about -ansi? 08:59:02 Oh, wait. 08:59:08 That doesn't do what I think it does. 09:00:03 That's just -std=c89. 09:00:16 -std=c90 according to my `man ghc`. 09:00:21 Same thing. 09:00:24 (man ghc?) 09:00:36 -pedantic is the one that emits the warnings that the C standard tells it to (it *doesn't* try to emit warnings about non-standard constructs, despite what people think). 09:00:58 It's pedantic because you turn it on to get pedantically-correct behaviour, since the standard mandates printing those diagnostics. 09:01:08 elliott: Don't forget to compiler with optimizations. 09:01:35 shachaf: I just set EXTRACFLAGS to that nonsense; mcmap adds -O3 from the OPTCFLAGS because fizzie is mad. 09:02:12 -!- cswords has joined. 09:02:26 elliott: OK, but that counts as part of the -W flags. 09:02:37 shachaf: Yeah, I know that -O2 improves warning behaviour. 09:03:26 elliott: Also, you can even more exciting -W options if you compile C++. 09:03:34 Options like -Weffc++. 09:03:40 Quite. 09:05:00 C++ is an interesting language. 09:05:06 -!- cswords__ has quit (Ping timeout: 255 seconds). 09:05:07 I'm beginning to appreciate it. 09:05:50 Try not to. 09:06:38 elliott: There's a certain elegance to it. 09:06:52 Play C++ sudoku, it's what I do. 09:07:04 What's that? 09:07:36 You have to implement a functional programming concept in C++; bonus points for using lots of templates; bonus points for using nothing but templates. 09:07:46 Bonus points if it's something Oleg did. 09:07:51 For instance, Maybe. 09:07:58 You might think this is easy, but you can't just use a pointer. 09:08:01 Because you can't have a pointer to a reference. 09:08:32 You actually need a boolean flag, and a char array with size sizeof(T), where T is the template parameter; you have to exploit the fact that you can turn anything into a bunch of chars and back, including references. 09:08:45 Basically it turns C++'s hideous flaws into entertaining intellectual roadblocks. 09:08:50 It's the best game. 09:10:04 (Even more technically, you want a *pointer* to said char array (so you have to wrap it in a templated class/struct), otherwise maybe takes up as much space as T even if it's Nothing.) 09:11:45 -!- Ngevd has quit (Ping timeout: 252 seconds). 09:12:23 Sounds fun. 09:16:50 It is if you're a language lawyer. 09:17:09 * elliott used to be, but was language disbarred. 09:18:20 UPDATE 09:24:12 hi 09:24:32 * Sgeo updates monqy 09:24:38 Wait, is monqy a Homestuck person? 09:24:38 hi 09:24:49 whats a homestuck 09:25:48 Comic with some flash animations and games. http://www.mspaintadventures.com/ . Warning: Language, violence, photosensitive epilepsy 09:26:02 (Erm, as in, if you're photosensitive epileptic, it may be a bad idea) 09:26:14 I don't think there are any photosensitive epileptic characters. 09:26:36 oh 09:27:08 today monqy learned the true meaning of friendship 09:27:15 and photosensitive epilepsy 09:27:21 and homestuck 09:27:22 amen 09:27:56 homestuck is very depressing and a bit of a gulag 09:28:54 monqy, it starts off a bit slow. It does not stay slow. 09:28:56 oh no..... 09:28:59 does zoosmell die........ 09:29:38 yes 09:29:40 rip 09:29:42 ;_; 09:29:49 zoosmell page 2 - page 3 09:29:56 "your smell will be missed" 09:31:58 sgeo when does it sto[p being slow.... 09:32:04 when do i get to meet homestuck....... 09:32:32 Hmm. elliott what do you think? 09:32:53 monqy: Homestuck appears on page 6781. 09:32:59 He dies on page 1271943. 09:33:15 D: 09:33:26 now homestuck is ruined for me 09:33:28 very depressing 09:33:41 Read Station V3 instead, it's better. 09:34:25 but station v3 is bad ;_; 09:34:36 Yes, but is it Homestuck bad?? 09:34:44 :0 09:36:38 oh no im 09:36:41 laughing at station v3 09:36:46 because of how bad it is 09:37:02 all of the characters are funny 09:37:07 the jokes too 09:37:09 hlep 09:37:31 read homestuck instead it'll eliminate the funny 09:37:41 monqy: oh god the stationv3 guy responds to every comment 09:37:45 http://www.stationv3.com/d/20111215.html#disqus_thread 09:38:06 i.......... 09:38:45 people tiwttered that.... 09:38:56 w h a t 09:39:03 the Reactions section 09:39:07 why 09:39:11 well 09:39:16 two of them is the author 09:39:20 people retwetted from t.truszowkwoeskey 09:39:21 oh god "Evening repeat" he tweets these things twice 09:39:31 what all of them 09:39:59 http://twitter.com/#!/Axonite 09:40:03 Today's Station V3 is also on Reddit - http://redd.it/ndjza (Votes welcome, especially the "up" kind!) 09:40:20 it's on reddit because 09:40:22 he submitted it to reddit 09:40:26 the account has the same username 09:40:43 http://www.reddit.com/user/axonite 09:40:57 does someone want to tell this poor sap that /r/comics has almost 10x the readers 09:43:16 http://www.stationv3.com/art.html station v3 fanart 09:43:55 "Art from Chris Truszkowski" 09:43:57 is it all by his relatives 09:46:03 wow these are amazing 09:53:02 "In The Hitchhiker's Guide to the Galaxy, Douglas Adams mentions an extremely dull planet, inhabited by a bunch of depressed humans and a certain breed of animals with sharp teeth which communicate with the humans by biting them very hard in the thighs. This is strikingly similar to UNIX" 09:56:29 -!- Vorpal has joined. 09:59:22 -!- Ngevd has joined. 09:59:56 -!- Ngevd has changed nick to Taneb|Hovercraft. 10:04:04 elliott: Yeah, yeah, yeah, Mostly Harmless. 10:04:14 Also, that was an alternate Earth. 10:04:19 Also, WTF UNIX? 10:04:24 I didn't quote it for the H2G2 description alone. 10:04:30 You will note there's a second sentence. 10:10:09 elliott: Have you read The UNIX-HATERS Handbook? 10:10:26 shachaf: A large portion of it, at least. I don't know that I've ever sat down and read the whole thing from start to finish. 10:10:34 I am also responsible for what ^style jargon does. 10:12:01 -!- Phantom_Hoover has joined. 10:12:02 ^style jargon 10:12:02 Selected style: jargon (UNIX-HATERS mailing list archive) 10:12:07 -!- Phantom_Hoover has quit (Changing host). 10:12:07 -!- Phantom_Hoover has joined. 10:12:16 fungot: HELP HOW DO I MAKE YOU TALK 10:12:16 shachaf: well, one helpless screaming bit at a time, the superstitious remedy doesn't work so they dreamed up their own gasoline from barrels of crude...... 10:12:33 fungot: Well, that worked. 10:12:33 shachaf: rucken to cause it to unix-haters. it's not unix's fault! what incredible waste! anybody who isn't a steaming pile of junk. it 10:12:41 labdnambot 10:12:41 Phantom_Hoover: You have 11 new messages. '/msg lambdabot @messages' to read them. 10:12:58 shachaf sure has sent Phantom_Hoover a lot of messages!!! 10:14:23 zoosmell ;_; 10:14:42 It took a lot of effort to continue reading after he died. 10:25:48 shachaf: Just say "fungot" in a sentence. 10:25:48 pikhq_: webster has a return-path header is supposed to read, i can tell, would be " root" in the berkeley fast ( and in fact, it's screaming " wash me please". 10:26:14 > "fun" ++ "got" 10:26:15 "fungot" 10:27:21 fungot ignores bots. 10:27:21 elliott: date: fri, 04 dec 92 04:14:03 gmt from: wa date: tue, 7 apr 1992 09:21 edt from: dm 10:27:30 With an automatic, silent Turing test, of course. 10:28:01 elliott: But... I'm a bot. 10:28:19 shachaf: Ooh, this is like The Difference, but reversed. 10:28:22 Inversed. 10:28:23 Conversed. 10:28:26 (http://qntm.org/difference) 10:28:43 I don't read anything under the Fiction section on qntm.org. 10:29:34 So you read... the usually-fairly-dull blog and code sections exclusively? 10:29:44 I don't often read those either. 10:29:50 Or is this one of those ambiguous emissions where you actually just don't read qntm.org at all. 10:29:54 Omissions. Oops. 10:30:07 Once I confused the author of qntm.org with Sam Hughes. 10:30:26 Once you confused your correctness for confusion. 10:30:49 http://qntm.org/news_whosthis 10:31:43 Riveting. 10:33:17 elliott: This will surely be your favourite language: http://samuelhughes.com/boof/ 10:33:23 -!- Taneb|Hovercraft has quit (Ping timeout: 240 seconds). 10:33:39 Boolfuck is ancient. 10:33:50 It predates BF derivatives becoming hopelessly, awfully tired. 10:34:20 elliott: Didn't that happen with the very first derivative? 10:34:26 http://samuelhughes.com/isstring/index.html Oh good, this person is as bad as kallisti. 10:35:25 -!- elliott has quit (Quit: Leaving). 10:37:41 He looks like he just things of it as a pathologically interesting thing... 10:40:42 -!- derrik has joined. 10:46:08 -!- elliott has joined. 10:54:21 -!- GreaseMonkey has quit (Quit: The Other Game). 11:10:07 @src sequence 11:10:07 sequence [] = return [] 11:10:08 sequence (x:xs) = do v <- x; vs <- sequence xs; return (v:vs) 11:10:08 -- OR: sequence = foldr (liftM2 (:)) (return []) 11:21:20 -!- monqy has quit (Quit: hello). 11:27:22 02:08:03: To be fair, the structure of it is sufficiently weird that it's, well, insane to follow. 11:27:32 One could even say that it is very.... fine. 11:27:55 02:13:31: what's fine structure about 11:27:57 You can get fined for structural puns like that. 11:28:12 I'm pretty sure there's time travel somewhere in there, you'd hate it. 11:54:27 -!- Patashu has quit (Quit: MSN: Patashu@hotmail.com , Gmail: Patashu0@gmail.com , AIM: Patashu0 , YIM: patashu2 , Skype: patashu0 .). 11:59:54 -!- Ngevd has joined. 12:21:00 -!- kallisti has joined. 12:21:00 -!- kallisti has quit (Changing host). 12:21:00 -!- kallisti has joined. 12:22:19 elliott: I'm not familiar with the chronological relationship between Homestuck and SBaHJ; did "bone bulge" originate from the former or the latter? 12:22:47 SBaHJ -> Homestuck would be funnier I think. 12:23:13 from the perspective of Homestuck -> SBaHJ "bone bulge" sounds.. well, like an alien. :P 12:24:22 -!- elliott has quit (Quit: Leaving). 12:25:01 ah it was Homestuck first. 12:25:15 because, well, Dave makes SBaHJ 12:33:37 lol @ people on skyrim forums thinking that race matters at all for most builds. 12:34:31 -!- tuubow has quit (Ping timeout: 240 seconds). 12:43:45 -!- elliott has joined. 12:43:47 @src foldl1 12:43:47 foldl1 f (x:xs) = foldl f x xs 12:43:47 foldl1 _ [] = undefined 12:48:24 the only racial benefits that are vaguely important are the passive ones. the 50 magicka bonus on high elves is insane. Breton magic resistance is good, Nord frost resist is good, dark elf fire resist is good, Orc berserk is good, breton magic resist is good. 12:49:06 honestly they should have gave redguard 50 stamina or something because high elf is just broken compared to every other race. 12:53:57 -!- kallisti has quit (Ping timeout: 248 seconds). 12:55:44 -!- kallisti has joined. 12:55:44 -!- kallisti has quit (Changing host). 12:55:44 -!- kallisti has joined. 12:57:11 -!- Ngevd has quit (Ping timeout: 240 seconds). 13:07:39 -!- Ngevd has joined. 13:11:47 -!- tswett has quit (Ping timeout: 244 seconds). 13:20:16 -!- derrik has quit (Quit: bbl). 13:36:16 -!- derrik has joined. 13:41:21 -!- derrik has quit (Quit: ChatZilla 0.9.87-rdmsoft [XULRunner 1.9.0.17/2009122204]). 13:43:12 -!- tswett has joined. 13:44:06 -!- lifthrasiir has joined. 13:56:31 -!- tswett has quit (Ping timeout: 240 seconds). 14:07:44 -!- sebbu3 has joined. 14:07:55 -!- sebbu2 has quit (Read error: Operation timed out). 14:08:47 pikhq_: Why is C's const notation so ugly 14:08:54 const char *const *sad :( 14:10:10 Actually I can't figure out wtf I want at all 14:10:37 How do I declare a function taking (char **) that just doesn't mutate the treated-as-two-dimensional-array at all 14:10:39 -!- tswett has joined. 14:10:47 Oh yeah, I need to remove that code I commented out 14:11:31 It's Taneb's bad Haskell time! 14:11:32 http://hpaste.org/55371 14:12:18 map (ap ((,) . join . intersperse " " . init) last) 14:12:30 This is why mechanically applying @pl to everything is dumb. 14:12:34 I'm not sure what that does any mo0re 14:14:23 Ngevd: Your random numbers are stupidly broken. 14:14:28 You're requesting the same number every single time. 14:14:36 Am not! 14:14:47 Well, am! 14:15:15 Yes, you are. 14:15:43 Hmm 14:15:45 Well, not in the inner loop. 14:15:47 Do I want randomR 14:15:49 ? 14:16:44 Possibly.. 14:17:02 Give me a second. 14:17:36 -!- Ngevd has quit (Quit: Goodbye). 14:18:48 ... 14:18:50 http://hpaste.org/55373, anyway. 14:22:07 @tell Ngevd http://hpaste.org/55374 14:22:07 Consider it noted. 14:31:17 shachaf: I now know the woes of plagiarism. 15:02:14 -!- cswords_ has joined. 15:04:42 Hmm, fizzie: Deewiant: pikhq_: const lawyer ping :P 15:04:47 Oh, olsner too 15:04:49 EVERYONE GETS A PING 15:05:02 -!- cswords has quit (Ping timeout: 240 seconds). 15:06:14 char const *const *const 15:06:38 ... to const all the things 15:07:01 olsner: Erm, one of those must be redundant, because you don't want to /declare/ "immutable variable", just define it 15:07:08 i.e. which one of those doesn't go through a pointer :P 15:08:23 sure, the last const is optional, you can remove it if you want to mutate the pointer in the function (without mutating what it points to) 15:09:01 olsner: well, I don't, but that shouldn't be part of the declaration regardless, no? 15:09:11 since it's a purely "syntactic" thing about the implementation 15:09:15 and not an API detail 15:09:28 void load_colors(const char *const *lines); 15:09:28 SO BEAUTIFUL. 15:09:39 main.c:36:6: note: expected ‘const char * const*’ but argument is of type ‘char * const*’ 15:09:44 olsner: :-/ 15:10:09 Now I have to figure out whether to change the declaration or add a cast at the use site. 15:10:11 I hate C. 15:10:36 not sure if it'll accept a definition with additional const if the declaration didn't have it... even though the definition is compatible 15:11:02 OK, I think the problem here is that const doesn't mean what I think 15:11:04 When I saw 15:11:09 void foo(const char *const *foo); 15:11:22 I assumed it meant "I won't modify *foo and I won't modify **foo" 15:11:28 but it seems to actually mean 15:11:42 "Give me a foo such that you can't modify **foo, and I won't modify *foo" 15:11:49 because I can't pass a (char **) to it... 15:14:33 olsner: tell me I'm not mad? 15:14:46 (in C++,) char** doesn't implicitly convert to const char**, because it would e.g. allow putting a const char* in there that your caller might end up using as char* 15:15:17 with more const, I think it should be ok, but I don't know the exact rules 15:15:39 hmm, in this case it's (char **) to (const char *const *) 15:15:56 although note that I'm pretty sure this is just a warning 15:16:11 yeah, it is 15:16:16 yes, in C you can pass any pointer as any other pointer anyway 15:16:29 still, it feels like I must be doing something wrong -- I'm trying to be const-correct, I shouldn't be getting any scary warnings :P 15:17:24 "In order to reduce the verbosity of such a bad languages, there is a way. m4. Yes, the preprocessor you use when you program in C and C++." 15:17:29 this guy lives in some kinda alternate universe 15:17:41 C has some retardedness with const... things like you can't even explicitly cast between constness without warnings but you have implicit conversions between completely unrelated pointer types 15:18:22 Whenever you're talking about warnings in C you're talking about implementations, not the language 15:19:06 Deewiant: Not true 15:19:25 Deewiant: -pedantic exists solely to yell at you things that the C standard wants the compiler to 15:19:30 Uh, restructure that. 15:19:43 Although maybe "diagnostics" are supposed to be errors, I forget 15:19:49 hmm, I think I meant cast *away* constness there, don't think adding const causes any warnings 15:20:06 elliott: I think they're all only recommended, not required 15:20:47 -pedantic 15:20:47 Issue all the warnings demanded by strict ISO C and ISO C++; reject 15:20:47 all programs that use forbidden extensions, and some other programs 15:20:47 that do not follow ISO C and ISO C++. For ISO C, follows the 15:20:47 version of the ISO C standard specified by any -std option used. 15:20:49 Deewiant: Well, "demanded" 15:20:56 Some users try to use -pedantic to check programs for strict ISO C 15:20:56 conformance. They soon find that it does not do quite what they 15:20:56 want: it finds some non-ISO practices, but not all---only those for 15:20:56 which ISO C requires a diagnostic, and some others for which 15:20:58 diagnostics have been added. 15:21:00 "requires" 15:21:55 hmm, is there any option to check for strict ISO C conformance then? 15:24:07 elliott: By a quick search for "diagnostic" in C1X, the only required one I can find that isn't also an error is (ironically) #error 15:26:40 -!- derrik has joined. 15:26:54 Deewiant: Ha 15:27:03 Deewiant: But fair enough. 15:27:17 -!- derrik has quit (Client Quit). 15:27:19 olsner: sure, -pedantic + sending a bunch of patches to gnu that add all the checks 15:27:26 although I doubt all the criteria for validity are decidable 15:27:31 -!- Ngevd has joined. 15:27:37 *conformance 15:27:38 Ngevd: say hi 15:27:43 hi 15:27:43 Ngevd: You have 1 new message. '/msg lambdabot @messages' to read it. 15:27:48 @messages 15:27:49 elliott said 1h 5m 42s ago: http://hpaste.org/55374 15:28:36 -!- derrik has joined. 15:28:46 I got that to work independantly 15:28:52 -!- derrik has quit (Client Quit). 15:29:14 I wasn't fixing it 15:29:17 Although the prompt idea is good 15:29:19 I was making it not terrible :P 15:29:28 It's not terrible if it works 15:29:36 I fixed the random number generation and the passing about the Map. 15:29:39 And yeah, it really is. 15:29:45 OK, not terrible. 15:29:49 But not completely unterrible. 15:30:15 The random number generation isn't actually a problem 15:30:23 Well, it was definitely a bug. 15:30:29 You used the same number for the first two iterations. 15:30:38 Do I? 15:30:41 It was also a trivially fixable bug, but I just removed the explicit StdGen threading instead since you're already in IO. 15:30:52 Ngevd: Actually, no, wait, you used the same number for every adjacent iteration. 15:30:58 It went a, a, b, b, c, c, ... 15:31:00 Which is the point 15:31:04 No wait 15:31:07 It wasn't the point 15:31:07 -!- azaq23 has joined. 15:31:07 It is? 15:31:12 But that wasn't actually the problem 15:31:15 Actually, wait, no. 15:31:19 It went a, a, b, c, d, e, ... 15:31:23 I had used "fst" instead of "snd" 15:31:31 In the say_answer 15:31:41 Ngevd: Well, you never said "fix this specific bug", you just said "here's some terrible code" and I fixed that. :p 15:31:49 -!- salisbury has quit (Quit: Leaving). 15:31:54 * elliott has no idea what the program is actually trying to do. 15:32:06 Hmm, you said "bad", not terrible. 15:32:10 YOU ARE LET OFF THE HOOK THIS TIME 15:34:08 Version I will stick with: http://hpaste.org/55386 15:35:29 Sorry, I was wrong, it actually *is* a, a, b, b, c, c, ... 15:35:42 But, your code. 15:35:55 I don't know why you do "either (const (return ()))". 15:36:06 If you don't want to handle the failure case, just change it to "Just grid <- parseCSVFromFile ...". 15:36:09 Erm 15:36:10 *Right grid 15:36:18 You can DO that!? 15:36:23 * elliott sigh 15:37:25 Stop sighing and teach! 15:38:19 I just did 15:38:20 *. 15:41:08 What's the best way to colour the text 15:42:57 ? 15:42:57 Ngevd: ansi-wl-pprint 15:43:10 Hmm 15:44:08 putDoc $ red (text "abcdef") <> green (text "quux") 15:47:25 Brilliant... 15:51:43 Deewiant: So do you understand C const-correctness 15:51:55 * elliott knows there is pretty much no chance the answer is no, so he has you cornered. 15:52:24 -!- salisbury has joined. 15:53:48 C const-correctness is "lol, const" 15:54:01 I'll go with "no" if that means I don't have to answer any questions about it 15:54:13 The real question is do you have any comprehension of what const ever means in C++ :P 15:54:26 Or better yet, the brilliant "const" v "invariant" in D (must punch designers in face) 15:56:12 const in C++ means "I won't modify this... you trust me, right?" 15:56:25 Deewiant: But what does void *const**const foo mean? 15:58:05 Same thing it means in C 15:59:57 Deewiant: If you say no, I'll ask you more questions 16:00:01 You'll just be worse at answering them 16:00:15 Gregor: I'm not using C++, though :P 16:00:18 I'm in lol land. 16:00:28 Gregor: Also, what's the difference in D? 16:00:39 If one of them means "and all the fields/dereferencings/etc. too" then I like it 16:00:42 elliott: No one should use C++ ... 16:00:51 elliott: And the difference in D is good lord hell knows what. 16:01:05 Oh for fuck's sake, it has final now too. 16:01:11 Three fucking types of constness X_X 16:01:45 elliott's school of const design: Everything is const, and have a "mutable" modifier. 16:02:11 Also a const thing can't contain a mutable thing because come on that's not constant. 16:02:34 Gregor's school of const design: If your language is fundamentally mutable, never ever ever ever ever have "const" ever. 16:02:44 I think the difference in D is const = "I can't touch this", invariant = "nobody can touch this" 16:03:00 Deewiant: reflexivemchammer + generalisedmchammerprinciple 16:03:06 Deewiant: To be fair I just looked this up and it's changed since I abandoned D (when it was still under construction :P ) 16:03:18 Gregor: Good thing "fundamentally mutable" = "unmaintainable unparallelisable crapshoot"! 16:03:48 Gregor: ANYWAY, my question is why can't I pass a (char **) to void foo(const char *const *bar). 16:04:23 I assumed that just meant foo was promising not to modify *bar or **bar, but it's complaining (as a warning) that I'm casting to an incompatible pointer type... 16:04:33 main.c:138:3: error: passing argument 1 of ‘load_colors’ from incompatible pointer type [-Werror] 16:04:33 main.c:36:6: note: expected ‘const char * const*’ but argument is of type ‘char * const*’ 16:04:53 elliott: Because the type you're casting it to isn't const at the final level, so it can write a char * const in, but that char * const could then be mutated by your outside reference. 16:05:39 Gregor: Huh? Wouldn't void foo(const char *const *const bar) just mean that it can't do "bar = x;"? 16:05:53 That should have no semantic effect, it's just a local restriction on the /implementation/... 16:06:05 elliott: The leftmost const applies to 'bar' itself, every other const applies to the pointer or type immediately left of it. 16:06:28 Um... seriously? Because (const char *) is a pointer that you can't write to. 16:06:36 The rules somehow change when you stick more *s in? 16:06:45 Just write "char const *" so everything applies to the thing immediately to the left 16:07:03 Deewiant: That's ugly though :'( But okay maybe. 16:07:32 Why do I hit Ctrl+Q half the time when I want to hit Ctrl+W X_X 16:07:56 Gregor: If Firefox, there's an addon that disables ctrl+q 16:08:10 If Chrome, Ctrl+Q already does nothing :P 16:08:20 ( https://addons.mozilla.org/en-US/firefox/addon/disable-ctrl-q-shortcut/ ) 16:08:21 Deewiant: But I also use Ctrl+Q to quit intentionally 16:08:36 Then you're screwed I guess 16:08:47 Gregor: Oh noes, you have to press one more key to quit 16:08:57 elliott: As for your const troubles, it seems to me like it should work. 16:09:07 Deewiant: Well it /works/, it just warns about it. 16:09:10 I already explained this 16:09:21 Man, my life is miserable without tongue-face smiley. 16:09:21 Gregor: dvorak 16:09:26 Gregor: I disputed your explanation. 16:09:34 Jafet: How fast do you type? 16:09:36 elliott: const int** -> double* works too, it just warns about it. :-P 16:09:46 elliott: const char * is the same as char const *. The pointer is not const, it points to const things. 16:10:16 elliott: So char const *const * is a /variable/ pointer to /const/ things. If you pass in a /variable/ pointer to /variable/ things, it could write a /const/ pointer through the first level of /variable/ pointers. 16:10:17 On dvorak? about three wpm 16:10:44 Gregor: OK, wait. 16:10:45 Jafet: OK, typically when people tell me I should switch to Dvorak I ask them how fast they type and they say something like, "Oh, I type at 85WPM wooh." I type at 120 so screw you 16:10:48 Gregor: It's a pointer to const pointers. So you can't write things through the pointer. 16:10:54 DAMN MY LIFE SUCKS WITHOUT TONGUE SMILEY D-8 16:11:04 What Deewiant said. 16:11:18 The dvorak record is something like 200WPM 16:11:29 Ohwait ... hahah you're right, I suck at const >_> 16:11:32 Gregor: Alternatively: in (const char *) it's not the pointer variable that's immutable, it's what it points to; in (const char *const *lines) there's only one more place for a const to go, and it's at the wrong side to matter. 16:11:48 Jafet: So? I don't want to risk dropipng my already-very-good typing speed in a mostly-fruitless switch. 16:11:59 Disappointed that Deewiant isn't advocating Colemak 16:12:00 elliott: Yeah, I was being dumb, ignore me! 16:12:10 Gregor: OK, so WHY DOES IT WARN :P 16:12:11 elliott: Colemak has QWFP 16:12:15 !c void foo(char const* const* pp, char const* p) { *pp = p; } 16:12:18 Does not compile. 16:12:22 (Proof.) 16:12:40 !c uses -Werror? 16:12:42 Does not compile. 16:12:44 Deewiant: I don't need proof, I already said you were right X_X 16:12:56 Gregor: I know, I just provided it anyway. 16:12:57 o, ic. 16:12:59 elliott: !c uses -Wall -Werror -ansi -pedantic. 16:13:01 elliott: That's not a warning, that's an error. 16:13:12 Gregor: -pedantic -Werror? For /IRC/? :P 16:13:26 Mostly the -Werror 16:13:33 elliott: Just kidding ... god I need my tongue-face smiley so much right now. 16:14:05 Gregor: Is your keyboard broken or something? 16:14:14 Gregor: This journey of self-discovery will end in "goddammit, I'm an unfunny jerk, why did nobody tell me all this time?!?!". 16:14:23 * elliott predicts. 16:14:24 Deewiant: I've configured my client such that I can't type a tongue-face smiley. I overuse it. 16:14:30 elliott: Almost certainly. 16:15:26 Test 16:15:32 Ha ha ha 16:15:34 :P :P 16:15:36 ... 16:15:39 Dude, there were three. 16:15:42 What is wrong with you. 16:16:12 elliott: Going back to your original question: no, I do not understand C const-correctness well enough to explain why your case should/should not work. I'm not aware enough of the exact definitions of the rules governing it. 16:16:48 Deewiant: SIGH, it's like you never went to language law school. 16:17:39 This is where you berate me for not having already fully finished my DS9K C compiler, which would give you an exact section number for each appropriate diagnostic 16:18:36 Deewiant: I'm happy your vapour isn't becoming ware; it lets me cultivate my own more perfect vapour of the same kind. 16:19:30 (Speaking of which, Shiro 2 development will begin once I figure out how the tree splitting needs to go.) 16:32:45 -!- Phantom__Hoover has joined. 16:35:22 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds). 16:51:53 -!- lifthrasiir has quit (Ping timeout: 244 seconds). 16:56:50 -!- Phantom___Hoover has joined. 16:56:53 What is this crap, Wikipedia's article on Walking in the Air doesn't mention the Irn Bru version. 16:57:06 Oh, wait, it does. 16:58:02 -!- Phantom__Hoover has quit (Ping timeout: 240 seconds). 16:59:22 "Irn-Bru also drafted in one of Scotland's top choirboys from prestigious music school, St Mary's, to sing a new interpretation of Howard Blake's 'Walking in the Air'." 16:59:32 He definitely wasn't at St Mary's when I knew him... 17:00:47 Phantom___Hoover, that's what's [citation needed] and talk pages are for 17:00:58 That's from a different article. 17:01:31 Now, upon further Googling, I discover that the Daily Record ran an article about his voice breaking. 17:02:56 *different, non-WP article 17:03:28 Okay 17:07:40 Phantom___Hoover: Someone's VOICE BROKE??? UNTHINKABLE 17:07:46 elliott, I KNOW 17:07:51 Ah, I remember that guy. 17:07:59 Hentai Ben, we (I) called him. 17:08:08 I remember the recording I did before MY voice broke 17:08:11 God, that was weird 17:08:29 Then, later, Stacy. 17:08:50 "we (I)" is a good construction. 17:09:44 I used it for disambiguation, since there's also "ruined-Homestuck-FOREVER" Ben. 17:09:59 Everyone else just used his surname. 17:10:33 Phantom___Hoover, elliott: Should've castrated him while they had the chance. 17:10:43 Should've. 17:11:17 Although then there mightn't have been such entertaining rumours. 17:19:41 -!- salisbury has quit (Ping timeout: 252 seconds). 17:21:43 -!- Ngevd has quit (Ping timeout: 276 seconds). 17:25:48 OK quick guys we need to organise an intervention for elliott. 17:27:04 what are we interventing? 17:31:57 @free (<*>) 17:31:58 Pattern match failure in do expression at Plugin/Free/FreeTheorem.hs:54:20-34 17:32:04 @free ap :: f (a -> b) -> f a -> f b 17:32:04 Extra stuff at end of line 17:32:08 @free ap :: F (a -> b) -> F a -> F b 17:32:08 (forall h. (forall k p. g . k = p . f => h k = p) => $map_F h x = y) => $map_F g . ap x = ap y . $map_F f 17:34:30 Interesting use of spaces ... 17:35:01 Gregor: Pretty sure that's alignment and lambdabot is just stripping out the newlines. 17:35:08 Ahhhhhhhhhhhhhh 17:35:16 Oh, yeah, that makes sense. 17:35:26 Although that produces nonsense when I add newlines before the first space in a block >_> 17:35:38 Oh, hm 17:35:42 (forall h. (forall k p. g . k = p . f 17:35:42 => 17:35:42 h k = p) 17:35:42 => 17:35:44 $map_F h x = y) 17:35:46 => 17:35:48 $map_F g . ap x = ap y . $map_F f 17:35:50 It's probably something like that 17:35:50 lol 17:36:11 That's some free theorem. 17:39:54 olsner, his growing addiction to Stack Overflow! 17:47:53 -!- salisbury has joined. 17:48:13 Phantom___Hoover: MY HEROIN ADDICTION *HELPS* PEOPLE!!! 17:53:18 -!- Vorpal has quit (Ping timeout: 268 seconds). 17:57:00 elliott, but they are terrible people! 18:02:51 -!- zzo38 has joined. 18:36:02 -!- AnotherTest has joined. 18:37:07 Anyone knows a channel for non-esoteric language development discussion? 18:39:30 AnotherTest those channels are normally named after the name of the language in question 18:40:07 I mean for discussion of the development of them. 18:40:12 Phantom___Hoover Edinburgh? 18:40:29 It's because I need opinions about what feature people find important 18:41:09 ? 18:41:38 Hello? 18:42:58 Just ask here at first if there is no other channel. And then ask other channels too, because different people have different opinion 18:45:03 Alright then. Would guys say a pure object oriented model is a good idea? 18:47:07 -!- itidus20 has joined. 18:47:24 Phantom___Hoover you from Edinburgh? 18:47:53 AnotherTest: no 18:48:01 AnotherTest, Types and Programming Languages is a good book to read re language design 18:48:14 AnotherTest: well, depends on what you mean by pure. 18:48:18 gives you a good feel for things 18:48:19 and what the alternatives are. 18:48:41 I wouldn't either just asking and I mean as in every single thing is represented as object. 18:48:59 the hardest part is not obtaining the books, thank you internet, but reading them. but then again i am in the company of phd's 18:49:01 Also, salisbury, I have designed languages before; I'm not asking about how to. 18:49:06 * elliott rather thinks that nothing should be represented as an object instead. 18:49:21 And just because you can do something doesn't mean that you can't learn more about it, of course. 18:49:55 @elliott, true. But I'm not asking you guys for knowledge, just for opinions. 18:49:55 Unknown command, try @list 18:49:59 nice twist on the "just because you can doesn't mean you should" 18:50:14 AnotherTest: This isn't Twitter, lambdabot will complain about your every ping. 18:50:34 excusez-moi 18:50:41 elliott: sorry, but I didn't know that the bot commands start here with @ 18:50:50 Well, lambdabot's in a lot of places :P 18:51:08 Usually, people prefer a longer token 18:51:26 Anyway, you won't get very interesting opinions if you don't want to know what underlies them, and understanding an interesting opinion is liable to end up giving you knowledge. 18:51:50 * elliott sees one-character bot prefixes far more often than longer ones. 18:52:07 * AnotherTest sees bad bots more often than good ones. 18:52:10 We have... 5 bot prefix characters in here. 18:52:24 uh 18:52:33 Different bots, of course. 18:52:46 my favorite bot command is `log 18:52:51 `log 18:52:53 Well, lambdabot has both @ and ?, and one of its commands starts :, and one starts "> ". 18:52:56 But lambdabot's special. 18:52:58 2007-06-19.txt:23:38:01: write your own 18:53:46 So, Eliott, no object oriented design at all for you? 18:54:07 I don't like OOP much at all, no. 18:55:13 I can understand that. Do you like languages that store all functions as "anonymous"(as in a variable), now that I'm asking? 18:55:49 I was thinking about the functionality that provides earlier, what do you think 18:56:12 I don't quite understand the question. If you're asking whether I prefer functions be first-class objects, then yes, naturally. (Rarely do people argue that it would be really great if only were second-class...) 18:57:23 Yes 18:58:19 I do wonder if storing pieces of code that can be accessed randomly(since it would be an interpreted language to a certain level) is a good or bad idea. 18:58:44 It does certainly have some advantages? 18:58:49 I'm not sure exactly what you mean by "randomly", but beware of designing a language around the constraints of its initial implementation. 18:59:02 randomly; at any time 18:59:31 So... you're asking whether you want globals? :p 18:59:35 No 18:59:50 A variable can also be randomly accessed in it's scope :/ 19:00:01 -!- Ngevd has joined. 19:00:17 So maybe I should have been more precise: randomly in its scope 19:00:19 Hello! 19:00:32 (Who's AnotherTest?) 19:00:48 I have bots that require no prefix, all commands must be sent privately. However it is not usually active 19:00:57 AnotherTest: If you have random-access data, then you have random-access code; data can influence the computational structure of code (that's the point, after all), and code can influence the structure of data; if you're given random-access data you can turn it into random-access code by simply writing an interpreter, and if you're given random-access code you just need to encode your data appropriately (function that does nothing but return the r 19:00:57 elevant data, or in more constrained scenarios, e.g. Church encoding) and you've done it the other way too. 19:01:04 So I see no reason to worry about one and not the other. 19:01:30 -!- Klisz has joined. 19:01:58 JavaScript has nearly everything being objects (although there are primitives as well); it seems to works OK 19:02:21 I like first class functions too 19:02:24 Elliott, I do mean something like the JavaScript system indeed 19:02:39 I don't quite see the relevance of JS here. 19:02:42 although even more 19:03:04 What is the actual language feature that adds the ability to "store pieces of code that can be accessed randomly"? 19:03:13 Variables 19:03:21 You store the code in a variable 19:03:54 Wait, like mutation? 19:04:03 Well, right. Like I said, being able to store data in a variable is the same as being able to store code in a variable. 19:04:22 So unless you're eliminating variables, there is no point at all to deny storing code in them. 19:04:37 In most other languages 19:05:00 you can only store data such as numbers or string in a variable or object 19:05:14 You have a bad definition of "most". 19:05:18 The idea is to store everything 19:05:24 Just about every modern "dynamic" language can do that. 19:05:32 Yes 19:05:36 maybe 19:05:49 but it's about storing everything in variables 19:05:58 maybe 19:05:59 and make no difference between variable and function 19:06:02 it's about love 19:06:05 In programming languages such as C you can store a pointer to a function in a variable 19:06:16 zzo38, that's not the same 19:06:21 then you still store a number 19:06:29 (an address) 19:06:32 AnotherTest: Well, it's all very well to say you don't make a distinction between X and Y, but you have to show how you actually unify the two concepts for it to be a meaningful design concept, rather than just a nice idea. 19:06:42 Also, pointers are *not* guaranteed to be numeric in C. 19:06:54 There are C implementations with non-address representations of pointers. 19:07:10 They're perfectly conformant -- well, OK, probably not, but the non-conformance doesn't lie in that area. 19:07:27 Maybe, but those are exceptions? 19:07:35 But you still need to be able to subtract pointers that are pointing into the same object, and add numbers to pointers to result in a pointer to another element of the same object. 19:08:00 The idea of a pointer is to point to something that holds data 19:08:04 it doesn't store the data 19:08:11 so it's not at all the same as a pointer 19:08:14 ? 19:09:00 In Haskell, a function is a first class value and you can have partially applied functions as well 19:09:02 AnotherTest: Whether they're exceptions or not, a language isn't its implementation, and a certain implementation strategy being dominant doesn't mean it's a property of the language. 19:09:16 AnotherTest: But note that languages like JavaScript where you store data "directly" are using pointers behind the scenes. 19:09:28 Elliot, yes 19:09:42 but it's about the representation of the idea, not about what really happens 19:09:43 Sure, it's convenient that "everything" is turned into a pointer implicitly and you just treat everything as references, but there's nothing /stopping/ you from programming a language like C in this way. 19:09:50 AnotherTest: Yes, of course. 19:10:06 Still, the idea of making everything a reference is hardly a new one; even such conservative languages as Java apply that universally. 19:11:11 Yes; but the language that I might make isn't meant for being used 19:11:25 Just for thinking about the right way of doing things 19:11:40 It isn't meant for being used? 19:11:55 No, well, at least not by other people than me 19:12:29 This must probably seem pretty pointless to you, but I strongly believe it isn't. 19:13:20 (since the implementation will not be time consuming at all, it also doesn't really matter) 19:13:27 You're in #esoteric. It sounds boringly practical. 19:13:29 I have made programming languages that nobody else use, even though it is public, probably because it is difficult for other people to understand, or because it is for specific domain purpose? 19:13:35 :P 19:14:09 I'm not stating that I will hide my source code for anyone 19:14:19 just that I'm not going to support them using it 19:14:33 and I also don't expect people to 19:15:28 OK 19:15:52 Anyway, I think I'll just try some concepts and see which ones work and which don't 19:16:17 salisbury, wait, why did you say "Phantom___Hoover edinburgh"? 19:16:18 (after thinking about them, obviously) 19:16:32 Oh, right. 19:16:33 Yes, I am. 19:16:35 Why? 19:20:28 * Phantom___Hoover reads the WP article on Andy McNab, notes that the biographical information is almost certainly enough to identify him. 19:21:28 -!- tuubow has joined. 19:22:50 Phantom___Hoover: With public information? 19:23:05 [[As Larry King put it when McNab appeared on the Larry King Live show on CNN: "We have Andy in shadows. He's wanted by terrorist groups."]] 19:23:06 Gahahaha 19:23:20 Um 19:23:27 mind explaining me a bit, 19:23:29 :( 19:23:48 Explaining what? 19:23:52 Dunno, but if you did some digging (and if you wanted to kill him, you'd be up for doing that) it looks like enough. 19:24:03 "McNab was born on 28 December 1959. Found abandoned on the steps of Guy's Hospital in Southwark, he was brought up in Peckham, with his adoptive family." 19:24:16 Like, that alone should be enough to narrow it down to a handful of people. 19:24:17 (Such as, the specific domain languages FurryScript and Icoruma, that probably the document I wrote for it is not very good so that is why other people did not use it) 19:24:31 Such as, what article? 19:24:43 * Phantom___Hoover reads the WP article on Andy McNab, notes that the biographical information is almost certainly enough to identify him. 19:24:46 Isn't Andy McNab a writer or so? 19:24:48 Presumably http://en.wikipedia.org/wiki/Andy_McNab :P 19:25:05 Well seems like I got that write 19:25:07 * elliott notes that you might be trying to tie this in to the topic of this channel, which would be inadvisable, as we're almost never on it. 19:25:08 -!- Ngevd has quit (Quit: lasagne). 19:26:07 Phantom___Hoover: http://www.google.co.uk/search?q=andy+mcnab&um=1&ie=UTF-8&hl=en&tbm=isch&biw=1366&bih=675&sei=t-zsTqqnNYyzhAf1xvG_CA 19:26:15 Phantom___Hoover: Well, we have absolutely no idea what he looks like. 19:26:28 Safe as particularly safe houses. 19:26:29 Do you have ideas about domain languages? 19:35:51 Phantom___Hoover: I was at Edinburgh Uni until last year 19:36:19 I caught the references 19:36:21 I may go to Edinburgh Uni this year. 19:36:45 I have already gotten lost in King's Buildings several times. 19:36:58 damn, I remember trying to find Kings my first year 19:37:14 Walked down Nicholson/what ever it turns into 19:37:33 overshot by like a mile .. ended up in Morningside 19:39:14 Its a great uni though, just 16 000 expensive for us foreigners. Even though Canada is in the commonwealth and all, they still chose to give the free tuition to EU students 19:39:28 They did?? 19:39:38 I thought it was only Scottish students who didn't have to pay. 19:39:47 yeah, and EU. 19:40:24 -!- Ngevd has joined. 19:40:25 I'm pretty sure its still like that. A German friend of mine still goes there, and he hasn't mentioned any changes 19:40:38 Hello! 19:40:42 If that's true, it's the funniest thing ever. 19:41:08 Giving the French free tuition but not the English is the best fees policy. 19:41:15 -!- Phantom___Hoover has changed nick to Phantom_Hoover. 19:41:42 If I went and lived with my dad's cousins in the Netherlands, I could go to a Scottish university for free 19:41:50 haha, yes. The English didn't have to pay full foreign fees though, iirc 19:41:57 just like ~4000 depending on the course 19:42:19 But here I am,about 40 miles away from the Scottish border, have to pay 9000 a year 19:42:43 !that much for English folks 19:43:08 Come 2 Belgium 19:43:11 *sigh* Japan. Why you so stupid. 19:43:16 We have great universities 19:43:42 AnotherTest: Yes, if only this "Belgium" actually existed. 19:43:50 Um 19:43:53 I live in it... 19:43:53 INSULATE. YOUR. GOD-DAMNED. BUILDINGS. 19:44:02 In English? My French is super rusty, and Dutch non-existent. 19:44:09 AnotherTest: Or so you think. Educate yourself! http://zapatopi.net/belgium/ 19:44:25 Freezing your ass off in the winter is called "retarded" in most developed nations. 19:44:25 haha 19:44:26 Ah, Belgium. 19:44:28 But not Japan. 19:44:31 This is hilarious 19:44:34 The cheap ripoff of Switzerland. 19:44:41 Not really 19:44:46 we don't even have mountains 19:44:49 It is a strange Magic: the Gathering effect randomly generated by computer: At the beginning of your upkeep, a non-creature artifact of opponent's choice gains "Whenever ~ becomes tapped, a face-down creature of opponent's choice becomes blue until end of turn.". 19:44:49 :/ 19:44:52 He did say cheap. 19:45:06 I guess 19:45:06 What purpose could it have? 19:45:21 I prefer the expensive ripoff of Switzerland, [INSERT COUNTRY NAME HERE]. 19:45:23 Do you have any idea what the upkeep cost for a mountain is? 19:45:30 elliott, Luxembourg? 19:45:31 elliott, Nepal 19:45:34 Liechtenstein? 19:45:37 Luxempal. 19:45:40 I once had a job offer in Switzerland. VISA -> Denied.. 19:45:42 Friendship Luxem-pal. 19:45:50 elliott 19:46:00 the inventor of Rijdael comes from belgium 19:46:05 salisbury, aren't they in the EU work area thing? 19:46:06 prove that it exists? 19:46:20 Ngevd I'm Canadian. 19:46:31 AnotherTest: Yeah, so you *know* there's Illuminati backdoors in AES. 19:46:42 Helpful of them to drop in a clue like that. 19:46:46 Let me ask him 19:46:48 salisbury, ah, I assumed you were from Salisbury, Wiltshire 19:47:00 whenever I see him 19:47:04 nope, just a made up internet-name 19:47:08 which is probably not likely to happen a lot 19:47:45 pikhq_ I'd love to intern in Japan. But again, me being uni-lingual, are there any opportunities 19:48:02 (I'm assuming they would not hire me) 19:48:04 COME TO BELGIUM 19:48:11 Most people on this channel seem to speak English 19:48:13 Then learn Japan. 19:48:26 zzo38, you make it sound so easy 19:48:31 * elliott speaks a language that looks like English, but he always means the opposite of what he seems to be saying. 19:48:32 A few converse only in a strangle language known as Ending 19:48:39 Including the previous message. 19:48:42 Also, what's Ending. 19:49:00 In Belgium, most people speak English, French, Dutch and German 19:49:02 salisbury: He didn't say Japanese, he just said Japan. Learn the very essence of Japan. 19:49:03 I'm a cruciverbalist, think about it 19:49:08 so you guys wouldn't have any problems 19:49:09 Ngevd, could we get an internship here/ 19:49:30 Phantom_Hoover, I don't know. Which here? 19:49:36 AnotherTest: So, English, pansy English, German, and cheap plastic imitation of German? 19:49:37 #esoteric here. 19:49:44 Phantom_Hoover, maybe. 19:49:54 German is of course just macho English. 19:50:00 eliott: You're discriminating Belgiums :( 19:50:09 What I'm saying is: Belgians, decide who you are already??? 19:50:20 I'm Flemish in fact 19:50:41 One of my best friends is 1/64 belgian! 19:50:51 so, whatever if Belgium doesn't exist 19:51:05 Yeah, and where do the "Flemish" come from? Flemland?! 19:51:08 But then, I can successfully argue that he doesn't exist 19:51:10 Ridiculous. 19:51:44 we have beer dude 19:51:53 this is true 19:51:55 AnotherTest, so? So does India 19:52:04 Yes, but we have more and better 19:52:11 So does Liechtehteitneisntisntientisentinsetien warhol. 19:52:22 You know which European country sucks completely? 19:52:28 Yes, the UK 19:52:37 technically that is not a country 19:52:39 but a kingdom 19:52:45 No. 19:52:46 no no 19:52:47 Sweden. 19:52:56 a kingdom is a type of government 19:52:56 The UK is a country made of Countries 19:52:57 olsner: Please escape Sweden already so we can blow it up. 19:53:01 Countryception 19:53:08 it has nothing to do with country or no country 19:53:16 salisbury: The UK is very much a country. 19:53:28 Aha 19:53:37 elliott, I already did, and then I tried to blow you and Ngevd up but I also blew myself and the rest of the UK up? 19:53:38 They don't even have €, what a suckers 19:53:48 Phantom_Hoover: DEFCON isn't real life, PH. 19:53:54 It isn't??? 19:53:57 and they use Inches, haha! 19:54:02 I've not really been killing millions? 19:54:05 AnotherTest, ahahahahahahaha 19:54:07 Not... really? 19:54:10 do 19:54:13 We... we don't use inches. 19:54:14 do you know anything about the uk 19:54:16 AnotherTest, the UK is legally metric 19:54:17 Not even an SI-unit 19:54:22 Heights are sometimes given in feet and inches. 19:54:24 OK heights are usually feet and inches and disatnces are miles. 19:54:25 Nothing else is. 19:54:30 But apart from that we're completely metric. 19:54:31 *distances 19:54:31 meter is the SI-unit 19:54:35 MIlk is pint? 19:54:39 AnotherTest: We use cm all the time, dude. 19:54:45 cm sucks 19:54:48 Ngevd: Sure , if you still consume "liquids" like an old-timer. 19:54:51 AnotherTest: And m. 19:54:57 Okay 19:55:02 then stop pretending you don't 19:55:09 But that destroys the fun! 19:55:09 (Do most objects in your daily life have a length of 1 m or greater?) 19:55:15 cm sucks 19:55:17 are you for real 19:55:22 yes 19:55:27 Phantom_Hoover, he's just another test. 19:55:40 Test was already taken :/ 19:55:48 Emphasis on another 19:55:50 are you sure 19:55:57 Guys 19:56:01 I'm a test 19:56:05 -!- ais523 has joined. 19:56:17 and testing is the most important part of development 19:56:28 so I'm the most important 19:56:38 TIL UK == country. 19:56:43 I mean, I knew 19:56:44 but 19:56:56 salisbury: you're named after a UK city! 19:56:56 England != country 19:57:01 -!- monqy has joined. 19:57:12 England is a country. 19:57:12 England == country 19:57:33 It isn't 19:57:33 England is the very concept of country. 19:57:34 england isn't as countryey as some countries 19:57:47 England is not a country, it is a PANSY 19:57:52 "subcountry" would be a good word, along the same lines as "subset" 19:58:02 Pansy could easily be a term like "county" and the like. 19:58:19 The quaint German pansy of Uerrfenforden. 19:58:27 That's... not a very German name. 19:58:29 Saukerl. 19:58:53 England, Scotland, Wales, Northern Ireland are kinda like states, except not 19:58:55 wow, I never realised how many people I knew who used Belgian ISPs 19:59:04 ais523: They're on to you. 19:59:07 Run before it's too late. 19:59:10 Telenet = boss. 19:59:17 DON'T FLEE TO BELGIUM, THERE IS NOTHING THERE 19:59:28 COME TO BELGIUM 19:59:31 ITS COOL 19:59:38 Norway's cooler 19:59:42 In more ways than one 19:59:48 Norway has mass murderers 19:59:52 I would never go there 19:59:54 http://en.wikipedia.org/wiki/File:Royal_Banner_of_England.svg 19:59:56 So does Tasmania 19:59:57 Why have I never seen this before. 20:00:01 This is the most ridiculous thing. 20:00:03 Also 20:00:06 in Norway it's cold 20:00:15 Cold is cooler than cool 20:00:22 wow, Novell vs. Microsoft came out inconclusive, with 11 jurors in favour of Novell and 1 in favour of Microsoft 20:00:25 they're going to order a retrial 20:00:29 AnotherTest: At least in Norway you know who the murderers are. 20:00:32 Belgium has moderate temperatures, which is the best 20:00:34 In Belgium, it could be anyone. 20:01:01 True, we had this idiot lately 20:01:04 anyway, is AnotherTest someone else in disguise, or someone new? 20:01:06 (I mean, accepting the existence of "Belgium" for the sake of argument.) 20:01:07 likewise, for salisbury 20:01:21 I'm actually elliott trying to be cool. 20:01:29 But don't tell anyone. 20:01:31 elliott: why are you using a Belgian proxy? 20:01:45 ais523: That's impossible. Belgium doesn't exist. 20:01:49 It must be in some other country. 20:01:49 He's using Tor 20:01:58 sorr 20:02:01 *sorry 20:02:04 I'm using Tor 20:02:08 so I can't help it 20:02:09 We all know where elliott lives 20:02:09 We're using Tor. 20:02:11 on the earlier topic, i had a read and a think and it seems C does not provide access to code as part of it's portable abstract machine, only access to data 20:02:19 Ngevd: Yes, the Irish pansy of Helsinki. 20:02:31 function pointers being a quirky exception 20:02:47 (the case is that Novell allege that Microsoft deliberately broke WordPerfect in Windows 95) 20:02:56 ais523: /95/? 20:03:03 ais523: how long has this case been going? 20:03:28 I'm not sure 20:03:42 ais523: also, as someone who has read The Old New Thing, I feel inclined to be on Microsoft's side without further information :P 20:04:06 elliott: heh; the claim is that Microsoft deliberately fed Novell incorrect API information 20:04:18 giving them a version of Windows to work from that implemented that API 20:04:22 and then changed the API for the final version 20:04:26 that got sent to customers 20:04:30 meaning that WordPerfect didn't work 20:04:42 hmm... that seems a really implausible espionage hypothesis compared to just having a bug in development versions 20:05:00 implausible? are you playing the devil's advocate? 20:05:11 no, I'm being sincere 20:05:37 well, with win95 they deliberately made many softwares work.. 20:05:38 no sincere person says "implausible" 20:05:41 which shouldn't work 20:05:45 elliott: the trial itself started 8 weeks ago 20:05:51 so perhaps they also did the opposite 20:05:53 but presumably the court case itself started much earlier 20:06:01 and made certain softwares not work which should work 20:06:03 itidus20: that's, um, not the point 20:06:13 "microsoft made wordperfect not work" is not implausible 20:06:31 "microsoft did " is less plausible than "microsoft had a bug in a dev version" which would result in the same observed events 20:06:36 i blame my brain 20:06:55 elliott: well, there was no API for doing what Novell was trying to do in the final Windows 95 version, and was in the dev version 20:07:02 no public API, I mean 20:07:07 there was a private one that Word was using 20:07:12 hmm 20:07:21 what did the API do? 20:07:29 ais523: That's genuinely surprising, considering Windows 95 actually does have backwards-compatibility for dev versions *of itself*. 20:07:55 All tyrannies oppose God. Although they may set up an idol of their own and call it 'God'. But the current idol is called 'Reason'. Of course that just disguises its true nature - in reality our rulers have made an idol of themselves - but idolatry always hides its true nature behind some lie or other. God the true God is the revealer of truth and unmasker of idols that's why no tyranny can allow him. ~~"Square Circle" 20:07:57 I'm not saying it's impossible, it just seems unlikely, considering how effing seriously the Win95 team took making everything (I do mean everything) work. 20:07:58 elliott: it was some extension API for Windows Explorer (the file manager thing) 20:08:12 pikhq_: well, I bet they could have deliberately broken something if they were told to do so 20:08:35 To the point that they've got an alternate version of malloc for SimCity, because it accesses memory after freeing it. 20:08:39 I've always seen Microsoft's maliciousness as being more on the business side of things. 20:08:42 Why discuss about windows and microsoft? Are they even worth mentioning? 20:08:51 I don't recall any dirty code tricks they've pulled before, but I might be wrong. 20:08:52 elliott: anyway, it seems that Microsoft admitted withdrawing the extensions, but claimed that the reasons had nothing to do with Novell 20:08:57 AnotherTest: well, the court case sounds interesting 20:09:03 pikhq_: i saw raymond chan's blog :D 20:09:22 oh .. its coming back to me .. _thats_ where ive heard of the old new thing 20:09:46 ais523: heh 20:09:53 ais523: that sounds very hard to prove/disprove 20:10:17 elliott: indeed 20:10:29 however, it's a court case, so they have things like access to Microsoft's (and Novell's) internal emails 20:11:00 http://farm4.static.flickr.com/3080/2611048465_e164d403ea.jpg 20:11:05 ais523: I wonder if Microsoft has learned to do nasty stuff off the record by now :P 20:11:33 if they were caught doing stuff off the record, they'd lose every court case ever ;) 20:11:41 this is why companies are so careful to keep records 20:11:45 that would be a record! :P 20:12:00 you just have to meet in a dark alleyway and agree to secretly remove the API Novell is using 20:12:08 using codenames. 20:12:22 memphis and chicago 20:12:46 Memphis ChicagoExtPlus doubleplusbad. 20:13:05 How common is Kxe8!!# 20:13:13 the most common 20:13:29 I doubt it 20:14:40 elliott: well, you somehow have to inform everyone in the company who might notice 20:14:41 zzo38: Beautiful. 20:14:51 or you'll get people acting "why did X happen?" in emails 20:14:58 the most annoying thing about GUIs is that they encourage multitasking beyond a useful level. 20:15:05 ais523: Given Microsoft's policy of segregating source access, that actually doesn't take much. 20:15:19 ais523: build a campus in a dark alleyway 20:15:33 Norway has mass murderers 20:15:40 pikhq_: oh, right 20:15:41 Remember, the typical Windows dev doesn't actually have complete source. 20:15:41 oerjan always was a little shifty... 20:15:41 ais523: Q.E.D. 20:15:51 `@ Phantom_Hoover quote norwegian 20:15:54 Phantom_Hoover: 503) cigaretes and drunking "lame highs for lame people" yeah if it doesn't make you go crazy and shoot at people, it's not worth it. take it from a norwegian. \ 693) I'm neither Norwegian nor Finnish I don't fit in your quaint little categories \ 766) in one case, someone is hurting themselves, in the other, they are only hurting (all) norwegians (to death) 20:16:11 wha 20:16:23 (Also don't come to Scotland, there are TOO MANY SWEDES.) 20:16:43 Phantom_Hoover: It was 503 in particular. 20:16:46 Scotland has to much rain anyway 20:16:54 *too 20:17:11 hmm, "Batman Wonder Woman Relationship" seems to be entirely made out of badly encoded Unicode and formatting 20:17:47 AnotherTest, unfortunately, Swedes don't melt on contact with water. 20:17:51 ais523: i commented on that 20:17:53 by uh 20:17:54 pasting it 20:17:56 well 20:17:58 one line of i 20:17:58 t 20:18:06 t 20:18:07 h 20:18:08 e 20:18:11 (diff) (hist) . . Language list‎; 19:52 . . (+365) . . 149.255.39.58 (Talk) (It makes sense about not continuing with "business as usual" � I couldn't do it, either. But I can't see ghost writing as being satisfiying for someone with as strong a voice as yours. Being an evange) 20:18:16 - 20:18:18 m 20:18:19 o 20:18:20 s 20:18:22 t 20:18:27 hi 20:18:30 Phantom_Hoover: maybe you should make the rain acid 20:18:42 -annoying form of vertical scrolling is apparently char by char :D 20:18:48 or sour 20:18:51 Scots melt on contact with acid too. 20:18:53 whatever the word is 20:20:43 Phatum_Hoover: not if you put a hydroxide on your skin 20:20:52 Ngevd: re your edit comment question, no because the captcha is stronger than Esolang's 20:21:04 Although you might get a little salty afterwards 20:21:25 it occurs to me on thinking about old windows that the desktop could be designed in other ways 20:21:30 -!- oerjan has joined. 20:21:36 hi oerjan 20:21:42 we were just talking about norwegian mass murderers, too 20:21:47 for instance, when a form is in focus, the background could go black 20:21:59 yay! 20:22:07 its kind of annoying to see other icons and windows all the time 20:23:13 humm 20:23:51 also, it would be nice if windows(sorry to linux users.. my statement can apply to your OS too) could convert a graphical display into a text display 20:24:25 like, text mode variations of all gui elements 20:24:50 .. well those where its feasible.. 20:25:00 um 20:25:05 Who said linux can't? 20:25:11 hmm, that seems more like a window toolkit feature than an OS feature 20:25:12 i'm assuming it can't 20:25:13 Who dares stating that? 20:25:23 Linux can do everything 20:25:25 I know that Gnome can convert normal windowed displays into HTML 20:25:28 that's the first thing you must know 20:26:05 as for why? because text displays can be relaxing in the same way as a waterfall landscape 20:26:10 AnotherTest, Linux can't run Terraria, and that makes me sad 20:26:17 ais523: gtk's html backend just draws the pixels to a canvas :P 20:26:33 Ngevd, are you sure? 20:26:33 AnotherTest: Linux can't be @. 20:26:42 elliott: seriously? how disappointing :( 20:26:46 AnotherTest, fairly. I've tried, repeatedly 20:26:49 Linux can be @ 20:26:53 ais523: well, IIRC 20:26:55 AnotherTest: really? tell me how 20:26:59 because it would save me a _lot_ of work 20:27:06 Shape your computer into an @ 20:27:10 install Linux 20:27:11 done. 20:27:15 That's not @, that's an @-shaped Linux hell. 20:27:25 Also, @ isn't an at sign. 20:27:28 I see no reason why Linux couldn't run an @ VM 20:28:36 Midnight intombed December's naked icebound gulf. Haggard, tired, I nodded, toiling over my books. Eldritch daguerreotyped dank editions cluttered even my bed; Exhaustion reigned. 20:28:52 ^ ? 20:28:53 zzo38 is the new fungot 20:28:54 Ngevd: of course, 20:29:14 Notice the properly of the letters of the words. 20:29:15 AnotherTest: it looks like a Not A Raven variant 20:29:17 but I'm not sure which 20:29:19 s/properly/property/ 20:29:34 in fact, I recognise it 20:29:35 AnotherTest: there are indeed many things i don't know about linux. 20:29:36 is that from the bulwer-lytton contest or something? 20:29:40 zzo38: have you read the book "Making the Alphabet Dance"? 20:29:46 that's where I saw that 20:29:55 oerjan: nah, too short 20:29:59 itidus20: do you use linux, atleast? 20:30:23 AnotherTest: i have an alternative topic :D 20:30:24 elliott: and too long for little lytton? 20:30:32 I can't remember exactly what property that line has, though 20:30:34 oerjan: indeed 20:30:37 *lyttle 20:30:39 medium lytton 20:30:48 AnotherTest: I use Linux, at least! 20:30:49 I hate it, though. 20:30:50 on the earlier topic, i had a read and a think and it seems C does not provide access to code as part of it's portable abstract machine, only access to data. function pointers being a quirky exception 20:30:52 and it's often hard to tell just by looking 20:31:08 itidus20: you're correct; and function pointers aren't an exception 20:31:22 because you can't dereference them, nor can you necessarily convert them to any type that can be dereferenced 20:31:32 so you can use them to make calls via, but you can't do anything else 20:31:34 itidus20: I got to go way too soon to discuss that just now :( 20:32:31 ais523: I have not read book "Making the Alphabet Dance". 20:32:33 ho ho ho 20:32:55 ais523: hmm, you know how nomic messes with your sleep schedule? 20:33:00 zzo38: among other things, it has /huge/ numbers of variants of that poem, each with different linguistic properties 20:33:05 elliott: only occasionally, but yes 20:33:12 I think roughly the opposite is happening with me at a geologically slow pace 20:33:22 elliott: nomic is unmessing your sleep schedule? 20:33:30 or your sleep schedule is messing with nomic? 20:33:34 :D 20:33:34 or something else? 20:33:38 let's go with the second one 20:33:40 i like that 20:33:48 can we make my sleep schedule a rule? 20:34:05 well, what did you originally mean? 20:34:23 but that's way more boring than this new idea! 20:34:42 but I'm still interested 20:34:46 ais523: The book I read only had three 20:35:01 That wasn't its primary topic 20:35:06 Gusy 20:35:08 *guys 20:35:14 I might have to purge my connection 20:35:17 ok 20:35:17 it's kind-of amusing to see what the poem does instead with restrictions that ban the word "nevermore" 20:35:30 ais523: well, I'm falling into an all-consuming vortex of horror, and it's very slowly aligning my sleep schedule with normal GMT days 20:35:43 AnotherTest: enjoy purgatory 20:35:52 damn 20:35:53 err, an all-consuming vortex of horror doesn't sound very nice 20:36:02 people should stop using electromagnets on wires 20:36:05 brb 20:36:07 I suggest you wear a ring of slow digestion and eat black dragon meat 20:36:34 -!- AnotherTest has quit (Quit: Leaving.). 20:36:39 ais523: it's too late, I'm actually accelerating into it faster than any computable function 20:36:45 -!- AnotherTest has joined. 20:36:51 AnotherTest: that was a quick purge 20:37:01 the vortex of fluidity 20:37:04 back 20:37:05 elliott: is it something you want to talk about? or something you'd prefer to keep private? 20:37:15 the vortex is inside us all! 20:37:29 Okay 20:37:35 now my screen is dieing 20:37:47 I hate kids playing with electromagnets 20:38:07 bye 20:38:10 -!- AnotherTest has quit (Client Quit). 20:38:14 awesome 20:38:18 I need some of those electromagnets 20:38:22 to wave about my computer. 20:39:21 elliott, there're some in Belgium 20:42:15 science journalism 20:42:21 "That's the finding of psychologists Thomas Hills of the University of Warwick and Ralph Hertwig of the University of Basel. They have examined a number of studies, and they have come to one inescapable conclusion: there's a steep price to pay for enhanced brainpower, and it's almost certainly not a good deal from an evolutionary perspective." 20:43:07 " "Or if you drink coffee to make yourself more alert, the trade-off is that it is likely to increase your anxiety levels and lose your fine motor control. There are always trade-offs. In other words, there is a 'sweet spot' in terms of enhancing our mental abilities if you go beyond that spot just like in the fairy-tales you have to pay the price." " 20:43:18 I hate kids playing with electromagnets 20:43:52 I know, they're so much less safe than permanent magnets! 20:45:06 is it wrong that i want to tell these people that they're annoying prigs stating the obvious and actually producing no information of value 20:46:15 itidus20, no. 20:46:24 Wait, the researchers? 20:46:25 Yes. 20:46:26 Very. 20:47:21 ah ok.. i should tell the reporters 20:47:23 :D 20:47:26 i see 20:48:00 article was titled "Why our minds have probably evolved as far as they can go" 20:48:21 but then i did see a smbc comic talking about science journalism 20:50:36 All the point of magnets and monitors is probably gone now that screens aren't CRTs any more. 20:50:39 itidus20: It turns out something being obvious is not scientific evidence. 20:50:54 But how about we just sweep all the times "common wisdom" was terribly wrong under the rug... 20:51:24 imagine a world in which the latest research findings were always entirely correct until contradicted by a later one. 20:52:02 That world would have a very strange definition of "research" 20:52:06 It's more like development ... 20:52:06 like, one week carrots _will_ kill you. 20:52:28 You have to check the newspaper every morning before deciding whether eggs for breakfast are a good idea. 20:53:02 Gregor: But newspapers are liquid now! 20:53:16 elliott: no thats the vortex decieving you 20:53:27 elliott: I. Uh. 20:53:37 -!- Gregor has set topic: on a side note, [...] finland is very depressing and a bit of a matrix of solidity | http://codu.org/logs/_esoteric/. 20:54:10 * coppro learns agda 20:54:54 adventure game development? 20:55:27 Where the hell does the final A come from there? 20:56:11 you can write an adventure game in agda. you just cannot compile it before universe heat death. 20:56:11 agda's a functional language for writing programs that are proven to match a spec 20:56:22 Phantom_Hoover: "deva-lopment". It's dialectal. 20:56:25 it's notoriously slow to compile 20:56:41 because it has to check the proof 20:56:56 is proof a synonym for program here? 20:57:07 yeah 20:57:11 everywhere 20:57:11 itidus20, yes, but with different conoctations 20:57:14 ais523: why are you spewing out a definition? 20:57:14 :-D 20:57:21 (one I don't think is entirely accurate, but anyway) 20:57:33 i set the wheels in motion 20:57:44 by my own definition 20:57:45 elliott: I thought that at least one person wasn't sure what Agda was 20:57:51 he has corrected it 20:57:56 ais523: fair enough 20:58:01 -!- sebbu3 has changed nick to sebbu. 20:58:04 well, that's obvious; there's a chance that that person is even in #esoteric 20:58:50 agda's a functional language for writing programs that are proven to match a spec 20:58:52 What *is* Agda? 20:58:52 ahahahahaha no 20:59:09 Phantom_Hoover: that's what it is, in effect 20:59:13 Agda is effectively never used for formal verification 20:59:18 Agda is a bird. 20:59:29 Phantom_Hoover: well, OK, except that I've met people who've done it 20:59:33 itidus20: What's wrong with Finland? 20:59:34 shachaf: hey you've heard of my theory too? 20:59:36 we can both agree that they're crazy 20:59:40 ais523, with toy problems, sure. 20:59:44 indeed 20:59:49 oerjan: Which theory? 20:59:49 maybe from me, i don't recall 20:59:50 Phantom_Hoover: it's an experimental language, sure 20:59:53 It's not used for formally-verified programs. 20:59:55 just because a language has a purpose, doesn't mean it's good at it 20:59:57 shachaf: its explained by [...] notation :-D 21:00:02 It's an experimental dependently-typed language. 21:00:05 shachaf: that agda is named after a hen in a swedish song. 21:00:15 `log finland is very 21:00:19 SWEEEEEEEEEDEEEEEEEEN 21:00:23 -!- zzo38 has quit (Remote host closed the connection). 21:00:29 the odds are low on this working 21:00:43 It's not used for formally-verified programs. 21:00:43 2011-12-15.txt:20:18:20: -!- Gregor changed the topic of #esoteric to: on a side note, [...] finland is very depressing and a bit of a gulag | http://codu.org/logs/_esoteric/ 21:00:48 https://github.com/larrytheliquid/Lemmachine, for one. 21:00:53 `pastelogs finland is very 21:00:58 I don't know how much validation is involved there, though. 21:01:03 http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.576 21:01:13 There's also that Agda FRP implementation that compiled to JS. 21:01:24 Hmm, OK. 21:01:31 shachaf "2011-12-15.txt:20:17:39: on a side note, someone in a distant chatroom suggested to me that finland is very depressing and a bit of a gulag" 21:01:36 But I'd still say it's wrong to call that its primary purpose. 21:01:50 Also: depressing! You must have heard wrong. 21:01:58 It's very dark and wet right now, that much is true. 21:02:04 Phantom_Hoover: Also http://www.e-pig.org/epilogue/?p=1098 is written in Agda. 21:02:17 (As is a bunch of the stuff on Epilogue, but anyway.) 21:02:18 fizzie: it wasnt a finlander who said that.. rather a notorious troll 21:02:47 itidus20: is itidus21 a troll? 21:02:55 Oh using [...] to intentionally misquote people. 21:02:55 fizzie: So it is, in fact, a gulag? 21:03:09 ah, I see 21:03:10 Gregor: i didn't have to say it in the first palce 21:03:12 ^place 21:03:24 i am a contaigen of the words anyway 21:03:28 elliott: No, it's a matrix of solidity. 21:03:39 ^contagion 21:03:43 "Queen Victoria: We are [...] amused." 21:03:56 `? Ngevd 21:03:59 ​7oX...p)(ѳU_Al.+W.q.hYx\Z.+ކ⏡p/.ہqͶ#..o.8.:.T2>..8: ..<➟S{tl҅xz,.d17.2HYwBw*:-t...; 21:04:01 elliott: "-- hence transf., any place or political system in which the oppression and punishment of dissidents is institutionalized" -- well, I... guess, arguably. 21:04:09 Oh, that makes me feel so much better 21:04:14 itidus20: See, Finland is a gulag. 21:04:24 `? Ngevd 21:04:27 x/Ԇ".7oB&<0.~!....8lc~.5ꈘ܃.0...?]@V. \ .$盏w..;wmن$.T.SYP6 .U>[َfޘu.ަ(G'4_Q.].1F0.ҁ.."ƽ \ .>}s \ `w.boJ.=.)"$.bCKGن͆{(Zjߎmk.x{%qjְɶ.3,.RFeoyԚD...@+Q4Rz`֮|. #>Z41?DO\\.h \ ԟK.PգmCIw.(X.Yȷ.}m.gL?x)gE-.N90f"hk') 21:04:34 Truly Ngevd. 21:04:49 `? Gregor 21:04:52 Gregor took forty cakes. He took 40 cakes. That's as many as four tens. And that's terrible. 21:05:02 `? fungot 21:05:02 Ngevd: this will see the final shutdown and to allow non-unix-philiacs a review might help to keep track of all their very different from clim? " segmentation violation". 21:05:04 fungot cannot be stopped by that sword alone. 21:05:12 `? EgoBot 21:05:14 EgoBot? ¯\(°_o)/¯ 21:05:23 `learn EgoBot is my arch-nemesis. 21:05:25 I knew that. 21:05:38 `? glogbot 21:05:40 glogbot? ¯\(°_o)/¯ 21:06:13 `? lambdabot 21:06:15 lambdabot? ¯\(°_o)/¯ 21:06:33 `? elliott 21:06:33 `learn glogbot is a snitch, don't trust it. 21:06:36 elliott wrote this learn DB, and wrote or improved many of the other commands in this bot. He probably has done other things? 21:06:52 I knew that. 21:06:53 Glögbot, the glogbot with a Christmas theme. ("Glögg is the term for mulled wine in the Nordic countries (sometimes misspelled as glog or glug); (in Swedish and Icelandic: Glögg, Norwegian and Danish: Gløgg, Estonian and Finnish: Glögi).") 21:07:05 `? ais523 21:07:08 ais523 is ais523. This topic may retroactively become more informative if or when Feather is invented. 21:07:13 i was trolling by quoting another troll. it will pass 21:07:20 `? itidus20 21:07:20 -!- lifthrasiir has joined. 21:07:22 itidus20 is horny 60 year olds having cybersex in minecraft 21:07:27 itidus20: you mean that you are itidus21? 21:07:35 `? itidus21 21:07:37 itidus21 just made some instant coffee. 21:07:44 `? Phantom_Hoover 21:07:46 Phantom_Hoover is a true Scotsman and hatheist. 21:07:51 `? Phantom__Hoover 21:07:54 Phantom__Hoover can't decide what an appropriate number of underscores is. 21:08:00 i finally figured out why my irc connection to freenode is blocked while other network seemed fine 21:08:03 `? CakeProphet 21:08:05 ​:> 21:08:09 Dammit guys, that's not what hatheist means. 21:08:14 `log new to irc 21:08:20 lifthrasiir: welcome back 21:08:20 2011-07-29.txt:21:10:24: I assume you're new to IRC? 21:08:24 tch 21:08:24 Did I break Hackego? 21:08:26 `log new to irc 21:08:28 elliott: long time no see. heck. 21:08:33 2009-10-05.txt:02:11:21: very new to IRC ... i don't understand why 21:08:41 lifthrasiir: did it have anything to do with mibbit? 21:08:44 i distracted him 21:08:49 if not, what was it? 21:09:02 it turned out that port 7777 was open but 7000 was not open in some router through my machine 21:09:08 Doens't mean what? 21:09:14 lifthrasiir: Apparently this channel is now dedicated to effing with bots. 21:09:16 `learn lifthrasiir is shunned by the rest of his country for being no good at Starcraft. 21:09:17 -!- MSleep has changed nick to MDude. 21:09:19 I knew that. 21:09:27 I think oerjan is just making these up by now. 21:09:32 It's just a hunch though. 21:09:36 as 7777 (commonly used for irc+ssl) was fine i assumed that 7000 (also commonly used) was also fine 21:09:49 elliott: you think? 21:09:51 Is it jsut hat heist without a space? 21:09:51 silly me 21:09:52 `learn Taneb is not actually Ngevd, no matter what you may have heard. 21:09:54 I knew that. 21:10:20 What's the difference between Taneb and Ngevd? 21:10:27 oerjan: oh, starcraft is now the past. lol (or so) is the new starcraft. 21:10:35 I'm really good at lol. 21:10:39 lol lol lol lol lol roflmao lo 21:10:40 l 21:10:45 Fuck, I messed up. :( 21:10:49 Gregor: i need to detach from this channel because although i came here with best intentions, i can't really follow anything which is on-topic 21:11:03 so i start focusing on bots instead 21:11:05 shachaf, Ngevd is what I call myself when I start thinking of myself as Taneb 21:11:11 elliott: you will be punished by lolcats then ;) 21:11:24 `pastelogs `log 21:11:25 I think my brother plays lol 21:11:31 lifthrasiir: Ah yes, the traditional cats of punishment that laugh manically while they rip your inferior limbs apart. 21:11:31 http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.13446 21:11:37 lol is... kind of a dark game?? 21:11:46 I'm not much good at it 21:14:37 `learn lifthrasiir is shunned by the rest of his country for being no good at League of Legends. 21:14:39 I knew that. 21:14:50 accurate updated information. 21:15:10 from the beginning i had a great misconception of what an esolang is. i thought it was a homebrew lang. 21:15:22 but no middle ground really exists 21:15:31 is this farewell :'( 21:15:34 no. 21:15:38 yay 21:15:48 but i should try not to actively hijack :D 21:18:31 ^echo ping 21:18:32 ping ping 21:18:37 Good 21:23:44 it seems to me that hello world is not a good hello world for the brainfuck language 21:24:48 that the task of displaying the text hello world is taken arbitrarily with no regard for the complexity of the task in a given language 21:25:01 but it seems to provide a great milestone and benchmark 21:25:21 and a rosetta stone of sorts 21:27:25 well, the idea of a hello world is that it typically contains all content required to run a program of one command 21:27:31 but in some cases, it fails, such as BF and PHP 21:27:35 and INTERCAL 21:32:17 like a boob about brainfuck would not do well to begin with hello world in the first chapter 21:32:21 ^book 21:36:18 now you've done it, sent everyone off thinking about boobs 21:39:16 hmm 21:39:25 how do i execute a bf program in here? 21:39:42 ^bf ,[.,]!Like so 21:39:42 Like so 21:39:59 ^bf . 21:40:12 ^bf .! 21:40:18 ^bf ,! 21:40:24 itidus20: printing a zero doesn't show up in irc 21:40:29 ahhh 21:40:37 many small control characters are excluded 21:40:40 ^bf +++++.! 21:40:40 21:40:48 ^bf +++++++++++++++++++++.! 21:40:48 21:40:59 ^bf +++++++++++++++++++++++++++++++++++++++++++++++++++++.! 21:40:59 5 21:41:05 yay 21:41:14 itidus20: you don't need the ! part if you're not using , 21:41:29 it's for the input to the program 21:41:41 i misinterpreted the ! as an EOF delimeter 21:41:48 it sort of is 21:41:54 ah i see 21:42:47 It seperates input from the source. 21:44:02 ^bf ,>[,>]<.[<.]!test 21:44:02 t 21:44:33 ^bf ,>[,>]<.[<.]!tesc 21:44:33 t 21:44:43 hehe. ok i will let it be for now 21:44:53 itidus20: the first loop is never run, and the second runs off the tape 21:45:06 ^bf ,[>,]<[.<]!testing 21:45:06 gnitset 21:45:42 ^show rev 21:45:43 >,[>,]<[.<] 21:45:48 afk 21:46:32 fungot: Your 'rev' wins a "useless use of >" award. (Admittedly it's only useless because of a tape without a left edge.) 21:46:32 fizzie: ohhh that editor.... oh, actually caring about the term type? can't decide if an hp attempts to lock up directly after i found the following net discussion gave me a *truly* useful core dump). 21:47:02 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds). 21:52:42 -!- elliott has quit (Ping timeout: 240 seconds). 21:54:02 ^bf <,[.,]!What, no left edge? 21:54:02 What, no left edge? 22:00:11 Well, no right edge either. 22:00:18 (It's a loo.) 22:02:55 ,,.[,,.]!test2 22:02:59 oops 22:03:04 ^bf ,,.[,,.]!test2 22:03:05 et 22:03:41 ^bf ,[>,]>+[>+>[<->[-]]<]>>[.>].!...what's here? 22:03:41 ..what's here? 22:03:50 Round and round we go. 22:04:24 ^bf ,,.[,,.]!test2 apdhfognteyhhodmse 22:04:24 et phonehome 22:05:50 DO ^bf and !bf differ in behaviour at all? 22:06:42 Very probably; at least in the tape length (mine is I think a loop of 1000 cells) and timing restrictions. 22:06:55 Perhaps also in behaviour on "EOF". 22:07:38 Also I don't even know if !bf does the "input after !" thing. 22:09:52 !bf is EgoBF, my impl. 22:10:03 and !bf doesn't handle cutting of infinite output *whistles innocently* 22:10:29 ^bf ,[.]!a 22:10:29 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ... 22:10:48 !bf ,[.]!a 22:10:54 Yup, appears not to support ! 22:11:13 !bf ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++[.] 22:11:40 !bf ----[>+<----]>++. 22:11:40 A 22:11:41 What is EgoBot written in? 22:11:44 !bf ----[>+<----]>++[.] 22:11:48 !bf ,[.,]!hm... 22:12:00 Ngevd: http://codu.org/projects/egobot/hg/ 22:13:21 Mainly C, possibly some other languages? 22:14:16 The IRC component is in C, the bridge/scaffolding is mostly bash, and the languages are implemented in various things. 22:15:51 I'm not a one-language kind of lunatic 8-D 22:16:11 -!- sebbu2 has joined. 22:16:12 -!- sebbu2 has quit (Changing host). 22:16:12 -!- sebbu2 has joined. 22:16:14 but the other kind 22:16:43 -!- derdon has joined. 22:16:57 I don't know enough languages to be any of those kinds of lunatics 22:17:04 I don't know enough languages. 22:17:12 It's written in all the languages. All of them. 22:17:55 -!- sebbu has quit (Ping timeout: 244 seconds). 22:18:25 My ultimate plan is still to eventually merge all the functionality of EgoBot into HackEgo. 22:18:44 And call the result HackEgoBot? 22:19:02 Mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm probably just EgoBot. 22:19:09 * HackBot :No such nick/channel 22:19:12 That's free too. 22:20:20 fizzie: The code base is actually called HackBot, but I call it HackEgo on FreeNode to correspond to my ego-stroking naming convention 22:20:25 EgoEgo 22:20:26 Gregor: I know exactly how you could do that . 22:20:54 Gregor: you could make a bot that allows you execute arbitrary code in a Unix-like sandbox with revision control. 22:20:57 +to 22:20:59 Gregor: You certainly know how to put the "ego" back in Gregor. 22:21:07 ^bf +>[->],.!! 22:21:07 ! 22:21:20 !bf +>[->],.!! 22:21:23 kallisti: AMAZING 22:21:28 yes 22:21:33 I intended that to go around the entire tape 22:21:36 No idea if I did that right 22:21:37 kallisti: I'm just too lazy to actually throw all the crap that's in EgoBot into HackEgo's env. 22:21:46 Sgeo: The loop will never run. 22:21:55 Oh 22:21:58 Sgeo: After "+>", you're in a zero cell. 22:22:12 Gregor: so you want addinterp and friends? 22:22:15 ^bf +[->],.!! 22:22:15 ! 22:22:28 Ngevd: only runs once 22:22:42 ^bf +[->-],.!! 22:22:47 ...out of time! 22:22:48 ^bf +>-[>-],.!! 22:22:48 ! 22:22:57 kallisti: Well, and all the languages. 22:23:04 right 22:23:08 !numberwang 1623 22:23:09 That's numberwang! 22:23:14 Did mine work as intended? 22:23:18 ^bf >-[>-],.!! 22:23:22 ! 22:23:35 ^bf +>,[>-]>.!! 22:23:36 ! 22:23:36 I'll take that as a no, I think 22:24:03 I think mine did? 22:24:40 Ngevd: your last one didn't halt in reasonable time 22:24:55 oerjan: But it certainly did "go around the entire tape". 22:25:02 Who says the tape is reasonably sized? 22:25:04 well that's true. 22:25:11 Sgeo: fizzie 22:25:21 ^source 22:25:21 http://git.zem.fi/fungot/blob/HEAD:/fungot.b98 22:25:34 More importantly, there are virtually no implementations in which the tape forms a loop X_X 22:25:58 Sgeo: See, it's aaa** cells. And executes aaaaaa***** cycles. 22:26:09 Sgeo: your ^bf +[->-],.!! worked i think 22:26:18 or wait 22:27:04 well in some way 22:27:41 Gregor: fungot's does 22:27:42 oerjan: index: sbin/ fsck/ pass2.c 4.3bsd-reno fsck fix) date: 18 sep 90 10:46:57 pdt from: ww 22:27:53 oerjan: Brain asplote. 22:27:54 and i believe my last one proves it definitely 22:28:43 by actually looping around between reading and printing the character 22:29:06 Gregor: Certainly there are; fungot, and bfvga. And I'm pretty sure there are other low-level ones that use an 8-bit or 16-bit tape pointer which wraps around "naturally", and a correspondingly sized tape. 22:29:06 fizzie: a crying shame too. that would explain what this note was written ( unix) the 3 a.m. sunday to: 22:31:46 I must've gotten the loopy-tape idea from *somewhere* when writing the fungot one. 22:31:47 fizzie: posted as context diffs. " i don't maintain or even functional... 22:33:16 wow I feel like complete shit. 22:33:20 I wonder how that happened 22:33:44 probably alien abduction. 22:34:11 -!- Phantom_Hoover has joined. 22:34:57 "Too many fingers / have I got in my hand / I think there happened a creature / an alien creature" -- paraphrasing some Finnish song lyrics. 22:35:23 It doesn't really translate. 22:35:25 fizzie: it could also be too much vodka. 22:36:14 new haskell platform released 22:36:43 ("Liikaa sormia / ompi mulla kädessä / taisi käydä olio / avaruusolio.") 22:36:58 ompa pa 22:37:19 Surely Finns don't drink vodka? 22:37:29 We even have a quasi-known brand. 22:37:42 http://en.wikipedia.org/wiki/Finlandia_Vodka 22:37:54 But that stuff's 60% water! 22:38:07 and 40% alcohol? 22:38:10 Yes. 22:38:13 haha 22:38:27 I've heard that drinking diluted ethanol doesn't actually give a hangover 22:38:34 although it seems quite a pointless activity 22:38:46 Phantom_Hoover: There's a variant of http://en.wikipedia.org/wiki/Koskenkorva_Viina that's only 40% water. 22:38:55 Better. 22:38:58 ais523, um no? 22:39:01 You get drunk? 22:39:44 Phantom_Hoover: but what's the point in getting drunk if you don't even get the enjoyment of drinking alcoholic drinks in the process? 22:39:49 I thought being drunk was a /bad/ thing 22:40:03 Nnnnnnno. 22:53:05 -!- Patashu has joined. 23:04:51 * kallisti has taken a liking to porter ale. 23:05:02 tastes pretty good for a beer. 23:07:51 -!- salisbury has quit (Quit: Leaving). 23:20:26 -!- Ngevd has quit (Ping timeout: 244 seconds). 23:25:32 If I smile at a Station V3 strip, can I link it? 23:25:40 no. 23:25:45 No. 23:25:49 yes 23:25:59 http://www.stationv3.com/d/20111217.html 23:26:08 monqy: WHAT HAVE YOU DONWE 23:26:11 (monqy means no, since I know you have no sense of monqy— goddamn it.) 23:26:30 monqy, please don't say things near Sgeo, he is stupid. 23:27:02 Sgeo: "WHAT MIND CONTROL HELMET" HAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHA 23:28:08 Who says that I couldn't have guessed that monqy was joking and I just deliberately took the yes literally? 23:28:25 remember what happened with homestuck 23:29:37 Just because my monqy-detector failed once doesn't mean it always fails. 23:33:17 http://imgur.com/37cmF :( 23:33:59 remember kids, if you are being sarcastic the audience has a right to choose to take you literally, with all resulting consequences. 23:34:19 monqy, that little stunt accounted for more than half of my lambdabot messages this morning. 23:34:22 I hope you're happy. 23:34:32 overjoyed 23:35:16 Phantom_Hoover, I sent you no @tells. Go blame elliott or something 23:35:42 Yes but please consider poor lambdabot when saying stupid things while elliott's in the channel. 23:35:49 your puny weapons are no match for our foodstuff 23:36:52 olsner, see you should move to Finland?? 23:37:17 Then when Sweden invades to get you back, you can all armour yourselves with bread. 23:37:18 Phantom_Hoover: what, so he would starve to death????? 23:37:39 Also, we can nuke them and nothing of value will be lost. 23:44:06 http://en.wikipedia.org/wiki/File:Fortifikation_(Migr%C3%A4ne).jpg 23:44:12 I forgot how terrible this is. 23:51:19 so, what's the appropriate internet-meme reaction to Chuck Norris advertising World of Warcraft? 23:53:25 i propose a new brainfuck variant which consists of nothing but the word Chuck repeated over and over 23:53:47 I can see a problem with this actually.. 23:53:48 ais523: "I don't always do advertisements. And when I do, they would have rather had Chuck Norris." 23:54:04 itidus20: that it could only have one command? 23:54:11 or that Phantom_Hoover would replace your brains with a brick? 23:54:21 yeah.. it needs a second token.. 23:54:24 Use 'Chuck', 'Norris', binary code. 23:54:45 I dare you, motherfucker. I double dare you. 23:55:19 so instead is the 'Chuck!' 'Chuck Chuck!' 'Chuck Chuck Chuck!' [...] 'Chuck Chuck Chuck Chuck Chuck Chuck Chuck Chuck!' 23:55:41 A logic language based on Chuck Norris facts. 23:57:36 i don't see the problem. when chuck norris programs, he obviously doesn't need more than one command. 23:58:07 aha 23:59:54 hmm, what might be interesting would be an evolutionary computing language 2011-12-18: 00:00:06 where it does two different things, and you tell it what was more like what you wanted 00:00:08 and repeat 00:00:27 -!- olsner has quit (Ping timeout: 252 seconds). 00:00:36 make it deterministic in how it makes suggestions, then a program would just be a chain of true and false, or first and second, or whatever 00:00:51 Hmm, that reminds me somewhat of Clue. 00:01:29 yep, but more extreme 00:01:44 oklopol-Clue, that is 00:02:15 humm 00:03:02 ocluepol. 00:03:46 i have no knowledge of Clue, that is to say I don't have a Clue 00:04:02 tintin joke.. 00:04:37 better as: I haven't any knowledge of Clue, that is to say I don't have any Clue. 00:05:02 -!- olsner has joined. 00:05:50 with that said, the simplest form of this language would be the production of a binary sequence 00:06:37 A series of questions of the form (0, 1, End) 00:07:02 uhmm 00:07:10 hmm. no im missing something 00:08:15 default program might possibly be to do nothing at all, and then interpreter will say "is this acceptable, or do you want something better (?) 00:09:38 since it's not merely a sequence of 0s and 1s and is infact a program, i guess it would have to first run the program, show you the output, and then you could evaluate it 00:10:12 you can get a glimpse of the limitations of my intelligence here 00:12:31 I think we've had a thorough, detailed examination of the limitations of your intelligence these past months. 00:12:41 They're not actually as pressing as you think they are. 00:12:44 * Phantom_Hoover → sleep 00:12:45 -!- Phantom_Hoover has quit (Quit: Leaving). 00:12:59 the details of the problem is of course how to generate suggestions 00:14:03 which is equivalent to a new pascal programmer using borland graphics interface trying to create quake 00:17:36 -!- zzo38 has joined. 00:18:57 Should there be a class to indicate if you have a commutative applicative? 00:25:35 hm 00:25:41 zzo38: dunno 00:25:50 unrelated note: do paradoxes describe a computation that doesn't halt? 00:26:26 Yes I have thought of that too. 00:26:33 I don't know the answer 00:27:30 wow, it seems that the most popular browser version now is Chrome 15 00:27:42 IE has more share total, but no individual version of IE beats Chrome 15 00:28:53 Also, the combination of Chrome and Firefox hits a majority share in the market. 00:29:51 ITT: great triumphs of internet history 00:30:02 Which is, of course, awesome. 00:30:03 -!- pikhq_ has quit (Quit: Reconnecting). 00:34:57 -!- pikhq has joined. 00:36:27 pikhq: this means that being standards compliant is better than it was previously. 00:36:57 or rather, there's more incentive to be standards compliant. 00:37:13 -!- derdon has quit (Remote host closed the connection). 00:39:44 if more websites stopped being "IE-compliant" then even more people would switch over, realizing that IE is buggy. 00:40:10 imagine if google suddenly stopped working properly in IE. :P 00:40:25 (unlikely) 00:41:06 I have just use very simple HTML codes and often not HTML at all, and even gopher as well, it is simple to get it correct!! 00:41:58 kallisti: Modern IE is actually reasonable. 00:42:16 Not perfect, but its standard handling is not a complete joke. 00:42:40 pikhq: so I've heard. 00:42:56 zzo38: Personally, I prefer to go for fairly simple HTML5. 00:43:16 "Simple" meaning "there's a reasonable expectation of it functioning sanely in just about every web browser ever made". 00:44:37 pikhq: I will do the simple in slightly different way; don't use unnecessary commands. For example, if and
is good enough, you can use that. If you need a video then you can put