00:01:44 -!- augur has quit (Remote host closed the connection). 00:19:58 -!- GreaseMonkey has quit (Quit: The Other Game). 00:25:25 We are helping a Slashdot reader conduct academic research by experimenting with a new feature for a handful of stories. Next to every comment, anyone can restate a point that they think the commenter is making. The goal is to encourage listening and to highlight interesting points. 00:25:31 this is going to end in disaster :) 00:27:04 I believe ais523 has a bad feeling about this feature. 00:27:39 -!- nooga has quit (Ping timeout: 260 seconds). 00:28:07 Does oerjan's summarry... elegantly distill meaning? uncover a good point? clarify the message? provoke unnecessarily? umm, it's not a summary 00:30:55 i see ais523 is missing the option of "make a cheap joke". 00:31:13 oerjan: that was a quote from Slashdot's summary thing 00:31:17 so blame Slashdot for that 00:31:21 aha 00:31:30 those are the options you can vote on summaries with 00:33:07 how boring. 00:33:27 wait, you can do summaries of the summaries with your votes 00:33:35 but there doesn't seem to be any way to vote on /those/ 00:33:40 * ais523 was hoping for an infinite regress 00:36:25 > fix (fun "vote on") :: Expr 00:36:25 vote on (vote on (vote on (vote on (vote on (vote on (vote on (vote on (vot... 00:37:51 > fix (fun "summarized in") :: Expr 00:37:52 summarized in (summarized in (summarized in (summarized in (summarized in (... 00:39:24 :t fun 00:39:25 forall a. (SimpleReflect.FromExpr a) => String -> a 00:39:42 :t f 00:39:43 forall a. (SimpleReflect.FromExpr a) => a 00:39:59 basically, f = fun "f" 00:40:27 > foldr (.) id [f,f,f] x :: Expr 00:40:29 f (f (f x)) 00:40:51 :t x 00:40:51 Expr 00:41:10 Expr is a more specific type, an instance of FromExpr 00:41:54 -!- ais523 has quit (Remote host closed the connection). 00:41:57 and then there is an instance (FromExpr a, FromExpr b) => FromExpr (a -> b) or so which is used when you apply f as a function. 00:44:10 > foldr (.) id [f..] x :: Expr 00:44:11 No instance for (GHC.Enum.Enum 00:44:11 (SimpleReflect.Expr -> S... 00:44:17 > foldr (.) id (repeat f) x :: Expr 00:44:19 f (f (f (f (f (f (f (f (f (f (f (f (f (f (f (f (f (f (f (f (f (f (f (f (f (... 00:45:01 > fix f 00:45:02 Ambiguous type variable `a' in the constraints: 00:45:03 `GHC.Show.Show a' 00:45:03 a... 00:45:05 > fix f :: Expr 00:45:06 > foldr ($) x [f,f,f] -- shorter 00:45:06 f (f (f (f (f (f (f (f (f (f (f (f (f (f (f (f (f (f (f (f (f (f (f (f (f (... 00:45:07 f (f (f x)) 00:46:10 > x*y + w*z 00:46:11 x * y + w * z 00:46:22 > x*(y-t) + w*z 00:46:23 x * (y - t) + w * z 00:46:50 :t expr 00:46:51 Expr -> Expr 00:46:59 wat 00:47:04 expr = id 00:47:13 hm maybe 00:47:17 "Force something to be an expression." 00:47:23 > expr f 00:47:23 f 00:47:38 useful for that, maybe 00:47:56 > f 00:47:57 Ambiguous type variable `a' in the constraints: 00:47:57 `SimpleReflect.FromExpr ... 00:48:01 mm 00:48:18 or more usefully, in places where putting :: Expr isn't easy 00:48:31 > fix (expr . f) 00:48:33 f (f (f (f (f (f (f (f (f (f (f (f (f (f (f (f (f (f (f (f (f (f (f (f (f (... 00:48:34 -!- invariable has changed nick to variablre. 00:48:35 -!- variablre has changed nick to variable. 00:49:04 > fix (join $ expr . f) 00:49:04 Couldn't match expected type `m a' 00:49:05 against inferred type `SimpleRef... 00:49:09 oops 00:49:17 > fix (expr . join f) 00:49:19 f (f (f (f (f (f (f (f (f (f (f (f (f (f (f (f (f (f (f (f (f (f (f (f (f (... 00:49:25 -!- augur has joined. 00:49:34 > iterate (expr . join f) x !! 3 00:49:36 f (f (f x x) (f x x)) (f (f x x) (f x x)) 00:50:02 i guess the expr . isn't really needed there 00:50:58 -!- augur has quit (Remote host closed the connection). 00:51:28 > f . expr . g . expr $ h x :: Expr 00:51:29 f (g (h x)) 00:59:59 -!- MSleep has joined. 01:01:55 > fix(scanl(+)0.(1:)) 01:01:57 [0,1,1,2,3,5,8,13,21,34,55,89,144,233,377,610,987,1597,2584,4181,6765,10946... 01:02:22 > fix(scanl(f)x.(y:)) 01:02:22 -!- MDude has quit (Ping timeout: 260 seconds). 01:02:23 [x,f x y,f (f x y) x,f (f (f x y) x) (f x y),f (f (f (f x y) x) (f x y)) (f... 01:03:09 > fix(scanl(flip f)x.(y:)) 01:03:11 [x,f y x,f x (f y x),f (f y x) (f x (f y x)),f (f x (f y x)) (f (f y x) (f ... 01:03:35 なにそれ 01:03:39 > fix(scanl(flip f)y.(x:)) 01:03:40 [y,f x y,f y (f x y),f (f x y) (f y (f x y)),f (f y (f x y)) (f (f x y) (f ... 01:05:14 -!- augur has joined. 01:16:57 -!- calamari has left ("Leaving"). 01:17:07 -!- itidus20 has joined. 01:30:44 -!- kmc has quit (Quit: Leaving). 01:51:02 -!- evincar has joined. 01:51:14 -!- tswett has quit (Changing host). 01:51:14 -!- tswett has joined. 01:51:47 I've had an excellent but also terrible idea. 01:52:01 Well, I had it in the past, but it's resurfaced with further development. 01:52:34 I know I'm not well-liked in here, so only if anyone cares will I go on. 01:53:05 O_o 01:54:47 oerjan: ? 01:57:03 it might be more productive to wait until a time when people here are active. 01:58:17 That's true. Although people are very industrious about logreading in here. 01:58:30 And I know elliott expressed interest in this concept once before. 01:58:56 is it an interesting concept 02:02:13 monqy: A long time ago I had the notion that functions are like verbs and nouns are like objects... 02:02:22 ...and you can do computation with both of them, so why not also with adjectives/sets? 02:02:54 So, in such a language, all terms denote sets/types, and your basic operation is something like type conversion. 02:03:00 Today, I ran. 02:03:04 wooo, computing is tough. 02:03:44 So for example "2" would denote "the set of all things of which there are exactly two". 02:04:15 good set 02:04:39 "+" is "the set of all operations which return the sum of their operands" 02:04:48 Of which there are several, and it's the compiler's job to choose which. 02:05:15 *cough* 02:05:23 so how did you arrive at this idea? 02:05:53 Initially, out of the blue. 02:05:58 It resurfaced because I was reading this: http://www.panix.com/~tehom/allnoun/allnoun8.faq 02:06:09 you know what, blue is not my color 02:06:17 you sure it was blue? 02:06:21 i like red and green more 02:06:54 arrived out of the red and green 02:07:00 Of course, that describes a rather different language. 02:07:27 It relates agents to roles to implicitly express relationships. 02:07:55 Whereas I'm thinking of merely sequencing roles. 02:08:06 that idea "of yours" is mine evincar. i called it "descriptive" or "declarative" languages and told you about it. and in fact you didn't get it at first. 02:08:06 "sequencing roles"? 02:08:44 which indicates to me that i should probably make a blog post about the idea or something. 02:08:47 -!- kmc has joined. 02:09:15 cheater: Was it you I had this discussion with? I think we independently arrived at related things back then and then just ranted at one another. 02:09:39 But a blog post would be good. 02:09:45 I must not have been around back then 02:10:17 It was...quite a while ago I should think, but I don't recall exactly when. 02:10:28 I guess I could laboriously logsearch. 02:11:13 search for "descriptive" or "declarative" 02:11:23 `log descriptive 02:11:26 2007-08-07.txt:04:58:15: Yet another Descriptive Idea from Figs. 02:11:34 we have also had a car analogy with ferrari cars. 02:11:37 `log ferrari 02:11:40 2007-06-07.txt:07:21:11: * pikhq really goes into uncontrollable laughter when comparing the capabilities of those POS machines and a UNIX box. . . (fine, so we're comparing tricycles to Ferraris. . . Still.) 02:11:45 no :( 02:11:47 `pastelogs ferrari 02:11:51 http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.5544 02:12:10 hmm 02:12:19 `pastelogs maserati 02:12:21 :D 02:12:23 http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.3244 02:12:33 damnit 02:12:55 `log .*?descriptive 02:12:59 2011-09-21.txt:02:12:55: `log .*?descriptive 02:13:02 `log .*?descriptive 02:13:06 2011-09-21.txt:02:11:13: search for "descriptive" or "declarative" 02:13:16 This is comical. 02:13:17 NOT IMMENSELY ENCOURAGING 02:13:25 hahahahahah 02:13:32 `log .*?declarative 02:13:35 2011-09-21.txt:02:13:32: `log .*?declarative 02:13:38 `log .*?declarative 02:13:40 Try cheater_ 02:13:42 2011-09-21.txt:02:13:32: `log .*?declarative 02:13:49 `log .*?declarative 02:13:51 2011-08-09.txt:19:30:25: NihilistDandy, i like to differentiate between "declarative" and "constructive" 02:14:00 `pastelogs http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.17723 02:14:04 that's more like it 02:14:08 i think that might be it 02:14:25 `pastelogs http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.27718 02:14:41 `pastelogs cheater.*evincar 02:14:45 http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.19057 02:15:02 2010-11-18.txt:09:25:39: i hate you and everything you stand for, evincar 02:15:05 good quote 02:15:11 I like it. 02:15:17 haha 02:15:33 yeah, the good old times. 02:15:34 Hey, I remember that video. 02:16:17 I might have gone by evincarofautumn? Possibly? Or eoa? 02:17:19 Except for possible nick length limits. 02:17:53 `log 2011-09-21.txt:02:17:53: `log :( 02:18:23 `log ^.*?declarative 02:18:26 No output. 02:18:32 er 02:18:40 what's wrong with HackEgo? 02:18:40 He was cheater99 before... 02:18:43 `log ^ `pastelogs evincar.*adjective 02:18:46 No output. 02:18:47 http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.30696 02:19:08 What the hell did I call myself back then? 02:19:10 `log ^< 02:19:11 Or did we lose logs? 02:19:14 No output. 02:19:30 `log test 02:19:33 2007-03-27.txt:16:17:31: shortest combinations to get to n 02:19:54 `log ^2008 02:19:58 No output. 02:20:10 it just doesn't start with that... 02:20:35 `log ^.*2008 02:20:36 it starts with the hour 02:20:38 2011-02-11.txt:00:03:45: I want to ask you not to think a "timer snob" of Korean fans as "just" a equipment to prevent "fan death". ― 韓斌/Yes0song (談笑 筆跡 다지모) 07:16, 19 February 2008 (UTC)]] 02:20:45 the date is part of the filename 02:20:49 ah 02:21:56 either way the idea was that in constructive languages (what you know as imperative) programs are built out of verbs, nouns, and adjectives. in declarative languages (what you know as functional) programs are built out of nouns and adjectives. the idea for descriptive languages was to use adjectives only, and use predicate composition to specify concrete concepts. 02:22:04 `log [<]cheater.*adjective 02:22:07 2011-09-21.txt:02:17:53: `log Alright, so we're roughly on the same page. 02:22:25 an underspecified concept can be seen as a curried function. 02:22:27 `log : [<]cheater.*adjective 02:22:31 2010-09-22.txt:22:59:12: why is there no adjective form of holland? 02:22:46 is there not? it's hollandaise, isn't it? 02:22:47 I mean, in a concatenative language all terms denote functions, and the basic operation is function composition. 02:23:19 i think composition in this case looks different. 02:23:21 So it's not such a stretch to say all terms are nouns denoting sets (I don't think of adjectives as fundamental really). 02:23:31 Or rather, they're interchangeable. 02:23:45 it is just an intersection of sets, not a composition of functions as assignments from one set to another. 02:23:47 oerjan: try .*? perhaps 02:24:14 I don't know if intersection works exactly. 02:24:26 they work for my idea 02:24:37 Can you give a more concrete example? 02:24:40 CakeProphet: at this point i was just experimenting with how to avoid getting the search itself back as a hit 02:24:45 the set of all humans 02:25:06 also, "dutch" 02:25:08 when you are trying to specify a certain person you start naming specific descriptive adjectives 02:25:18 I feel like that's...just Prolog. 02:25:24 each such adjective defines a set of people 02:25:24 And I'm going for something different. 02:25:47 Okay. 02:25:51 but those sets intersect to a smaller and smaller subset until you have a singleton set 02:26:09 Which is roughly equivalent to a normal form. 02:26:24 what do you mean by that? 02:26:27 Something you can use as a value proper. 02:26:37 Rather than, like, a thunk. 02:26:47 Or whatever. 02:26:49 i don't see the distinction as important 02:26:51 It's a stretch of an analogy. 02:26:59 underspecified functions are more important 02:27:32 it's just that you bottom out when you finish your specification and could start overspecifying or specifying contradictions 02:27:44 this is not good 02:29:26 i think you can make very good optimizations to such a language, given a strong enough topology for the space you are working in 02:30:14 it's a topologist's language 02:30:20 I guess I'm leaning toward something more general. 02:30:25 And less like a logic language. 02:30:29 *sigh* x86 sucks. 02:31:26 what are you leaning towards? 02:32:07 -!- sebbu2 has joined. 02:32:07 -!- sebbu2 has quit (Changing host). 02:32:07 -!- sebbu2 has joined. 02:32:29 -!- sebbu has quit (Ping timeout: 260 seconds). 02:33:55 I guess like I said before (then got sidetracked from) the core concept would be "everything is a type" and type conversion would be the basic operation. 02:34:15 You'd be doing graph-reduction, internally. 02:34:21 Like a functional language. 02:34:28 C also sucks. Even as a systems language. 02:34:49 pikhq_: Use assembly. 02:34:56 Assembly sucks worse. 02:35:07 Then use the lesser of two evils, obviously. 02:35:42 But jeeze, it is a freaking *ordeal* just to get a freaking binary into RAM on x86. 02:42:32 -!- hagb4rd has joined. 02:44:51 Hmm. If you allow types to take parameters, you just get regular old dependent typing. 02:45:06 *value parameters 02:45:10 But there's not necessarily any provision in this system for parameters. 02:45:12 Well, yes. 02:45:26 But there's no distinction between values and types. 02:48:10 I guess...if "+" is a set of operations and "x" and "y" are singleton sets, then "m + n" really denotes a conversion from the type "m x n" to the type "m + n". 02:48:20 It's only reducible to the arithmetic result incidentally. 02:48:43 Hurgh this is wrong and bad. 02:48:55 I feel like there's something to it though. 02:49:25 Ugh, s/"x" and "y"/"m" and "n"/. 02:56:55 * pikhq_ should not be NIHing a systems language 02:56:58 * pikhq_ really shouldn't be 02:57:22 bad nih is best nih 02:58:48 help what is NIH 02:59:50 `quote NIH 02:59:52 172) cpressey, oh go to zzo's website. He is NIH AnMaster, really? I was strongly under the impression that zzo was invented here. \ 474) elliott: His mouse obeys the law of the excluded middle :/ \ 506) MY CONTINUITY MY FANFICTION 03:00:36 -!- azaq23 has quit (Quit: Leaving.). 03:00:53 Not in Here; Not Invented Here; -ilistDandy. 03:01:14 * pikhq_ summons elliott 03:01:19 @! @! @! 03:01:20 Maybe you meant: . ? @ v 03:01:28 Maybe you did. 03:02:28 @id 03:02:32 @help 03:02:33 help . Ask for help for . Try 'list' for all commands 03:02:35 @list 03:02:35 http://code.haskell.org/lambdabot/COMMANDS 03:02:50 @id entical 03:02:50 entical 03:03:11 @. . . id id id id 03:03:11 Plugin `compose' failed with: Unknown command: "" 03:03:14 :( 03:03:55 I can't even get myself to want to touch this any more, IT'S ALL BAD 03:04:06 * oerjan recommends @@ instead of @. 03:07:05 So like 03:07:08 def (length nil) (0) 03:07:10 def (length cons x (xs)) (+ 1 (length xs)) 03:07:10 @@ 03:07:18 @@ what does this do 03:07:18 what does this do 03:07:32 @help @@ 03:07:32 help . Ask for help for . Try 'list' for all commands 03:07:34 @help @ 03:07:35 @ [args]. 03:07:35 @ executes plugin invocations in its arguments, parentheses can be used. 03:07:35 The commands are right associative. 03:07:35 For example: @ @pl @undo code 03:07:35 is the same as: @ (@pl (@undo code)) 03:08:00 Then..."def x y" and "+ x y" are assumed to be reducible, and everything else is just pattern matching. 03:08:24 But you could do interesting things with relations. 03:08:38 Because e.g. "def x y" is considered a true proposition. 03:08:45 @ (@id test) 03:08:49 @@ (@id test) 03:08:49 test 03:09:11 @@ (@id (@@ what happens??)) 03:09:12 what happens 03:09:41 @@ (@id (@@ (@id boop))) 03:09:41 boop 03:09:51 obviously we now need to make lambdabot turing complete. 03:10:04 Madoka-Kaname: you're not supposed to need nested @@'s 03:10:16 I'm just seeing what happens. 03:10:53 can we define our own commands or do we have to hack lambdabot? 03:11:01 I suppose adding S and K would be sufficient. 03:11:36 there are places to add information, but not new commands afaik 03:11:54 @run map (^2) [1..] 03:11:55 [1,4,9,16,25,36,49,64,81,100,121,144,169,196,225,256,289,324,361,400,441,48... 03:12:08 Done. 03:12:11 @run map (2^) [1..] 03:12:12 [2,4,8,16,32,64,128,256,512,1024,2048,4096,8192,16384,32768,65536,131072,26... 03:12:13 See! 03:12:22 not what I mean. 03:12:39 @run map (uncurry (^)) $ zip [0..] [1..] 03:12:40 [0,1,8,81,1024,15625,279936,5764801,134217728,3486784401,100000000000,31384... 03:12:46 > iterate (2*) 2 03:12:46 [2,4,8,16,32,64,128,256,512,1024,2048,4096,8192,16384,32768,65536,131072,26... 03:13:14 so does having a finite output change the turing completeness of Haskell? 03:13:23 > zipWith (^) [0..] [1..] 03:13:24 [0,1,8,81,1024,15625,279936,5764801,134217728,3486784401,100000000000,31384... 03:13:26 since the evaluation semantics are based on need.. 03:13:41 CakeProphet: um no... 03:14:21 so the fact that there's a set of problems it won't fully compute due to the finite output size does not change turing completeness? 03:14:22 as long as it is unbounded 03:14:48 CakeProphet: a _turing machine_ does not have infinite output 03:15:17 also, it is customary to consider decision machines which only output yes or no as sufficient 03:15:34 for many purposes 03:15:42 ah okay 03:16:08 I realize output in the typical sense is not considered in turing completeness 03:16:38 but since output seems to directly affect Haskell's evaluation semantics I thought perhaps this an exception where it could be considered. 03:16:53 waht 03:17:34 more specific plz 03:17:55 you only need String -> String functions, or similar, to show Haskell TC 03:18:04 and the strings can be finite 03:18:11 ah okay, right. 03:18:18 the output doesn't factor in at all ever. 03:18:26 so I guess evaluation strategy doesn't either? 03:18:39 well it might, if there was no other way of defining a result 03:18:41 because in circumstances without IO Haskell effectively evaluates nothing. 03:19:05 ah okay. 03:20:40 @yhjulwwiefzojcbxybbruweejw 03:20:40 "\"" 03:20:45 @yhjulwwiefzojcbxybbruweejw what the crap is this 03:20:46 Exception: <> 03:20:52 @yhjulwwiefzojcbxybbruweejw ? 03:20:52 Just 'J' 03:20:55 @yhjulwwiefzojcbxybbruweejw a 03:20:55 "\"\\\"\\\\\\\"\\\\\\" 03:20:58 @yhjulwwiefzojcbxybbruweejw aaa 03:20:58 "\"\\\"\\\\\\\"\\\\\\\\\\\\\\\"\\\\\\\\\\" 03:21:07 @yhjulwwiefzojcbxybbruweejw yhjulwwiefzojcbxybbruweejw 03:21:07 "\"#$%&'()*+,\"" 03:21:12 so what does this thing do 03:21:16 i don't think it looks at its argument 03:21:25 it's just one of the quote databases 03:21:50 (now exactly _why_ those quotes are selected - well that would be telling.) 03:22:26 @help da 03:22:26 help . Ask for help for . Try 'list' for all commands 03:22:30 @yhjulwwiefzojcbxybbruweejw 03:22:30 "\"\\\"\\\\\\\"\\\\\\\\\\\\\\\"\\\\\\\\\\" 03:22:32 @yhjulwwiefzojcbxybbruweejw 03:22:32 @help yhjulwwiefzojcbxybbruweejw 03:22:33 Just 'J' 03:22:33 V RETURNS! 03:22:36 wtf 03:22:47 @help yhjulwwiefzojcbxybbruweejw 03:22:48 V RETURNS! 03:22:50 o.o? 03:22:52 @help v 03:22:52 let v = show v in v 03:22:53 @yhjulwwiefzojcbxybbruweejw 03:22:53 "\"#$%&'()*+,\"" 03:22:58 @yhjulwwiefzojcbxybbruweejw 03:22:58 "\"\\\"\\\\\\\"\\\\\\\\\\\\\\\"\\\\\\\\\\" 03:22:59 @v 03:22:59 Exception: <> 03:23:00 @yhjulwwiefzojcbxybbruweejw 03:23:00 "\"\\\"\\\\\\\"\\\\\\" 03:23:02 @yhjulwwiefzojcbxybbruweejw 03:23:02 @v 03:23:03 "\"#$%&'()*+,\"" 03:23:03 Exception: <> 03:23:03 @yhjulwwiefzojcbxybbruweejw V 03:23:04 Just 'J' 03:23:04 @yhjulwwiefzojcbxybbruweejw 03:23:04 "\"\\\"\\\\\\\"\\\\\\\\\\\\\\\"\\\\\\\\\\" 03:23:09 what 03:23:09 poor @v 03:23:11 what the hell is this 03:23:17 @v 03:23:17 Just 'J' 03:23:20 :') 03:23:31 @v 03:23:31 Just 'J' 03:23:35 @help v 03:23:35 let v = show v in v 03:23:40 what 03:23:49 I am confused 03:24:10 > let v = show v in v 03:24:11 "\"\\\"\\\\\\\"\\\\\\\\\\\\\\\"\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"\\\\\\\\\\\\... 03:24:16 >fix show 03:24:18 > fix show 03:24:19 "\"\\\"\\\\\\\"\\\\\\\\\\\\\\\"\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"\\\\\\\\\\\\... 03:24:23 oooooooooooooh 03:24:27 ok, that explains that bit 03:24:29 > fix (reverse.show) 03:24:33 mueval-core: Time limit exceeded 03:24:43 > fix (show.reverse) 03:24:47 mueval-core: Time limit exceeded 03:24:52 > show.show 3 03:24:54 ["'3'"] 03:24:57 > show.show.show 3 03:24:59 ["\"'3'\""] 03:25:01 > show.show.show.showq 3 03:25:02 Not in scope: `showq' 03:25:03 > show.show.show.show 3 03:25:05 ["\"\\\"'3'\\\"\""] 03:25:08 > show.show.show.show.show 3 03:25:10 ["\"\\\"\\\\\\\"'3'\\\\\\\"\\\"\""] 03:25:13 XD 03:25:27 > fix (show.map(chr. +1 .ord)) 03:25:27 : parse error on input `+' 03:25:29 > fix (show.) 3 03:25:31 "\"\\\"\\\\\\\"\\\\\\\\\\\\\\\"\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"\\\\\\\\\\\\... 03:25:32 > fix (show.map(chr.(+1).ord)) 03:25:34 "\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]]^^__``aab... 03:25:44 > fix (map(chr.(+1).ord).show) 03:25:46 "#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]]^^__``aabbccd... 03:25:51 > fix (map(chr.(*2).ord).show) 03:25:52 "D\136\184bfl\184bph\196\204\216\184bph\196\224\208\184brl\184d`h\184dbl\18... 03:28:01 > let v = show $ map succ v in v 03:28:02 "\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]]^^__``aab... 03:28:03 > fix (map succ . show) 03:28:04 "#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]]^^__``aabbccd... 03:28:16 oerjan: bah 03:28:24 but why does the quote one stop after , ? 03:28:53 -!- augur has quit (Remote host closed the connection). 03:29:19 @help id 03:29:20 id . The identity plugin 03:29:25 @id help 03:29:25 help 03:29:33 man that's so useful 03:29:44 -!- itidus20 has left ("Leaving"). 03:30:16 > let v = show . take 11 $ map succ v in v 03:30:17 "\"#$%&'()*+,-\"" 03:30:23 > let v = show . take 10 $ map succ v in v 03:30:24 "\"#$%&'()*+,\"" 03:30:45 still, a little unsatisfactory 03:31:28 > show 03:31:29 Overlapping instances for GHC.Show.Show (a -> GHC.Base.String) 03:31:29 arising f... 03:31:42 > show 3 03:31:43 "3" 03:31:52 > show.show 3 03:31:53 ["'3'"] 03:32:02 -!- evincar has quit (Quit: Bah. Homework time.). 03:32:28 :t show.show 3 03:32:28 [String] 03:32:41 ooh 03:32:49 it's caleskell . which does it 03:33:34 > fix (show.) 03:33:35 No instance for (GHC.Show.Show (f GHC.Base.String)) 03:33:35 arising from a use o... 03:33:39 argh 03:34:11 > fix (show.) :: [String] 03:34:15 mueval-core: Time limit exceeded 03:35:08 > fix (.) 03:35:09 Occurs check: cannot construct the infinite type: a = f a 03:35:15 man that's so useful <-- clearly the identity plugin is intended for use in plugin transformers 03:35:17 > fix ((.).) 03:35:18 Occurs check: cannot construct the infinite type: a = f a 03:35:21 "< 03:35:22 :< 03:35:24 * oerjan cackles madly 03:37:27 oerjan: if only there were plugin transformers 03:37:46 -!- augur has joined. 03:38:06 @@ @djinn :t id 03:38:07 Invalid command 03:38:09 :( 03:38:10 @type 03:38:11 : not an expression: `' 03:38:17 @@ @djinn @type id 03:38:18 f a = a 03:38:22 @@ @djinn @type unsafeCoerce 03:38:23 Cannot parse command 03:39:00 @@ @djinn @type (>>=) 03:39:01 Cannot parse command 03:39:48 try parentheses??/ 03:39:58 @@ @djinn (@type (>>=)) 03:39:58 Cannot parse command 03:40:04 :'( 03:40:07 @@ (@djinn (@type ((>>=)))) 03:40:07 Cannot parse command 03:40:23 @help @ 03:40:24 @ [args]. 03:40:24 @ executes plugin invocations in its arguments, parentheses can be used. 03:40:24 The commands are right associative. 03:40:24 For example: @ @pl @undo code 03:40:24 is the same as: @ (@pl (@undo code)) 03:40:28 @@ (test) 03:40:28 (test) 03:40:33 @@ (((@djinn (((@type (((>>=))))))))) 03:40:34 ((Cannot parse command)) 03:40:41 @@ @type (>>=) 03:40:41 forall (m :: * -> *) a b. (Monad m) => m a -> (a -> m b) -> m b 03:40:50 i don't think it's @@ that has problems 03:40:54 djinnn 03:40:59 nnnnnnnnnnnnnnn 03:40:59 DJIIIIIIN 03:41:02 n 03:41:10 @type id 03:41:11 forall a. a -> a 03:41:16 the kind I guess. 03:41:21 or maybe typeclass 03:41:21 forall...... 03:41:27 forall is fine 03:41:31 @@ @djinn @type id 03:41:32 f a = a 03:41:34 oh 03:41:38 @type (>>=) 03:41:38 forall (m :: * -> *) a b. (Monad m) => m a -> (a -> m b) -> m b 03:41:55 @djinn forall m a b. (Monad m) => m a -> (a -> m b) -> m 03:41:55 b 03:41:55 Error: kind error: (KVar 0,KStar) 03:42:00 f 03:42:04 @djinn forall m a b. (Monad m) => m a -> (a -> m b) -> m b 03:42:04 f = (>>=) 03:42:11 wow! 03:42:15 was the kind 03:42:43 @@'s fault for not providing a good error message 03:42:44 @djinn forall (m :: * -> *) a b. (Monad m) => m a -> (a -> m b) -> m b 03:42:44 Cannot parse command 03:42:56 monqy: it was @djinn's error message 03:42:57 oh djinn's fault maybe 03:42:59 bah 03:43:07 djinn;s fault for not providing a good error mesasge 03:43:07 @@ (@djinn (@exec text $ head $ tail $ splitOn "." (@type (.)))) 03:43:09 Plugin `compose' failed with: Unknown command: "exec" 03:43:16 @exec text $ "Test" 03:43:16 Unknown command, try @list 03:43:17 and @@'s fault for not saying it was djinn;s fault 03:43:41 @@ (@djinn (@run text $ head $ tail $ splitOn "." (@type (.)))) 03:43:42 Cannot parse command 03:43:54 @@ (@djinn (@run text $ head $ tail $ splitOn "." (@type \(.\)))) 03:43:55 Cannot parse command 03:43:59 @@ (@djinn (@run text $ head $ tail $ splitOn "." (@type id))) 03:44:00 Cannot parse command 03:44:02 :( 03:44:11 @@ @pl @unpl @pl @djinn @pl @djinn @type id 03:44:11 Cannot parse command 03:44:22 @type id 03:44:23 forall a. a -> a 03:44:40 Madoka-Kaname: i'd suggest looking at what @djinn's argument actually _is_ 03:44:43 @run text $ head $ tail $ splitOn "." "forall a. a -> a" 03:44:44 Not in scope: `splitOn' 03:44:48 @@ @pl @unpl @type @pl @djinn @type @pl @djinn @type id 03:44:49 Parse error at "in" (column 5) 03:44:57 @djinn a -> a 03:44:57 f a = a 03:45:14 @djinn (Monad m) => m -> m 03:45:14 f a = a 03:46:24 @run text $ head $ tail $ dropUntil (!=".") "forall a. a -> a" 03:46:25 Not in scope: `dropUntil'Not in scope: `!=' 03:46:28 @@ @pl @djinn @type @pl @djinn @type id 03:46:29 Cannot parse command 03:46:32 :( 03:46:45 @@ @pl @djinn @type id 03:46:46 f = id 03:46:46 @run text $ head $ tail $ dropUntil (/=".") "forall a. a -> a" 03:46:47 Not in scope: `dropUntil' 03:47:30 @@ @type let (@pl @djinn @type id) in id 03:47:32 forall a. a -> a 03:48:02 @@ @pl @unpl @pl @djinn @type let (@pl @djinn @type id) in id 03:48:03 f = id 03:48:12 >_> 03:48:20 @@ (test) 03:48:20 (test) 03:48:33 @@ @djinn @run text $ head $ tail $ dropWhile (/=".") @type id 03:48:35 Cannot parse command 03:48:45 sadly too many lambdabot commands don't give output formatted for chaining 03:48:50 @@ @djinn @run text . head . tail . dropWhile (/=".") "@type id" 03:48:50 Cannot parse command 03:48:50 Cannot parse command 03:49:06 @@ There's @run (2^32) 32-bit words 03:49:07 There's Couldn't match expected type `GHC.Types.Int' 03:49:07 against inferred type ... 03:49:19 @@ There's (@run 2^32) 32-bit words 03:49:20 There's 4294967296 03:49:20 32-bit words 03:49:24 heh 03:49:31 @@ " 03:49:32 " 03:49:37 @@ @run text $ "wee" 03:49:38 wee 03:49:59 @@ @djinn @run text $ "(b -> a -> c) -> a -> b -> c" 03:50:00 f a b c = a c b 03:50:19 @@ @djinn @run text $ "(@type id)" 03:50:20 Cannot parse command 03:50:31 @@ @djinn @run text $ " (@type id) " 03:50:31 Cannot parse command 03:50:33 :s 03:51:50 @@ @run text $ " (@type id) " 03:51:51 (@type id) 03:52:06 @@ @vixen @type (,,,,,,,,,,) 03:52:06 Plugin `compose' failed with: Unknown command: "vixen" 03:52:22 ? 03:52:24 help 03:52:27 ?vixen 03:52:27 I brought myself down. I impeached myself by resigning. 03:52:30 @@ @run text @show @type id 03:52:31 forall a. a -> a 03:53:09 @vixen 03:53:09 The second point is that coming out--coming back and saying that black Americans aren't as good as black Africans--most of them , basically, are just out of the trees. Now, let's face it, they are. 03:53:11 what 03:53:28 @@ @djinn @run text $ dropWhile(==".") $ dropWhile(/=".") $ @show @type id 03:53:29 Cannot parse command 03:53:29 Cannot parse command 03:53:35 LAMBDABOT BUG 03:53:39 @@ @djinn @run text $ dropWhile (==".") $ dropWhile (/=".") @show @type id 03:53:39 NO VIXEN FOUND. ABORT. 03:53:40 Cannot parse command 03:53:40 Cannot parse command 03:53:48 @@ @djinn @run text $ dropWhile (==".") $ dropWhile (/=".") ". a -> a" 03:53:49 Cannot parse command 03:53:49 Cannot parse command 03:53:56 Madoka-Kaname: needs moar parens 03:54:08 @@ @djinn (@run text $ dropWhile (==".") $ dropWhile (/=".") @show @type id) 03:54:09 Cannot parse command 03:54:09 @list vixen 03:54:09 Cannot parse command 03:54:09 No module "vixen" loaded 03:54:19 @@ @djinn (@run text $ dropWhile ( == "." ) $ dropWhile ( /= "." ) @show @type id) 03:54:20 Cannot parse command 03:54:20 Cannot parse command 03:54:22 :( 03:54:23 @@ @vixen-on 03:54:23 Plugin `compose' failed with: Unknown command: "vixen-on" 03:54:23 @vixer 03:54:23 Unknown command, try @list 03:56:06 @@ @list 03:56:58 wheres thje list help 03:59:38 -!- pumpkin has joined. 04:04:30 -!- oerjan has quit (*.net *.split). 04:04:30 -!- Zuu has quit (*.net *.split). 04:04:31 -!- fungot has quit (*.net *.split). 04:04:31 -!- qnix has quit (*.net *.split). 04:04:32 -!- copumpkin has quit (*.net *.split). 04:04:33 -!- cheater2 has quit (*.net *.split). 04:04:33 -!- aloril has quit (*.net *.split). 04:04:34 -!- yiyus has quit (*.net *.split). 04:04:35 -!- Deewiant_ has quit (*.net *.split). 04:04:36 -!- coppro has quit (*.net *.split). 04:04:36 -!- EgoBot has quit (*.net *.split). 04:04:36 -!- quintopia has quit (*.net *.split). 04:04:38 -!- augur has quit (*.net *.split). 04:04:38 -!- Patashu has quit (*.net *.split). 04:04:38 -!- BeholdMyGlory has quit (*.net *.split). 04:04:39 -!- CakeProphet has quit (*.net *.split). 04:04:39 -!- atehwa_ has quit (*.net *.split). 04:04:41 -!- fizzie has quit (*.net *.split). 04:04:41 -!- chickenzilla has quit (*.net *.split). 04:04:42 -!- Wamanuz2 has quit (*.net *.split). 04:04:44 -!- lambdabot has quit (*.net *.split). 04:04:44 -!- twice11 has quit (*.net *.split). 04:04:44 -!- hagb4rd has quit (*.net *.split). 04:04:44 -!- sebbu2 has quit (*.net *.split). 04:04:44 -!- kmc has quit (*.net *.split). 04:04:45 -!- MSleep has quit (*.net *.split). 04:04:45 -!- Madoka-Kaname has quit (*.net *.split). 04:04:46 -!- Nisstyre has quit (*.net *.split). 04:04:46 -!- DH____ has quit (*.net *.split). 04:04:47 -!- lifthrasiir has quit (*.net *.split). 04:04:47 -!- Gregor has quit (*.net *.split). 04:14:12 -!- Madoka-Kaname has joined. 04:14:31 -!- CakeProphet has joined. 04:14:31 -!- CakeProphet has quit (Changing host). 04:14:31 -!- CakeProphet has joined. 04:15:03 wow this is a ridiculous netsplit. 04:15:04 -!- pumpkin has changed nick to copumpkin. 04:15:30 chat.freenode.net died or something 04:35:07 >_> 04:35:08 still dead. 04:35:16 wow C++ is amazing. 04:35:27 In which sense of the word? 04:35:28 I try to do something incredibly simple and I get garbage output. 04:35:32 mm 04:35:37 like what / like what 04:35:40 I am now curious 04:36:34 hold on emacs is a bitch to copypaste from. 04:37:14 basically just ^@^@^@^@^@^@^@^@^@ ad infinitum 04:37:26 I'm trying to iterate over a linked list and print each element for my lab... 04:39:17 for(iter=strList2.end(); iter != start; iter--) { 04:39:20 does anything look wrong with this? 04:40:03 what's start 04:40:15 start = strList2.begin(); start++; start++; 04:40:15 and what's the body 04:40:23 cout << *iter << " "; 04:40:25 is the body 04:40:45 how long is strList2 04:41:09 6 elements. 04:41:17 hm 04:41:22 could something be wrong with the iterator? 04:41:30 probably. 04:41:31 I dunno how C++ iterators work 04:41:44 I thought I did but apparently not. 04:42:10 basically an iterator is a kind of pointer-like object. 04:42:34 What type is iter? 04:42:36 ++ increments its position and -- decrements. * accesses the element it points to, and == and != check to see if iterators point to the same thing. 04:42:42 list::iterator 04:42:46 Dunno. 04:45:04 -!- invariable has joined. 04:45:27 yeah I have no clue this code looks fine to me. 04:45:57 So... 04:46:01 C++'s being evil 04:46:12 hmmm wait I have an idea 04:46:13 -!- variable has quit (Ping timeout: 252 seconds). 04:46:31 I think I need to start with --strList2.end() 04:46:48 yep 04:47:12 because strList2.end() points to the location after the list 04:47:48 would probably be easier to use rbegin to do reverse iteration. 04:48:11 but it's one of those labs where they supply some of the code for you, and they declared the iterators are iterator and not reverse_iterator 04:48:16 C++ <3 04:48:58 dumb 04:50:16 yeah iterators seem like one of the most annoying ways to iterator. 04:50:48 I'd rather use an integer index, honestly. 04:56:51 ugh, indices 04:57:03 iterators gonna iterate, man 04:58:30 but with C++ it's almost exactly the same as using an index, except now more verbose 04:59:37 you don't get off-by-one errors for linear traversals, and it's likely more efficient on structures that don't support indexing easily 05:01:17 yeah that's true 05:01:34 most things with inefficient indexing in stl doesn't have the option to be indexed. 05:06:53 -!- evincar has joined. 05:08:07 It's at least vaguely tolerable with C++0x, though. for(int &x : any_damned_thing_containing_ints) { ... } 05:08:30 Yes, that does precisely what you think. 05:09:00 CakeProphet: You can use the reverse_iterator adaptor to make a reverse iterator out of your forward iterator. :P 05:09:11 yeah that sounds like so much fun 05:09:15 especially since I got it working. 05:09:22 Assuming it's not actually a "forward iterator" but a bidirectional one. 05:09:39 pikhq_: that's not bad. how does it determine the any-damned-thing-containing-ints part? 05:09:41 Oh. Probably by reimplementing it. 05:09:53 Reimplementing reverse_iterator, that is. 05:10:02 yeah it's bidirectional. 05:10:34 I know, I was just correcting myself to avoid getting flamed for saying something that was slightly off. 05:11:04 yeah I'm all about staunch correctness 05:11:40 Some of us in here are... 05:11:47 ...depending on what about, o'course. 05:12:27 CakeProphet: for(foo &x : bar) is syntactic sugar for (if bar's a foo[]) for(int i = 0; i < sizeof(bar); i++) {foo &x=bar[i]; ...} or (if bar's an object with begin() and end()) foo(auto i = bar.begin(); i != bar.end(); ++i) {foo &x=*i; ... } 05:13:02 sizeof(bar)/sizeof(*bar), actually... 05:13:05 is auto a C++0x thing? 05:13:09 Yes. 05:13:23 evincar: Bah, right. 05:13:27 I assume for type inference? 05:13:31 C++0x: solving problems with C++ that should have been solved ages ago. 05:13:38 CakeProphet: Pretty much. 05:13:40 Yeah, auto is for type inference in declarations. 05:13:47 evincar: Pretty much. 05:13:54 decltype is for type inference...elsewhere. 05:14:00 And then there are the ugly-ass lambdas. 05:14:32 Also, fucking rvalue references. Solving a problem that should never have been there in the first place. 05:14:35 The lambdas aren't that bad syntactically. Though conceptually they're utterly awful, due to C++ *not being friggin' garbage collected*. 05:14:51 That's ostensibly what shared_ptr and friends are about. 05:15:02 rvalue references? 05:15:03 See, every time you say something awful about C++... 05:15:12 ...I can just respond like the standards committee does. 05:15:20 With libraries and awful hacks and stuff. 05:15:27 Reference counting: because everything bad about manual memory allocation plus everything bad about automatic memory allocation equals "good". 05:16:35 You can use a garbage collector in C++. 05:16:41 It's just that nobody does. 05:17:26 Actually, it's only C++11 that makes it possible for a conformant implementation to be garbage collected... 05:17:52 (due to some perverse edge cases that a GC would inevitably break, IIRC) 05:17:52 Oh, with vanilla "new", I guess. 05:18:00 I was thinking of allocators in general. 05:18:14 Ah. Yeah, not that bad to use Boehm. 05:18:29 You can safely write an allocator that allocates from pools allocated with "new". 05:18:38 You would just have to use it explicitly. 05:18:46 Or write a gc_ptr or something. 05:18:49 Like I said, not that bad to use Boehm. 05:18:58 It's definitely preferable. 05:19:31 I can only give C++ credit for one thing: 05:19:39 IIRC you can just have a class inherit from gc to allocate with Boehm. 05:19:48 Somehow succeeding at being "all things to all developers". 05:20:22 C++ is my anti-drug. 05:21:05 seriously, why doesn't pop in C++ RETURN anything. 05:21:22 Because that would make sense. 05:21:22 s/C++/stl/ 05:21:37 Seriously, why the eff would you not want pop to actually hand you a value? 05:22:15 It's because it would have to return by value. 05:22:19 Which may be expensive. 05:22:39 And there's no way to determine inside the implementation of pop() whether the caller expects a value. 05:22:42 So you have to generate it. 05:23:00 So top() (stack) or back()/front() returns by reference. 05:23:13 And pop() or pop_back()/pop_front() returns void. 05:23:24 char f = puzzle.front(); 05:23:24 char b = puzzle.back(); 05:23:24 puzzle.pop_front(); 05:23:24 puzzle.pop_back(); 05:23:24 puzzle.push_front(b); 05:23:26 Y'know what this means? 05:23:26 puzzle.push_back(f); 05:23:29 best code 05:23:41 for swapping the front and end of a linked list. 05:23:49 C++ is not a solution, it is a problem to which you find solutions. 05:23:51 std::swap(puzzle.front(), puzzle.back()) // FTFY 05:24:09 Remember mutable variables? 05:24:12 And how they are a thing? 05:24:17 oh right. 05:24:19 (A bad thing, but a thing nonetheless.) 05:24:29 swap is in algorithm I'm guessing? 05:24:33 Yep. 05:24:49 should probably look at that file more. 05:24:55 It's hella useful... 05:25:21 ...most of the reason C++ gets a bad reputation is the horrid C-style code that's written in it. 05:25:22 yeah after using Perl and Haskell it'll take a while to adapt to C++'s idioms 05:25:43 I wish C++ got a bad reputation for the GENUINELY BAD THINGS ABOUT IT. 05:25:53 nothing wrong with C style code. 05:25:53 But that's just me. 05:26:00 In C++ there is... 05:27:16 evincar: Funny, I give C++ a bad rep for it's poorly implemented "high-level" concepts. 05:27:50 hmmm, so I guess the best way to shift to leftmost character to the end would be to pop_front then push_back. 05:27:54 any shorter way? 05:27:59 *shift the 05:28:05 Ditto. Although the hacks are largely to support generation of efficient code... 05:28:29 s/it's/its/ 05:28:31 ...but that code is largely only "efficient" according to the standards of older optimisation technology. 05:29:12 Well, it also has some pretty comical encapsulation breaks. 05:29:20 Such as "changing private members breaks ABI" 05:29:23 CakeProphet: v.push_back(v.front()); v.pop_front(); is about as short as you can get. 05:29:39 And "though technically undefined behavior, #define private public is fun times." 05:30:06 Technically nothing. UB is just that and you get what you pay for. :P 05:31:25 How would you propose to preserve data layout in the event of changing members? 05:31:44 The size might change, so you can't make any guarantees about derived classes. 05:31:51 First, don't try to be "C, plus this". 05:32:01 This solves most of your problems, really. 05:32:12 Those necessarily break if you're implementing data layout in the usual way. 05:32:16 Which is the most efficient way. 05:32:16 this is what C++0x appears to do. 05:32:23 sizeof becomes completely moot, for instance. 05:32:26 CakeProphet: No. 05:32:28 (not be C plus stuff) 05:32:38 or at least tries 05:32:41 to go in that direction 05:32:42 a little. 05:32:51 C++ is C plus stuff fundamentally. 05:32:52 CakeProphet: C++0x still has a sizable common subset with C, and has its semantics hacked into C semantics. 05:32:58 C++11 tries to make it look like it isn't. 05:33:10 It's supposed to be more beginner-friendly. 05:33:21 It's the source of pretty much all the problems with C++'s attempts at high-level concepts. 05:33:22 To try to get people to actually use what have been considered best practices for years. 05:33:58 needs more functional code. 05:34:03 pikhq_, could you offer some examples? 05:34:11 In general I agree, but I'm curious. 05:35:34 evincar: The aforementioned issue with private members, for one. If C++ didn't have to really consider C, then it could (for instance) access private members via a means *other* than "pointer plus an offset". 05:35:56 Another obvious fault is that it goes to great lengths to retain C's manual memory allocation. 05:36:01 But that's not the most efficient way to do it. 05:36:28 The (painful) motto of C++ is "you don't pay for what you don't use". 05:36:41 If you want a stable ABI, use a pointer to a private implementation. 05:36:53 No, the most efficient way to do it is to get a custom ASIC. 05:37:03 What's that, you're running on general-purpose silicon? Guess you've already sacrificied efficiency. 05:37:07 :P 05:38:03 Point is, C++ makes the (bad) decision of trying to build abstraction atop low-level features in such a way that it's still efficient. 05:38:15 Rather than make an optimising compiler for a truly high-level language... 05:38:39 ...you end up making a trivial compiler for a low-level language with lots of sugar. 05:39:01 One that doesn't necessarily support every possible optimisation, because the information just isn't there. 05:39:06 That's the real mistake. 05:39:15 You end up with hideous complexity in compilers and optimisers. 05:39:24 And in code. 05:39:33 Yes, though mostly in libraries. 05:39:39 Because you have to hack around all the abstraction leaks. 05:39:43 But still, it's there, and it's compile-time overhead as well. 05:40:08 Templates are probably a lot of the blame in compile-time overhead, though. 05:40:09 this is probably a stupid question 05:40:31 but how do I link a file when compiling with g++? 05:40:31 It's a misfeature that doesn't even come from the misguided design goals. 05:40:48 CakeProphet: g++ foo.o bar.o invokes the linker (ld). 05:41:04 If you want to just make an object file, use g++ -c foo.cpp 05:41:13 But if you want to compile and link, omit -c. 05:41:28 ah okay. 05:41:32 so -c automatically links? 05:41:39 using, uh, magic? 05:41:40 No, -c is "just compile". 05:42:00 g++ file.cpp was giving me undefined reference errors, but g++ -c file.cpp worked fine. 05:42:14 That's because the undefined references were link errors. 05:42:26 right... so how did they get linked with the -c option? 05:42:31 oh, they don't. 05:42:31 They didn't. 05:42:32 .. 05:42:33 heh 05:42:35 You just made an object file. 05:42:38 got it. 05:42:51 AND ANOTHER THING 05:42:57 C++'s fucking build model. 05:43:02 It doesn't have one. 05:43:30 I value the ability to produce native binaries. Really I do. 05:44:03 I like how my professor's lab comes with free errors that I have to solve. 05:44:07 they use strlen without including string 05:44:29 But object files (.o) and libraries thereof (.a) should not be the thing I work with. 05:44:46 I should be able to think at the module level without any of the crufty details. 05:45:00 Like how inclusion is LITERALLY TEXT SUBSTITUTION. 05:46:34 u mad? 05:47:16 so what happens when I try to link two object files with two mains. 05:48:15 also is it possible to compile and link in one command? 05:48:28 Yeah, just g++ file.cpp. 05:48:32 You'll get a.out. 05:49:02 You can say g++ foo.cpp bar.cpp whatever.cpp -o executable to compile and link and make a binary with a particular name. 05:49:21 excellent. 05:49:43 But if you have two main()s, you'll get a "duplicate symbol" error from ld. 05:50:10 To answer that question. 05:51:05 puzzle.cpp:15:46: warning: deprecated conversion from string constant to ‘char*’ 05:51:09 deprecated but not.... wrong right? 05:51:58 Should be const char*. 05:52:30 Because you're not technically supposed to modify string constants. 05:54:33 Oh god Facebook is... DIFFERENT 05:54:48 it is now much easier to stalk people. 05:59:13 evincar: Not merely technically. 05:59:37 I'm pretty sure that'll get you a segfault; constants get stuck in read-only pages. 05:59:42 Yeah, UB is around every corner... 05:59:57 well my code works fine at least. 06:00:02 I wonder if any non-trivial C++ program is fully standards-conformant? 06:00:18 It's really 06:00:19 really 06:00:27 sad that I have to wonder that. 06:00:40 I strongly doubt any non-trivial POSIX C program that's fully standards-conformant. 06:00:51 At a minimum, everyone neglects _POSIX_C_SOURCE 06:02:14 Not to mention names that are secretly (and sometimes ambiguously) reserved by POSIX standards. 06:02:30 Which may or may not bite you in the future. 06:03:25 The main thing that bothers me when I'm working in C is that I want to check every error and handle every potential failure. 06:03:38 And not use fixed-size buffers for everything. 06:03:51 I don't *think* there's anything POSIX uniquely reserves. 06:04:06 In large part because it *has* _POSIX_C_SOURCE. 06:04:54 What does this page mean then? http://pubs.opengroup.org/onlinepubs/007904975/functions/xsh_chap02_02.html 06:05:40 Oh, sure enough, it does reserve names. 06:05:51 Macros definitely have restrictions, but I'm not sure about the wording on types and functions. 06:06:39 Because and reserve str[a-z]+, it's illegal to define a function called strip(). :P 06:07:09 Where illegal = non-POSIX-conformant. 06:07:18 So. 06:07:19 That's documenting an ISO C reservation. 06:07:24 Probably not a huge deal. 06:07:26 Oh. 06:07:28 Well still. 06:07:48 * CakeProphet recently had to explain why Maybe in Haskell was more type-safe than null in other languages. 06:07:50 Just like the stdint.h reservation. 06:08:08 I thought it would be obvious but I guess not to someone who's spent all of their programming years working with languages like C++ and Java. 06:08:57 The reservations are a bit... Extreme, though. 06:13:36 I wonder if I could make the worst programming language ever. 06:13:55 like, a language that is incredibly conceptually muddled. 06:14:06 with parts of it being high-level and others parts being extremely low-level 06:14:15 thus requiring a bunch of boilerplate to do anything. 06:16:07 Take C++. Add Perl. 06:16:42 I was thinking also make all of the primitive constructs Haskell based. 06:16:45 but with C++ semantics 06:16:55 Mmm... Good call. 06:17:20 D: 06:17:33 I look away for five minutes and you guys get these notions. 06:17:58 so you're forced to write functional code in a way that's not convenient at all. 06:18:48 I'm not sure how perl would make it worse because perl is a beautiful language suitiable for all porpoises. 06:18:52 maybe syntax? 06:18:53 CakeProphet: Silly person. NullPointerException is value error, not a type error! 06:19:07 shachaf: well it is a value error in those languages. 06:19:16 I had to explain that it /could/ be a type error. 06:19:17 A value error is a value error, man. 06:20:00 !cpick caramel pumpkin banana peach 06:20:08 >_> 06:20:10 !show cpick 06:20:22 oh right huge netsplit thing. 06:20:35 * shachaf picks copumpkin. 06:20:48 > sdfoksfijwer 06:20:58 `help 06:20:59 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/ 06:21:01 `perl 06:21:06 `perl print 2+2 06:21:07 Can't open perl script "print 2+2": No such file or directory 06:21:12 `perl -e print 2+2 06:21:14 4 06:21:32 No output. 06:22:06 `perl -e "$,=' '; print grep {int(rand(2))} qw(caramel pumpkin banana peach)" 06:22:08 No output. 06:22:12 `perl -e "$,=' '; print grep {int(rand(2))} qw(caramel pumpkin banana peach)" 06:22:13 No output. 06:22:15 .. 06:22:40 `perl -e '$,=" "; print grep {int(rand(2))} qw(caramel pumpkin banana peach)' 06:22:41 No output. 06:22:43 kljxdkfjzkujdfsdf 06:23:06 CakeProphet: Try shachafbot. Just type ",pick option option option" 06:23:29 that's not a real bot. 06:23:43 It's such a real bot, you don't even know how real it is. 06:23:46 Come on, try it. 06:23:51 `perl -e '$,=" "; print (grep {int(rand(2))} qw(caramel pumpkin banana peach))' 06:23:52 No output. 06:23:53 `perl -e 'BEGIN { *CORE::GLOBAL::die = sub { CORE::die "A useless message.\n" } } die "This will not be printed."' 06:23:54 No output. 06:23:58 srkgjsdfjsersfddddsfddddddddddddddddddddddddddddddddddddddddddddddddddd 06:24:21 `run perl -e '$,=" "; print (grep {int(rand(2))} qw(caramel pumpkin banana peach))' 06:24:22 caramel pumpkin banana peach 06:24:26 ...hahaha 06:24:27 ALL FLAVORS 06:24:32 OF SHISHA 06:24:42 `run perl -e '$,=" "; print (grep {int(rand(2))} qw(caramel pumpkin banana peach))' 06:24:43 caramel pumpkin peach 06:24:52 I'm pretty sure peach doesn't go well with anything else. 06:25:22 peach banana 06:25:23 ???? 06:26:25 `perl -e 'BEGIN { *CORE::GLOBAL::exit = sub { my ($code, $message) = @_; print $message; CORE::exit($code); } } exit(0, "Success!");' 06:26:27 No output. 06:26:30 :/ 06:42:53 -!- evincar has quit (Quit: Food and possibly sleep.). 06:45:24 monqy: yeah that's what I'm trying. 06:45:40 though the banana is quite banana-like. 06:48:51 *not quite 06:50:44 -!- nooga has joined. 06:51:36 pikhq_: so in a traditional linked list with sentinel value 06:51:43 what is the value of sentinel->next and sentinel->prev? 06:53:30 null? 07:13:35 er forgot to mention that it's empty. 07:13:39 yeah it's null. nevermind. 07:15:15 -!- monqy has quit (Quit: hello). 07:19:21 -!- augur has joined. 07:28:11 -!- Jafet has joined. 07:42:43 -!- ive has quit (Quit: leaving). 07:49:05 -!- Wamanuz2 has joined. 07:49:05 -!- lambdabot has joined. 07:49:05 -!- twice11 has joined. 07:51:01 -!- kmc has joined. 07:51:01 -!- hagb4rd has joined. 07:51:01 -!- sebbu2 has joined. 07:51:01 -!- MSleep has joined. 07:51:01 -!- Nisstyre has joined. 07:51:01 -!- DH____ has joined. 07:51:01 -!- lifthrasiir has joined. 07:51:01 -!- Gregor has joined. 07:51:12 -!- Deewiant_ has joined. 07:51:12 -!- coppro has joined. 07:51:12 -!- EgoBot has joined. 07:51:12 -!- quintopia has joined. 07:51:29 -!- Zuu has joined. 07:51:29 -!- fungot has joined. 07:51:29 -!- qnix has joined. 07:51:52 -!- fizzie has joined. 07:51:52 -!- Patashu has joined. 07:51:52 -!- BeholdMyGlory has joined. 07:51:52 -!- atehwa_ has joined. 07:51:52 -!- chickenzilla has joined. 07:53:59 -!- cheater2 has joined. 07:53:59 -!- aloril has joined. 07:53:59 -!- yiyus has joined. 07:54:00 hooray1 07:54:07 to you guys it looks like a few people rejoined 07:54:10 to me everyone's flooding back in 07:55:00 wow.. 07:55:04 that was a long ass netsplit. 07:55:13 now I can finally do this: 07:55:22 > listArray (0, maxBound-1 :: Int) [1..] 07:55:23 Terminated 07:55:27 aw. 07:59:37 lol what 07:59:39 that's a new one 08:00:22 it might be special cased, unless it can track memory allocation and terminate after a certain point. 08:04:29 funny how it prints "Terminated" when the code *doesn't* terminate 08:04:40 yes that is quite funny 08:04:41 :O) 08:04:50 how dare this computer program not be an ideal turing machine 08:08:42 fungot: sadsdf[pwek 08:08:43 CakeProphet: i wished that the weather had spared them this choking and venomous fnord of peculiar fumes. mr. machen's narrative, a triumph of carving. when the colony house fire, and bought an impressive wreath, though the ell was more recent. not even the nether slopes of saturn might boast. verses and 08:08:48 I'm so glad all of these bots are back. 08:09:42 fungot: Terminated 08:09:43 olsner: ' matt eliot his fust mate, talked a lot too, only he was again' folks's doin' any heathen things. told abaout an island east of fnord whar they was a fnord and fnord hoarsely at something which amused him. then, 08:16:23 Maybe a setrlimit-style memory limit which terminates the process? 08:17:50 so [1..] isn't an infinite list, it only has 2^32 or 2^64 entries in it? 08:17:52 or does haskell use bigints? 08:18:29 > array (1, 2^36) [(2^36, "it's lonely back here")] 08:18:30 mueval-core: out of memory (requested 550293733376 bytes) 08:18:37 loll 08:18:50 > array (1, 2^72) [(2^72, "it's lonely back here")] 08:18:51 array *Exception: Error in array index; -1 not in range [0..0) 08:18:54 lol 08:19:05 > array (1, 2^64) [(2^64, "it's lonely back here")] 08:19:06 array *Exception: Error in array index; -1 not in range [0..0) 08:19:12 > array (1, 2^63-1) [(2^63-1, "it's lonely back here")] 08:19:13 Terminated 08:19:16 ! 08:19:33 > array (1, 2^50) [(2^50, "it's lonely back here")] 08:19:34 mueval-core: out of memory (requested 8796094070784 bytes) 08:19:34 The way it dies seems a bit arbitrary sometimes. 08:19:40 > array (1, 2^55) [(2^55, "it's lonely back here")] 08:19:41 Terminated 08:19:47 > array (1, 2^52) [(2^52, "it's lonely back here")] 08:19:48 Terminated 08:19:55 > array (1, 2^51) [(2^51, "it's lonely back here")] 08:19:56 Terminated 08:20:08 > array (1, 1.5*2^50) [(1.5*2^50, "it's lonely back here")] 08:20:09 Ambiguous type variable `t' in the constraints: 08:20:09 `GHC.Real.Fractional t' 08:20:09 ... 08:20:12 oh 08:21:07 -!- Vorpal has joined. 08:21:07 so somewhere between 2^50 and 2^51 08:23:14 The number of bytes it reports seems a bit arbitrary too. 08:23:16 > let t = 2000000000000000 in array (1, t) [(t, "it's lonely back here")] 08:23:16 mueval-core: out of memory (requested 6735699902464 bytes) 08:23:16 > let t = 2100000000000000 in array (1, t) [(t, "it's lonely back here")] 08:23:16 mueval-core: out of memory (requested 15868577710080 bytes) 08:23:16 > let t = 2200000000000000 in array (1, t) [(t, "it's lonely back here")] 08:23:17 mueval-core: out of memory (requested 7409270521856 bytes) 08:25:22 15868577710080 is 2^43.85etc 08:25:30 I mean: 08:25:32 > let t = 2^51 in array (1, t) [(t, "it's lonely back here")] 08:25:32 Terminated 08:25:32 > let t = 2^51+2^49 in array (1, t) [(t, "it's lonely back here")] 08:25:32 mueval-core: out of memory (requested 4398047559680 bytes) 08:25:53 huh 08:25:54 that's bizzare 08:25:59 thought it would stop after a certain number 08:30:47 -!- nooga has quit (Ping timeout: 258 seconds). 08:32:08 Huh. 08:32:22 > let t = 2^51+2^49 in array (1, t) [(t, "it's lonely back here")] 08:32:31 > let t = 2^51 in array (1, t) [(t, "it's lonely back here")] 08:32:35 mueval-core: Time limit exceeded 08:32:35 mueval-core: Time limit exceeded 08:32:39 lol 08:32:43 why is it different this time 08:32:55 Depends on the load. 08:32:59 ah 08:34:22 Anyway, there's some sort of a wraparound issue there. 08:34:46 > let t = 2196875771904 in array (1, t) [(t, "it's lonely back here")] 08:34:46 mueval-core: out of memory (requested 17592170315776 bytes) 08:34:48 > let t = 2197375771904 in array (1, t) [(t, "it's lonely back here")] 08:34:48 mueval-core: out of memory (requested 3987734528 bytes) 08:35:04 Some of the numbers in-between took very long time and got the "thread killed" message. 08:35:26 It seems to happen around where the "requested N bytes" goes a bit over N = 2^44. 08:38:01 hmm, my cpu has 48 bits virtual address space (and I assume that's "standard" for 64-bit cpus), so 2^44 should be too small 08:38:43 Half of that goes to the kernel. 08:38:47 but maybe the virtual address space is just fragmented 08:39:02 right, but that should still leave 47 bits of userspace 08:39:05 Anyway, even if it doesn't fit in the address space, it's not supposed to wrap around like that. 08:41:44 > 6^(12::Int) 08:41:45 2176782336 08:43:27 > let t = 2196877864960 in array (1, t) [(t, "it's lonely back here")] 08:43:29 mueval-core: out of memory (requested 17592186044416 bytes) 08:43:33 > let t = 2196877864961 in array (1, t) [(t, "it's lonely back here")] 08:43:34 Terminated 08:43:42 (Found with a manual binary search.) 08:44:27 mueval tries to set that (6^(12::Int)) as its total memory limit, apparently... I wonder what unit that is 08:46:49 It's the largest (integer) power of 6 that's less than 2^32, but I guess it could be something totally arbitrary. 08:48:08 afaict the number gets used to set RLIMIT_AS, which is in bytes 08:48:44 If it's done with System.Posix.Resource, that sounds like the most likely thing. 08:49:13 it is, http://code.haskell.org/mubot/mueval/Mueval/Resources.hs 08:51:58 Funny bit of trivia: OS X doesn't have a RLIMIT_AS at all. 08:52:48 in other words, don't run lambdabot on OS X? :) 08:55:17 Resource.hsc: 08:55:18 #ifdef RLIMIT_AS 08:55:18 packResource ResourceTotalMemory = (#const RLIMIT_AS) 08:55:18 #endif 08:55:28 I see they have an #ifdef for systems that lack it. 08:55:44 Though I can't recall if OS X headers provide the #define and just ignore it, or if they completely lack it. 09:03:48 -!- Vorpal has quit (Quit: ZNC - http://znc.sourceforge.net). 09:04:47 how would one go about learning all of these details? 09:32:34 http://en.wikipedia.org/wiki/Bugatti_Veyron 09:32:35 mmm 09:34:42 That seems to be some sort of a car device. 09:35:57 yes it's the fastest street-legal car in the world. 09:37:04 It does not look like you could fit a large amount of luggage into it. Is there even place for the cat? 09:37:19 I'm sure you could fit one person and a cat in there. 09:37:39 it's a mid-engine car so there's not a lot of passenger space. 09:38:15 -!- Vorpal has joined. 09:39:17 the engine is essentially two V8's fused together. it's a pretty amazing feat of engineering. 09:39:36 there are 10 radiators. 09:40:04 most cars have one of those. 09:40:15 Yes, but I'm not often in *that* much of a hurry to get the cat anywhere. I think I'll skip. 09:40:29 it's also obscenely expensive. 09:40:43 It uses special Michelin PAX run-flat tyres, designed specifically to accommodate the Veyron's top speed, which reportedly cost €25,000 per set. 09:41:15 I believe the car itself is sold for 1.7 million. Though I believe they stopped selling them. 09:41:40 CakeProphet: what is this weird car you are talking about? 09:41:44 With that sort of price, does it even come with a Befunge interpreter or something? 09:41:50 http://en.wikipedia.org/wiki/Bugatti_Veyron 09:42:07 fizzie: no but it moves really fast. 09:42:25 CakeProphet: That would perhaps be nice if there weren't all the other people in the way. 09:42:37 Buy your own road and drive it there 09:42:50 Live on the Isle of Man 09:42:55 May noted that at top speed the engine consumes 45,000 litres (9,900 imp gal) of air per minute (as much as a human breathes in four days). 09:43:17 On the Isle of Man, where all men are real men, and all cars are like that. 09:43:42 as far as I can tell it's basically the best car ever made. 09:44:22 For some values of best, certainly. 09:45:01 top speed, acceleration, handling, stability, quality of engineering. 09:45:16 but not passenger capacity or trunk space, no. 09:45:31 Or practicality. (What do you *do* with that top speed and acceleration?) 09:45:41 go places really fast of course. 09:45:43 I'll get excited when they make the flying model; at least that'd make me feel like it's the future. 09:46:05 Clarkson test drove the Veyron from Alba, northern Italy to London in a race against James May and Richard Hammond who made the journey in a Cessna 182 aeroplane. 09:46:14 why doesn't it say who won. :P 09:46:31 Because Cessna is awesome 09:46:34 They had that car-train-motorcycle race, I remember seeing that thing. 09:46:50 The only thing of that show I've seen, probably. 09:46:52 motorcycles are generally faster than cars. 09:47:14 a high-end motorcycle easily travels faster than the Bugatti Veyron. 09:47:17 The acceleration is to produce frame-dragging that increases the apparent size of the owner's small penis 09:47:20 Everything seems to be capable of the speed limit speeds, anyway. 09:47:35 as far as I can tell it's basically the best car ever made. <-- not at all. It is useless when moving to a new house, you can't fit a lot in that car 09:47:35 ....speed limits? 09:47:45 I've heard there's such a thing. 09:47:53 do people actually pay attention to those? 09:47:59 Around here, certainly. 09:48:02 of course 09:48:04 You get ticketed if not. 09:48:07 ....weird. 09:48:08 indeed 09:48:19 CakeProphet: which country do you live in then? 09:48:23 * CakeProphet routinely drives to Atlanta at about 90 mph. 09:48:24 US. 09:48:32 I see 09:48:37 speed limit on those roads ranges from 55 mph to 75 mph 09:48:45 most people are going about 80. 09:49:06 I mean, sure, "people" in general drive at k*l, where l is the speed limit and k is something from 1 to 1.2, but still. 09:49:08 when traffic permits. 09:49:37 CakeProphet: anyway, a sports car is kind of useless for most purposes. I very much doubt that car you mentioned have a towbar... 09:49:39 in palces where I know cops are never present I usually go about 105 09:49:56 has a* 09:50:06 Vorpal: no, though it is all wheel drive and has retarded horse power / torque so it could probably tow something. 09:50:39 CakeProphet: and you can't really fit a lot of stuff in the car. 09:50:51 the final production Veyron engine produces 1,001 metric horsepower (736 kW; 987 bhp) of motive power, and generates 1,250 newton metres (922 ft·lbf) of torque.[1][14] The nominal figure has been stated by Bugatti officials to be conservative, with the real total being 1,020 metric horsepower (750 kW; 1,006 bhp) or more. 09:50:53 -!- sebbu2 has changed nick to sebbu. 09:50:58 Highway speed limits don't go higher than 120 km/h (75 mph) here, and even if you add a generous 1.2 multiplier, that's 144 km/h (90 mph), so at most you need to be able to drive that fast. A top speed of 400 km/h (250 mph) sounds a bit... excessive. 09:51:03 Vorpal: yes you've driven that point home. 09:51:08 CakeProphet: even two parents + two children + packing for 4 days vacation would not fit 09:51:20 CakeProphet: so what actual use is a car like that? 09:51:30 to take one or two people a large distance very quickly. 09:51:46 120 km/h is the maximum existing speed limit around here anyway. 09:52:21 also, to escape police, to have fun, to escape a large section of the world before a meteor crashes into it. 09:52:28 other things. 09:52:33 I really believe the point is more about what other people think of the car's owner. 09:52:45 CakeProphet: the police would still note down the registration number... 09:52:50 so it wouldn't really help 09:53:05 no I actually think the point is to be an amazing work of engineering. 09:53:21 not everyone is vain like that. 09:53:23 Well, that's the point for the people who made it. 09:53:30 Maybe. 09:53:37 fizzie: you mean, that the owner has no sense and doesn't care much for actual use of the product nor the environment. 09:53:55 Vorpal: That's just one opinion; other people might thing "whoa, nice car". 09:54:13 It looks rather car chasey from the photos. 09:54:15 * CakeProphet takes note: #esoteric does not appreciate a good car. 09:54:30 I could imagine a Surname, Firstname Surname driving a car like that. 09:54:46 CakeProphet: Conclusion made with a sample size of N=2? 09:54:59 also speaking of evading police, my friend who drives a motorcycle can pretty much always outrun the police before they have time to get his license plate. 09:55:28 CakeProphet: I certainly do. A Volvo station wagon with hybrid electrical/bio-fuel engine is a good car IMO. 09:55:32 most cops don't even bother with motorcycles. 09:56:03 With the sort of scaled-by-your-wages fines (and I believe license-suspension reasonably easily) you get here, I wouldn't think "pretty much always" would be quite good enough. 09:56:42 fizzie: same system in Sweden 09:56:56 you Europeans and your apparently strict traffic laws. 09:58:03 CakeProphet: much less accidents over here than in US 09:58:22 changing the speed limit does not correlate to more accidents. 09:58:27 or less. 09:58:36 http://en.wikipedia.org/wiki/Top_Gear_Race_to_the_North <- this was the thing I saw. 09:58:42 CakeProphet: [citation needed] 09:58:49 because as far as I know it does 09:59:14 a lower speed means that the car travels less distance during your reaction time if a wild animal runs onto the road for example. 09:59:20 and braking distance is also reduced 09:59:58 Vorpal: http://en.wikipedia.org/wiki/Autobahn 10:00:00 Didn't we do the whole car accident discussion/comparison already not long ago? 10:00:06 for highways this is less important. 10:00:09 You would expect a country like Sweden, with bad winters and so on to have more accidents per capita than a US state like California, but no. Not the case. 10:00:26 Per distance traveled is the more sensible metric, anyway. 10:00:29 fizzie: indeed, with pikhq iirc, who is sensible 10:00:39 fizzie: even then iirc Sweden is better of than US. 10:00:39 And I can't get W|A to report it, even though I think it did before. 10:00:48 Moreover, international accident statistics demonstrate that limited access grade separated roads such as Autobahns and motorways have much greater road traffic safety regardless of speed limit, suggesting that high speed alone isn't a deciding factor. 10:00:53 maybe American cars are just not safe. 10:01:08 also we have really bad traffic. 10:01:56 CakeProphet: what about the reaction time/braking distance issue I mentioned above. 10:02:00 are you saying it is false? 10:02:11 no. 10:02:40 but to what extent this curbs avoiding an accident is questionable. In many cases you don't have control of your car anyways. 10:02:44 CakeProphet: then on a given road a lower speed limit means fewer accidents, and more importantly: fewer accidents with deadly outcome. 10:03:13 I would like to continue this discussion, but I need to leave for university now 10:03:14 cya 10:03:49 The Synthesis of Safety Research Related to Speed and Speed Limits report sponsored by the Federal Highway Administration published in 1998 found that changing speed limits on low and moderate speed roads appeared to have no significant effect on traffic speed or the number of crashes, whilst on high-speed roads such as freeways, increased speed limits generally resulted in higher traffic speeds and more crashes. It is a 10:04:02 Ah, I found the right W|A query formulation. "Sweden road accidents causing death / total road traffic" => 0.5902 deaths per hundred million vehicle kilometres; US 0.891. 10:04:09 We'd curb accidents by removing the pesky humans from the dashboard 10:05:57 Google's doing that right now. 10:06:13 They already had that one crash which they were all "it's the human's fault again". 10:06:24 Possibly a coverup by the Google AI overlords. 10:08:06 suddenly 4 gigs of RAM is no longer enough to not worry about. 10:09:30 Yes, and getting 4G sticks of DDR2 to a motherboard with only two stupid slots is annoyingly expensive. Last I looked, it was more than twice the price of an equivalent amount (and stick-count) of faster DDR3 RAM. 10:10:48 you pay for the historical value 10:12:20 uh... why is there a cat process sleeping my computer. 10:12:22 NO SLEEPING CATS. 10:14:01 It's better to let sleeping cats lie. 10:14:17 Better than zombie cats. 10:14:47 uninterruptible cats are the worst. 10:35:23 -!- nooga has joined. 10:59:05 > showIntAtBase 2 intToDigit (foldl1 (+) [1..100]) "" 10:59:07 "1001110111010" 10:59:14 > showIntAtBase 3 intToDigit (foldl1 (+) [1..100]) "" 10:59:16 "20221001" 10:59:31 > map (\x -> showIntAtBase x intToDigit (foldl1 (+) [1..100]) "") [1..] 10:59:32 ["*Exception: Numeric.showIntAtBase: applied to unsupported base 1 10:59:35 > map (\x -> showIntAtBase x intToDigit (foldl1 (+) [1..100]) "") [2..] 10:59:36 ["1001110111010","20221001","1032322","130200","35214","20503","11672","683... 10:59:55 > map (\x -> showIntAtBase x intToDigit (foldl1 (+) [1..100]) "") evens 10:59:56 Not in scope: `evens' 11:00:04 > map (\x -> showIntAtBase x intToDigit (foldl1 (+) [1..100]) "") $ filter even [1..] 11:00:05 ["1001110111010","1032322","35214","11672","5050","2b0a","1baa","13ba","faa... 11:04:01 Sadly intToDigit only goes up to 15. :/ 11:04:25 @let showAtBase b n=(\(i,f)->(show=<let(i,r)=let d=floor(x/b)in(d,x-b*fromIntegral d)in Just(i,r*b)) n 11:04:26 Defined. 11:04:38 > showAtBase (exp 1) pi 11:04:40 "10.10100202000211112002010112000101020200211201001201121000112101000020021... 11:04:51 > take 30 $ showAtBase (exp 1) (pi :: CReal) 11:04:55 mueval-core: Time limit exceeded 11:04:58 > take 25 $ showAtBase (exp 1) (pi :: CReal) 11:05:02 mueval-core: Time limit exceeded 11:05:07 > take 20 $ showAtBase (exp 1) (pi :: CReal) 11:05:10 "10.10100202000211112" 11:11:07 > exp 1 11:11:09 2.718281828459045 11:11:32 > take 20 $ showAtBase (pi) (pi :: CReal) 11:11:35 "10.00000000000000000" 11:11:38 coooool 11:11:39 :D 11:11:54 apparently slow though XD 11:12:48 CReal is O(shit) 11:13:07 XD 11:13:08 > showAtBase pi pi 11:13:10 "10.00000000000000000000000000000000000000000000000000000000000000000000000... 11:13:20 > showAtBase 10 pi 11:13:22 "3.141592653589793115997963468544185161590576171875000000000000000000000000... 11:13:33 pi should be defined as an infinite list 11:13:39 when more precision is demanded it calculates it 11:14:03 > pi :: CReal 11:14:05 3.1415926535897932384626433832795028841972 11:14:54 -!- copumpkin has quit (Ping timeout: 252 seconds). 11:15:32 -!- copumpkin has joined. 11:16:11 -!- DH____ has quit (Read error: Connection reset by peer). 11:57:39 -!- MSleep has changed nick to MDude. 12:05:00 -!- oerjan has joined. 12:20:54 Patashu: you could do this yourself you know. 12:23:33 :t arccot 12:23:34 Not in scope: `arccot' 12:23:38 :t arctan 12:23:39 Not in scope: `arctan' 12:23:54 :t acot 12:23:55 Not in scope: `acot' 12:23:58 :t atan 12:23:59 forall a. (Floating a) => a -> a 12:29:50 > let acot x = (pi/2) - arctan x; pid digits = let unity = 10 ^ (digits+10); pi' = 4 * (4* arccot 5 unity - arccot 239 unity) in pi' `div` (10^10) in pid 1000 12:29:51 Not in scope: `arctan'Not in scope: `arccot'Not in scope: `arccot' 12:30:03 > let arccot x = (pi/2) - atan x; pid digits = let unity = 10 ^ (digits+10); pi' = 4 * (4* arccot 5 unity - arccot 239 unity) in pi' `div` (10^10) in pid 1000 12:30:04 Ambiguous type variable `a' in the constraints: 12:30:04 `GHC.Real.Integral a' 12:30:04 ... 12:32:03 yay iwc isn't ending (i think. that was a particularly obscure final annotation line.) 12:32:08 *! 12:32:29 oh their acot takes two arguments 12:32:31 Patashu: http://en.literateprograms.org/Pi_with_Machin's_formula_(Haskell) 12:33:13 @src Floating 12:33:14 class (Fractional a) => Floating a where 12:33:14 pi :: a 12:33:14 exp, log, sqrt, sin, cos, tan :: a -> a 12:33:14 asin, acos, atan, sinh, cosh, tanh, asinh, acosh, atanh :: a -> a 12:33:15 (**), logBase :: a -> a -> a 12:33:41 needs moar acot 12:33:59 it's just asin.recip, anyway 12:34:13 er 12:34:14 don't care. 12:34:19 NEVER A FUNCTION TOO TRIVIAL. 12:34:24 *atan.recip 12:34:31 is it? 12:34:43 well tan x = 1/cot x 12:34:48 according to wikipedia is pi/2 - atan x 12:34:53 is that the same thing? 12:35:08 CReal's pi is defined in terms of atan; "pi = 16 * atan (fromRational (1 % 5)) - 4 * atan (fromRational (1 % 239))" 12:35:26 should be 12:36:03 because tan x = 1 / tan (pi/2 - x) 12:36:06 arctan(1/x) = arccot x 12:36:24 so yeah 12:38:05 our norwegian trigonometry and calculus classes never bothered with any of that co-stuff 12:38:11 afair 12:38:32 The domains may differ; Wikipedia's "usually defined as" lists gives -pi/2 < y < pi/2 for y = atan(x), and 0 < y < pi for y = acot(x). 12:39:10 And our Finnish trigonometry does not really speak of cosecants, secants and cotangents either. 12:39:18 shame 12:39:26 well, that's just because each grows asymptotic at the boundary 12:39:26 AMERICAN TRIGONOMETRY IS SUPERIOR HAHAHAHAHA 12:39:44 oh wait we have cosine of course, but not secant 12:40:05 puny scandinavians. 12:40:08 "The acronyms "SOHCAHTOA" and "OHSAHCOAT" are commonly used mnemonics for these ratios." Not here they aren't! 12:40:13 Reduce[ArcTan[x] == ArcCot[1/x], x] 12:40:20 your feeble peninsula will be analyzed with the might of our extra trigonometric functions. 12:40:21 = True 12:40:40 I'm not sure if there's a Finnish mnemonic. 12:41:21 I think I saw a "soh-cah-toa" reference in some webcomic or other. 12:41:39 I bet it was xkcd. 12:41:41 i've seen it mentioned 12:42:47 The "opposite" and "adjacent" in Finnish both start with 'v' ("vastakkainen/vastainen", "viereinen") so we're even mnemonically oppressed by the language. 12:43:08 uh... 12:43:13 "SVHKVHTVV" would not be very helpful. 12:43:16 why is office libre really really inconsistent about everything. 12:43:47 *libreoffice apparently 12:44:25 I select "heading 2" for one heading and it does bold and italics, I do the same for a different heading and it formats it differently 12:45:11 Does your superior American trigonometry also cover versine, vercosine, coversine, haversine, exsecant and such? 12:45:18 uh, no. 12:46:22 http://upload.wikimedia.org/wikipedia/commons/9/9d/Circle-trig6.svg so pretty. 12:47:27 hacoversine, 12:47:27 Haven't had any "style inconsistency" issues in OpenOffice (back when it was called that); though it sometimes is necessary to select all + clear formatting, if the document has originally non-style-based modifications here and there. 12:48:06 "The hacoversed cosine, also called hacovercosine or cohavercosine and written hacovercosin(\theta)" 12:48:27 "now you are just making things up." 12:56:28 -!- oerjan has quit (Quit: leaving). 12:57:51 > let pfx = ["ha", "co", "ver"]; f = (++ "sine") . concat; r = randoms $ mkStdGen 6667 in f . take (head r `mod` 20) $ (pfx !!) . (`mod` length pfx) <$> tail r 12:57:52 "cohacovercohahahahasine" 12:58:07 "hahahahasine", the funniest trigonometric function there is. 12:58:39 (Also I don't know how to get real random numbers out of lambdabot.) 12:58:59 > ((++"sine").(`replicateM` ["ha","co","ver"])) =<< [0..] 12:59:00 Couldn't match expected type `GHC.Types.Char' 12:59:00 against inferred type... 12:59:11 > ((++"sine").join.(`replicateM` ["ha","co","ver"])) =<< [0..] 12:59:12 Couldn't match expected type `GHC.Types.Char' 12:59:13 against inferred type... 12:59:14 jsdkfjsadhfiushef 13:00:02 > map ((++"sine").join) $ ((`replicateM` ["ha","co","ver"])) =<< [0..] 13:00:04 ["sine","hasine","cosine","versine","hahasine","hacosine","haversine","coha... 13:00:19 > map ((++"sine").join) $ ((`replicateM` ["ha","co","ver"])) =<< [5..] 13:00:21 ["hahahahahasine","hahahahacosine","hahahahaversine","hahahacohasine","haha... 13:00:34 > map ((++"sine").join) $ ((`replicateM` ["ha","co","ver"])) =<< [3..] 13:00:36 ["hahahasine","hahacosine","hahaversine","hacohasine","hacocosine","hacover... 13:00:57 hacocoversine 13:01:04 is in there somewhere 13:02:23 > elemIndex "hacocoversine" . map ((++"sine").join) $ ((`replicateM` ["ha","co","ver"])) =<< [0..] 13:02:25 Just 54 13:02:28 Indeed it is. 13:10:56 :t count 13:10:57 Not in scope: `count' 13:13:38 > filter (\x -> (==) `on` length (elemIndices '[' x) (elemIndices ']' x)) $ (`replicateM` "+-[].,") =<< [0..] 13:13:39 Couldn't match expected type `[GHC.Types.Int] -> a -> b' 13:13:39 against in... 13:13:58 > filter (\x -> ((==) `on` length) (elemIndices '[' x) (elemIndices ']' x)) $ (`replicateM` "+-[].,") =<< [0..] 13:13:59 ["","+","-",".",",","++","+-","+.","+,","-+","--","-.","-,","[]","][",".+",... 13:14:06 The good old ][. 13:14:14 Good program. Best friend. 13:14:21 best bf 13:14:50 -!- copumpkin has quit (Ping timeout: 258 seconds). 13:15:16 -!- copumpkin has joined. 13:16:27 > [] < [1,2,3] 13:16:28 True 13:16:32 > [0] < [1,2,3] 13:16:33 True 13:16:37 > [0] < [0,1,2,3] 13:16:39 True 13:17:12 > filter (\x -> let count = (`elemIndices` x); ls = count '['; rs = count ']' in ls < rs && ((==) `on` length) numl numr) $ (`replicateM` "+-[].,") =<< [0..] 13:17:13 Not in scope: `numl'Not in scope: `numr' 13:17:21 > filter (\x -> let count = (`elemIndices` x); ls = count '['; rs = count ']' in ls < rs && ((==) `on` length) ls ra) $ (`replicateM` "+-[].,") =<< [0..] 13:17:22 Not in scope: `ra' 13:17:25 > filter (\x -> let count = (`elemIndices` x); ls = count '['; rs = count ']' in ls < rs && ((==) `on` length) ls rs) $ (`replicateM` "+-[].,") =<< [0..] 13:17:26 ["[]","+[]","-[]","[+]","[-]","[]+","[]-","[].","[],","[.]","[,]",".[]",",[... 13:17:29 .. 13:18:31 > let v d [] = d == 0; v d ('[':xs) = v (d+1) xs; v d (']':xs) = d > 0 && v (d-1) xs; v d (_:xs) = v d xs in drop 10000 . filter (v 0) $ (`replicateM` "+-[].,") =<< [0..] 13:18:33 [",.-.,+",",.-.,-",",.-.,.",",.-.,,",",.-,++",",.-,+-",",.-,+.",",.-,+,",",... 13:18:33 The manual way. 13:19:04 > filter (\x -> let count = (`elemIndices` x); ls = count '['; rs = count ']' in ls <= rs && ((==) `on` length) ls rs) $ (`replicateM` "+-[].,") =<< [0..] 13:19:05 ["","+","-",".",",","++","+-","+.","+,","-+","--","-.","-,","[]",".+",".-",... 13:19:18 most awesome way. 13:19:40 > filter (\x -> let count = (`elemIndices` x); ls = count '['; rs = count ']' in ls <= rs && ((==) `on` length) ls rs) $ (`replicateM` "+-[].,") =<< [4..] 13:19:41 ["++++","+++-","+++.","+++,","++-+","++--","++-.","++-,","++[]","++.+","++.... 13:19:52 > filter (\x -> let count = (`elemIndices` x); ls = count '['; rs = count ']' in ls <= rs && ((==) `on` length) ls rs) $ (`replicateM` "+-[].,") =<< [20..] 13:19:54 ["++++++++++++++++++++","+++++++++++++++++++-","+++++++++++++++++++.","++++... 13:20:12 man there sure are a lot of brainfuck programs. 13:22:22 > elemIndex "[[]]][" . filter (\x -> let count = (`elemIndices` x); ls = count '['; rs = count ']' in ls <= rs && ((==) `on` length) ls rs) $ (`replicateM` "+-[].,") =<< [0..] 13:22:24 Just 6284 13:22:31 > [2,6] < [3,5] 13:22:32 True 13:22:38 oh... 13:22:39 Slightly lessens the awesome. 13:22:54 how does that work. 13:23:15 Well, 2 < 3. 13:23:35 ah 13:24:38 > all (uncurry (<)) $ zip [2,6] [3,5] 13:24:39 False 13:24:43 beat me to it. 13:24:55 Maybe if you test something like that. (Disclaimer: haven't thought it through.) 13:25:23 > filter (\x -> let count = (`elemIndices` x); ls = count '['; rs = count ']' in all (uncurry (<)) (zip ls rs) && ((==) `on` length) ls rs) $ (`replicateM` "+-[].,") =<< [0..] 13:25:23 ["","+","-",".",",","++","+-","+.","+,","-+","--","-.","-,","[]",".+",".-",... 13:25:24 > all $ zipWith (<) [2,6] [3,5] 13:25:25 Couldn't match expected type `a -> GHC.Bool.Bool' 13:25:25 against inferred ... 13:25:31 I have. 13:25:54 you want and 13:25:57 for that. 13:26:00 Right. 13:26:33 > filter (\x -> let count = (`elemIndices` x); ls = count '['; rs = count ']' in and (zipWith (<) ls rs) && ((==) `on` length) ls rs) $ (`replicateM` "+-[].,") =<< [0..] 13:26:34 ["","+","-",".",",","++","+-","+.","+,","-+","--","-.","-,","[]",".+",".-",... 13:26:52 can you think of a situation where that fails? 13:28:08 I think it's correct. 13:33:19 @hoogle on 13:33:20 Data.Function on :: (b -> b -> c) -> (a -> b) -> a -> a -> c 13:33:20 Text.PrettyPrint.HughesPJ OneLineMode :: Mode 13:33:20 Text.Parsec.Char oneOf :: Stream s m Char => [Char] -> ParsecT s u m Char 13:36:12 > let progs = (`replicateM` "+-[].,") =<< [0..]; cake = filter (\x -> let count = (`elemIndices` x); ls = count '['; rs = count ']' in and (zipWith (<) ls rs) && ((==) `on` length) ls rs) progs; v d [] = d == 0; v d ('[':xs) = v (d+1) xs; v d (']':xs) = d > 0 && v (d-1) xs; v d (_:xs) = v d xs in elemIndex False $ zipWith (==) (filter (v 0) progs) cake 13:36:16 mueval-core: Time limit exceeded 13:36:20 They seem to agree. 13:38:01 http://hpaste.org/51618 13:38:04 bam 13:38:05 -!- hagb4rd has quit (Ping timeout: 260 seconds). 13:38:08 now prettified. 13:43:01 -!- Phantom_Hoover has joined. 13:43:15 -!- Patashu has quit (Quit: MSN: Patashu@hotmail.com , Gmail: Patashu0@gmail.com , AIM: Patashu0 , YIM: patashu2 .). 13:43:16 am I a bad person for using (`f` x) instead of flip f x? 13:45:15 @pl \ls rs -> and (zipWith (<) ls rs) && ((==) `on` length) ls rs 13:45:16 ap (ap . (((&&) . and) .) . zipWith (<)) ((==) `on` length) 13:46:19 @pl \x -> and (zipWith (<) (elemIndices '[' x) (elemIndices ']' x)) && ((==) `on` length) (elemIndices '[' x) (elemIndices ']' x) 13:46:20 ap ((&&) . and . ap (zipWith (<) . elemIndices '[') (elemIndices ']')) (ap (((==) `on` length) . elemIndices '[') (elemIndices ']')) 13:46:32 beautiful. 13:49:25 what are you doing? 13:53:48 http://www.reddit.com/r/math/comments/kmhjj/mind_blown_in_linear_algebra_class_today_when_the/ 13:54:00 Help this person really annoys me and I feel bad for it. 13:56:17 You are a bad person for being annoyed when other people are happy and excited. 13:57:15 Ut-oh, how do I cancel a topic edit in XChat? 13:57:23 I accidentally all over the topic textbox. 13:57:32 Why is that even a textbox in the first place? 13:57:46 (This is from another client.) 13:58:44 Hrm, restoring it to the original form and then clicking away at least didn't change the topic. But maybe it needs a CR anyway to happen. Who knows. 14:00:27 -!- Madoka-Kaname has quit (Ping timeout: 258 seconds). 14:01:42 fizzie: Only hitting enter will change the topic. If you type /topic in the normal input box, it'll refetch the original topic. 14:01:52 -!- boily has joined. 14:02:15 Good. I was *so scared*. 14:21:02 ... lolwut 14:26:05 -!- copumpkin has quit (Quit: Computer has gone to sleep.). 14:27:07 -!- FireFly has joined. 14:54:12 -!- copumpkin has joined. 15:16:04 -!- Deewiant_ has quit (Ping timeout: 252 seconds). 15:16:51 -!- Deewiant has joined. 15:40:59 -!- Guest63383 has joined. 15:41:00 -!- Guest63383 has quit (Excess Flood). 15:44:58 -!- variable- has joined. 16:02:12 -!- pumpkin has joined. 16:03:55 -!- copumpkin has quit (Ping timeout: 260 seconds). 16:31:18 -!- augur has quit (Remote host closed the connection). 16:48:56 -!- CakeProphet has quit (Ping timeout: 252 seconds). 16:50:30 -!- pumpkin has changed nick to copumpkin. 16:52:53 -!- augur has joined. 16:57:50 -!- ais523 has joined. 17:05:30 -!- elliott has joined. 17:05:47 helo 17:05:59 ehlo 17:07:22 -!- elliott has quit (Read error: Connection reset by peer). 17:07:24 -!- elliott_ has joined. 17:17:14 hm reading the last iwc annotation, it seems it is going to continue? 17:17:45 not sure 17:25:12 -!- azaq23 has joined. 17:28:28 hmph, no respond to my issue after, like, A WHOLE DAY :p 17:28:34 s/:p/:P/ 17:28:38 elliott_: what issue? 17:30:21 bbl 17:30:59 Vorpal: https://github.com/phonohawk/HsOpenSSL/issues/3 17:41:25 back 17:42:07 elliott_: template haskell uses bytecode interpreter? huh. Well, I guess it makes sense. 17:42:25 elliott_: what are you using openssl bindings for? 17:42:28 Vorpal: Consider cross-compiling 17:42:47 elliott_: true 17:42:50 And because iterIO depends on them; it'd be nice if that kind of auxiliary stuff was split up from the package but it isn't 17:43:11 elliott_: and why are you using iterIO? 17:43:21 Iteratee-based IO is an alternative to lazy IO that offers better error handling, referential transparency, and convenient composition of protocol layers or parsers. This package provides iteratees based around pipe operators for hooking together application components and directing data flow. New users should see the tutorial in the Data.IterIO module documentation. Highlights of the library include: 17:43:21 Heavy emphasis on ease of use, ease of learning, and uniformity of mechanism. 17:43:21 Copious documentation. 17:43:21 Consistent EOF and error handling to avoid resource leaks and other issues in corner cases. 17:43:23 A set of iteratee parsing combinators providing LL(*) parsing while generally not consuming large amounts of memory for backtracking. 17:43:26 Seamless integration with attoparsec for LL(1) parsing. 17:43:28 See Data.IterIO for a discussion of the differences between iterIO and the two previous iteratee implementations (iteratee and enumerator). 17:43:36 Unless you know of a better iteratee package? 17:43:55 I don't want to write manual network code. 17:44:08 hm, nice 17:44:26 If not iterIO I'd use enumerator, but I find iterIO easier to understand and more powerful 17:44:46 elliott_: of course, real programmers would just poke the relevant registers on the NIC manually 17:44:57 or get butterflies to do it 17:46:11 Vorpal: Well, I could just use standard handle-based IO, iteratees are probably slightly overkill, but I don't see why I should stop using them just because of a dependency issue 17:46:25 fair enough 17:46:28 And it's not like they have much overhead in terms of code to using them so there's no harm done 17:46:54 It would be nice if I could make the packet reading/writing code work directly with iteratees rather than having to go through the cereal library 17:46:54 Not sure 17:47:02 That might be good for performance, I'll have to see 17:47:23 elliott_: what are you doing networking for though? 17:47:27 Vorpal: mchost 17:47:33 aha 17:48:41 Anyway, I'm trying to do things The Right Way, and iteratees are definitely The Right Way :-P 17:48:56 right 17:49:48 I like that compared to lisp of scheme, explicit recursion is a lot more rare in haskell. 17:49:52 or* 17:50:05 Explicit recursion is rare in CL 17:50:07 They use LOOP 17:50:19 elliott_: well yeah. But compared to scheme then 17:50:24 and some lisp dialects 17:50:32 Well, nobody writes programs in scheme :D 17:50:32 iirc it isn't all that uncommon in elisp 17:50:52 elliott_: touche 17:51:45 Anyway, the iterIO maintainer fixed a bug I reported and released the new version to Hackage an hour after I emailed him about it, so I'm disinclined to switch to something else :) 17:51:59 right 17:52:07 -!- copumpkin has changed nick to gribbles. 17:55:55 Also it lets me avoid Handles which is nice, since they have buffer support I don't need. 18:02:34 -!- Ngevd has joined. 18:02:52 Hello 18:04:25 S(S(SKK)(KS))(KK) 18:05:58 -!- gribbles has changed nick to copumpkin. 18:13:25 -!- Ngevd has quit (Ping timeout: 260 seconds). 18:34:00 -!- Ngevd has joined. 18:38:22 Ngevd: I am so glad that my idle comment has permanently changed your IRC identity. 18:38:34 Yup 18:38:45 Ngevd is easier to explain than Taneb 18:40:39 what was the comment? 18:40:42 I've been trying to figure out the new name 18:40:53 at first I thought it was rot-13 or a variant, but it doesn't seem to be 18:41:00 I almost had the additional middle name Elliott 18:41:08 Which would make my initials NGEvD 18:41:20 ah, initials 18:41:29 and yet another elliott would be really confusing, there are already at least two 18:41:37 hello 18:41:46 hi 18:41:50 It's an old family name 18:41:52 and yet another elliott would be really confusing, there are already at least two 18:42:00 ais523: I think everything about Taneb makes communication here more confusing 18:42:01 Ngevd is an old family name??? (lololol) 18:42:02 that have been, in here 18:42:07 My old family name is Dodifer :P 18:42:25 "The esolanger who is aware of IWC's existence who is regularly in #esoteric and who lives in Hexham" was pretty ambiguous before he came along :P 18:42:30 s/ambiguous/unambiguous/ 18:42:38 wait, there are two Hexhamers in #esoteric? 18:42:43 Me and elliott_ 18:42:47 And we have never me 18:42:48 (Six-sided hammers) 18:42:48 t 18:42:53 that's, umm, bizarre 18:42:58 I know! 18:43:04 given that Hexham is minor enough that elliott_ was surprised that I'd heard of it 18:43:10 (and I hadn't done much more than hear of it) 18:43:14 You've heard of it!? 18:43:19 It's surprising that they've never met given that the entire population of Hexham is six pigs and twelve farmers to maintain the six pigs. 18:43:27 well, obviously; more surprising is that I'd heard of it before I'd met elliott_ 18:44:03 I've heard of lots of other places too, like Stourbridge and Halesowen 18:44:09 Goodwife Hot 18:45:26 wait, there are two Hexhamers in #esoteric? 18:45:34 ais523: Yes, this was as surprising to me as it was to you. 18:45:36 Also as surprising to Ngevd. 18:45:41 `pastelogs don't tell me you live in hexham 18:45:55 I thought it was reasonably well-known that elliott_ lived in hexham 18:46:02 http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.22620 18:46:06 so presumably it was Ngevd that noticed the issue first 18:46:13 Argh, wrong quote 18:46:14 elliott_: that was useless! 18:46:16 `pastelogs hexham 18:46:20 It was Phantom_Hoover who noticed the issue 18:46:20 http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.30798 18:46:49 gah, where is it 18:46:57 July 15? 18:47:06 2008-03-14.txt:20:48:37: google suggests hexham, england 18:47:10 I wonder what that was about 18:47:23 wait 18:47:28 Gregor: http://codu.org/logs/_esoteric/ 18:47:35 Where's months four to seven 18:47:53 elliott_: That is an excellent question. 18:47:53 ais523: 2008-03-14 21:47:59( AnMaster) ehird, where are you from btw? (as in what country?) 18:48:00 I was wondering why `log was missing so much. 18:48:19 ais523: tl;dr Taneb mentioned he was from Northumberland, PH said "please don't tell me you live in Hexham", Taneb freaked out. 18:48:28 The next day, I heard about it, freaked out. 18:48:31 Deewiant: ah, so elliott_ was a known hexham/just-next-to-hexham resident before the codu logs started 18:48:35 Henceforth we have vowed to never cross paths ever. 18:48:44 ais523: codu logs contain all clog logs 18:48:47 So no 18:49:26 what about cmeme logs? or have they vanished? 18:49:40 I think so. 18:49:44 also, you two will probably meet each other by chance, but not recognise each other 18:49:46 and may already have done so 18:50:00 Almost certainly 18:50:13 I'm well known in Ponteland of all places 18:50:24 I've never actually been outside of a car in Ponteland 18:50:27 one of you should wear a hat with a stellated icosahedron on 18:50:47 I sometimes where a John Egbert shirt in Hexham 18:50:57 That is, in the middle of Hexham 18:51:01 famous in ponteland 18:51:11 the greatest achievement anyone has ever achieved 18:51:17 Long story which I have already told 18:52:08 Gregor: Well? :P 18:55:07 elliott_: Latest regen of logs to fix the quit bug did weird things. Fixing more bugs :P 18:55:12 -!- augur has quit (Remote host closed the connection). 18:55:16 http://en.wikipedia.org/wiki/Ponteland 18:55:17 i.e. gimme a sec 18:55:24 come to think of it they recorded this on wikipedia 18:55:45 next thing they'll start giving names and wikipedia articles to distinctive dog piles 18:58:33 next thing they'll start giving names piles and distinctive articles to wikipedia dog 18:59:33 -!- Ngevd has quit (Quit: what a big quitter he is, eh?). 19:01:00 quitter 19:10:09 -!- augur has joined. 19:23:32 It was Phantom_Hoover who noticed the issue 19:23:33 Dude 19:23:40 I didn't notice it. 19:23:46 I intuited it with telepathyy. 19:23:57 (It's like telepathy, but better.) 19:30:04 elliott_: Bug found, fixing. 19:31:21 -!- elliott has joined. 19:31:37 -!- elliott_ has quit (Read error: Connection reset by peer). 19:31:39 -NickServ- Last failed attempt from: Elliott!3lli0tt@cpc1-woki6-2-0-cust904.6-2.cable.virginmedia.com on Sep 21 18:35:20 2011. 19:31:45 Somebody needs to teach this fucker a lesson. 19:31:47 This is like the third time. 19:32:04 fizzie: Vorpal: Is there a way to go from that to their current nick? 19:32:29 elliott: not that I know of. 19:32:39 Lame. How am I going to yell at him now? 19:33:10 elliott: I had a similar issue once, but then the ident proved to help me find him/her. Turned out to be a misconfigured pidgin client trying to id as for another network. 19:33:23 if it's an actual attempt at stealing your account, maybe freenode's operators can find him for you 19:33:32 olsner: I suspect it's simply: someone else called elliott. 19:33:37 Especially considering the uppercase E. 19:33:47 Also, freenode don't give a fuck about account owners, or they wouldn't drop nicks after like three days of no use. 19:33:51 (FSVO three days.) 19:34:15 hmm, right 19:34:57 elliott: To answer your previous question, there has never been any missing days in the log, and you're crazy for thinking there had been. 19:34:58 elliott: not 3 days iirc? 19:35:02 more like a week or two? 19:35:11 `pastelogs don't tell me you live in hexham 19:35:20 Vorpal: It's something like thirty to sixty days, I forget exactly, but it's ridiculous. 19:35:24 http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.7949 19:35:27 `log hexham 19:35:32 2011-09-21.txt:18:45:26: wait, there are two Hexhamers in #esoteric? 19:35:37 Gregor: And that's why there are no more lines in that pastelogs :P 19:35:38 elliott: it seems to drop after extended inactivity 19:35:45 Vorpal: No, it's not automatic. 19:36:00 elliott: oh right, many other networks do automatic dropping 19:36:02 `pastelogs hexham 19:36:02 Someone has to go into #freenode and say "give me this nick" and they'll do it immediately if it hasn't been logged into for something like a month or two. 19:36:07 http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.11100 19:36:09 It should be much longer than that. 19:36:18 elliott: most networks actually do it automatic. 19:36:20 oh, HEXHAMers, now I finally managed to parse that word 19:36:20 elliott: they don't seem to have a fixed time, it depends on other things 19:36:24 -NickServ- Last failed attempt from: Elliott!3lli0tt@cpc1-woki6-2-0-cust904.6-2.cable.virginmedia.com on Sep 21 18:35:20 2011. 19:36:29 Vorpal: Isn't freenode's whole idea to be unlike "most networks" 19:36:32 Is that a Hexham address? 19:36:34 Most networks are terrible 19:36:37 Phantom_Hoover: I hope so. 19:36:50 elliott: As near as I can tell, that is in fact the only line that matches exactly "don't tell me you live in hexham" 19:36:52 elliott: hm maybe. 19:36:53 I tried to make it into hex-hammers but it was not spelled the right way for that to work 19:36:55 ais523: They do, but they claim to be slightly more wary if it's just reached that time. 19:37:06 ais523: I'm fairly sure that's lies though, I've got about ten nicks dropped no questions asked. 19:37:07 `pastelogs don't tell me you live in hexham 19:37:12 Gregor: http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.7949 19:37:16 2011-07-16.txt:16:01:00: Please don't tell me you live in Hexham. 19:37:21 That was missing previously. 19:37:30 `pastelogs really makes me hate being alive 19:37:30 Oh; yeah, that's there now :P 19:37:33 http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.17403 19:37:34 I bet this'll get us 345 back. 19:37:37 http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.19220 19:37:42 http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.19220 19:37:43 Yep. 19:37:48 `logurl 2011-04-03.txt:19:48:31: 19:37:50 http://codu.org/logs/log/_esoteric/2011-04-03 19:37:56 Apparently when you have a random bug that causes certain quits to conclude that no lines belong to any channel, it's easy to scrub whole giant swaths of history. 19:38:05 Nice. Very nice. 19:38:06 elliott: they claim to be more wary on dropping someone's only alternate nick 19:38:14 Gregor: XD 19:38:23 Gregor: quits on what form? 19:38:26 14:38:28: 21:54:38 HAAAAAAAAAAAAAAAAAAAAAAAAAAAA 19:38:26 14:38:28: 21:54:48 i had OS/2 Warp once. 19:38:26 14:38:28: 21:55:02 i had all those fucking floppies 19:38:26 14:38:28: 21:55:04 it never worked. 19:38:26 14:38:28: some people are just poets 19:38:27 Would like to reaffirm this as best poem. 19:38:33 Vorpal: I'm not rightly sure *shrugs* 19:38:39 Gregor: ah. 19:38:46 ais523: That's never happened to me. I don't remember how long elliott had been unused when I got it dropped, but it wasn't long. 19:38:51 I feel no guilt because it was stolen from me in the first place :P 19:38:58 elliott: I don't see the poetry 19:39:01 * Vorpal has quit (' -- DROP TABLE logs) 19:39:14 (well, not quite) 19:39:16 olsner: You're not looking hard enough. 19:39:21 Try saying the lines aloud, as poetry. 19:39:26 * Vorpal has quit ('; DROP TABLE logs; --) 19:39:27 there 19:39:54 14:54:26: 11:14:27 There's a squirrel that lives near my building that I see every so often. I can recognize it's the same squirrel because it has no tail. It is a constant reminder that, visually speaking anyway, squirrels are approximately 50% tail. 19:39:55 I think I was just doing a best-of-cpressey day :P 19:39:59 elliott: it does look like a poem to me, just not a very good one 19:40:12 ais523: How can a complete summary of computing be a bad poem? 19:40:17 what color are the squirrels in the US? 19:40:25 unto; 19:40:26 the one with the squirrel is nice 19:40:42 ais523: hm... Grey iirc? 19:40:53 and brown in EU right? 19:40:53 Vorpal: I'd prefer a reply from an American 19:40:57 the most squirrelly color of them all, squirrel-colored 19:40:59 no, that's all wrong 19:41:04 2011-09-21.txt:18:48:19: ais523: tl;dr Taneb mentioned he was from Northumberland, PH said "please don't tell me you live in Hexham", Taneb freaked out. 19:41:09 they're most commonly grey in the UK, although there are a few red ones left in scotland 19:41:09 Also not quite accurate. 19:41:22 He was complaining about the rain and then I said that. 19:41:44 taneb is from hexham? 19:41:47 ais523: well yeah, the grey US ones are taking over in UK iirc. Think I saw a BBC produced program about that some years ago. 19:41:53 there are no other esolangers in Birmingham, right? 19:41:59 Phantom_Hoover: He definitely said Northumberland before that. 19:42:01 But okay. 19:42:03 maybe one of the idlers 19:42:06 ais523, Hexham seems to be the only one. 19:42:14 ais523: squirrels are very popular in london, they pretty much do not exist in germany 19:42:29 *populous? 19:42:31 elliott, sure, and that raised my suspicion, but a day before I asked him if he was in Hexham. 19:42:34 or was that literally correct? 19:42:43 Phantom_Hoover: Fiiiiiiiine. 19:42:43 I seen them in Sweden. Not very common here. Been a year or so since I last saw one 19:42:46 I'm tempred to say "Taneb is from Heham?!" too, we haven't had enough shock yet. 19:42:48 elliott hasn't always been in Hexham, at least 19:42:52 fizzie: Tempred? 19:42:59 Tempted. 19:43:01 Vorpal, can we please have a talk about the pluperfect. 19:43:03 Tempred. 19:43:10 Do you not have them in Swedish or? 19:43:16 Phantom_Hoover: It's been years, he will never learn. 19:43:24 At least he's mostly worked out his "has/have/had"s by this point. 19:43:25 popular, because they are put there by the city. squirrels don't thrive on their own, they're not rats. 19:44:15 speaking of animals, I got a bit of a scare today. I was driving up a highway exit today. A very curved one with poor visibility. Then I suddely saw two deer in the ditch on the side of the road. Thankfully not trying to cross the road. 19:44:28 there was a squirrel living in the roof of the library at school 19:44:35 it used to bask inside the flourescent lights 19:44:44 I'm unsure if I would have been able to brake given the visibility there. 19:44:47 lol 19:44:53 rip deer 19:44:58 the fluorescent squirrel 19:44:59 nice 19:45:04 Vorpal, can we please have a talk about the pluperfect. <-- the what? 19:45:09 Vorpal: Exactly. 19:45:17 Vorpal, saw/seen. 19:45:19 the porter (basically like a groundsman for the inside of a building) used to catch it every now and then, apparently using a trap baited with Bounty bars (which it really liked), and release it in the nearby woods 19:45:24 oh past perfect 19:45:25 but it always seemed to find its way back 19:45:25 right 19:45:41 Phantom_Hoover: that's not pluperfect 19:45:44 it's surprisingly how quickly you get used to a squirrel running around inside the ceiling cavity 19:45:51 Phantom_Hoover: I simply dropped the "have" there somehow 19:46:00 Phantom_Hoover: yes, we have them, we call them pluskvamperfekt 19:46:03 olsner, how not? 19:46:11 ais523: surprisingly... surprising? 19:46:14 pluperfect is "had verbed" 19:46:18 cheater: err, rihgt 19:46:21 *right 19:46:25 rite 19:46:38 Oh dear now I'm confused as well. 19:46:46 Phantom_Hoover: anyway it was a simple typo of dropping a word. 19:46:51 what's so bad about that? 19:46:51 fnern 19:46:59 Vorpal, that's not what 'typo' means but whatever. 19:47:19 Phantom_Hoover: I meant to write "I have seen them" 19:47:48 Phantom_Hoover: hmm, "had seen" is pluperfect, and I guess that's what you meant when you wrote just "seen" ... "saw" is definitely not pluperfect though 19:47:52 typo is short for typographical error 19:48:03 dropping a word is certainly an error in typography 19:48:13 Yeah, except 'have seen', which is what Vorpal meant, is just perfect. 19:48:22 What is descriptivism? Etymology is literally meaning. 19:48:51 elliott: leave me alone 19:49:00 Phantom_Hoover: They have both "have fooed" and "had fooed" forms, and even the auxiliary verb is very similar to English; 'har' + 'hade' vs. 'have' + 'had'. 19:49:35 cheater: If I only made fun of everyone else's stupid remarks and not yours too, that would be discrimination. 19:49:57 elliott: leave me alone 19:50:15 Are you really trying the "I'M A VICTIM OF THE AWFUL ELLIOTT MONSTER" tack? 19:50:36 elliott: cheater: why don't you two just /ignore each other? 19:51:18 that would leave cheater unfairly unridiculed compared to the rest of us 19:51:43 Vorpal, because elliott finds it fun and cheater craves attention. 19:51:56 Vorpal: cheater won't /ignore me because he wouldn't be able to claim I'm stalking him around to make fun of him, I won't /ignore him since nobody else wants to deal with him just to point out his crap. 19:52:08 Phantom_Hoover: Good points. 19:52:29 elliott: I tend to ignore him, but he change nick every so often. 19:52:41 Vorpal: So do most people. 19:52:45 Well, FSVO most. 19:52:47 But a fair number. 19:52:57 yeah 19:53:00 Vorpal, yes, sometimes he even adds numbers to the end of his nick WHAT IGNORE SYSTEM COULD COPE 19:53:41 a true conundrum 19:53:42 Phantom_Hoover: problem is, I know I different cheater on a different network who is okayish. I tried ignoring on nick* + isp but that changed too a few times. 19:54:05 Anyway! Quite a lot of squirrels in Finland, at least in some regions. I see them on the route to work/back once a week, and last year there was one practically every morning in one location. 19:54:18 heh 19:54:21 fizzie, it may be too late. 19:54:22 i am surprised squirrels don't just freeze over there 19:54:34 THE SQUIRRELS ARE MUSTERING THEIR STRENGTH 19:54:49 Vorpal: Tell the other cheater to /nick personwhoplaysbytherules. 19:54:53 They do change color in winter. 19:55:07 Also, does your client not do per-network ignores? Mine doesn't, but actually I'm not sure why. 19:55:08 That would be a useful feature. 19:55:48 elliott: XD 19:55:59 Also, does your client not do per-network ignores? Mine doesn't, but actually I'm not sure why. <-- nope, that would be useful. 19:56:18 You don't see them around that much in the middle of the winter though. 19:56:20 elliott: anyway I'm planning on writing my own irc client 19:56:30 Vorpal: You were planning that months ago. 19:56:36 It's not exactly hard. :p 19:56:41 Vorpal: heh, that sounded a bit like "Of course it doesn't! That would be useful." 19:56:44 elliott: I learned project management from you 19:56:46 :( 19:56:57 Irssi does per-network ignores. 19:57:00 Vorpal, you should learn it from me. 19:57:01 olsner: what did? my reply? 19:57:08 XD 19:57:13 yes, the one about it not doing per-network ignores 19:57:15 Phantom_Hoover: no that would be even worse 19:57:20 Vorpal: You mean the guy who wrote a compliant Funge interpreter in three days and who wrote something that could fully parse huge Minecraft dumps within three days? 19:57:29 (OK, OK, exception that proves the rule.) 19:57:32 Vorpal, what do you mean 'worse'. 19:57:40 fizzie: I tried irssi, never really liked it. It gets annoying to remember that /w 82 is #minecraft or whatever 19:57:55 I suggest not being a member of any channels named #minecraft, they're all awful. 19:58:07 Phantom_Hoover: would never get anywhere 19:58:07 we should find a network that doesn't have a #minecraft yet 19:58:14 and create a channel dedicated to something better there 19:58:14 Vorpal: There are scripts to help dealing with that, but sure, it's not very optimal. 19:58:20 I bet OFTC doesn't, but I bet they'd also not allow one. 19:58:31 what's OFTC? 19:58:34 They have an Oolite one. 19:58:40 elliott: it is actually a minecraft server channel for that server. Like our MC channel, but for that network. A much smaller network than freenode. So it works. 19:58:56 ais523: Software in the Public Interest's official IRC network; 19:59:01 In fact, don't een be on any channels that have "minecraft" as substring, it's safer that way. 19:59:07 ais523: so by proxy Debian's, OpenOffice's, Arch Linux's, OpenWrt's, ... 19:59:13 only reason I'm on OFTC is #llvm 19:59:15 , PostgreSQL's, ... 19:59:23 Phantom_Hoover: would never get anywhere 19:59:27 elliott: wait, you mean #archlinux on here is not official? 19:59:39 Vorpal: Well, I guess you can be a member of SPI without using OFTC. 19:59:45 nonononono, you get to thing about how awesome the thing will be and then go on to thinking about how awesome something else will be it is the best. 19:59:45 And nothing stops people having multiple official channels. 19:59:48 elliott: SPI? 19:59:54 Vorpal: Software in the Public Interest. Keep up. 20:00:00 elliott: I never heard of it 20:00:24 Phantom_Hoover: doesn't help me meet deadlines 20:00:31 OFTC have their own ircd for some reason. 20:00:38 hm 20:00:52 Anyway, I guess it's likely that Debian are the main users of OFTC. :p 20:00:55 elliott: really? I thought it was just a patched ratbox or some such 20:00:59 But a fair number of software projects have their channels there. 20:01:04 Vorpal: Well, it's "oftc-hybrid". 20:01:09 Most IRCs are derivatives of other IRCs. 20:01:10 erm 20:01:11 ircd 20:01:11 s 20:01:13 yeah 20:01:30 elliott: hmm, somehow I expected that lot to all be on Freenode 20:01:32 elliott: anyway freenode have their own too. A patched charybdis 20:01:54 elliott: the only major recent ircd that is not a fork of something else that I can think of is inspircd. 20:02:12 ais523: Debian were on freenode, then jumped ship to OFTC. 20:02:13 and the only two good major ircds I know of are inspircd and charybdis. 20:02:22 Vorpal: ngircd isn't a derivative of anything 20:02:28 oh right 20:02:33 elliott: who uses it though? 20:02:45 Vorpal: Who uses inspircd? 20:02:51 ais523: Basically OFTC is the result of freenode being incompetent and awful. :p 20:03:04 oftc is worse if anything 20:03:11 It is? 20:03:21 I haven't heard of any troubles with them, but I haven't been on much. 20:03:23 elliott, wait what do FreeNode do. 20:03:36 Phantom_Hoover: s/FreeNode/freenode/, and what do you mean what do they do? They run an IRC network. 20:03:58 elliott: yeah getting a cloak for your host seemed utterly complex, and was only given when you could show you had a good reason to need one or some such shit 20:04:22 Vorpal: That doesn't mean that they're worse, it just means that they're more conservative, which is kind of the point. 20:04:24 I would be okay with normal cloak like freenode, or the network scrambling the host name 20:04:30 elliott, yes but what are they bad about. 20:04:55 Phantom_Hoover: They're not exactly very professional, and their policies are pretty bad. 20:05:09 I think the staffers are not well-liked by a lot of people, but I don't really keep track of this stuff. 20:05:30 Is the botpocalypse an example of this. 20:05:37 elliott: iirc some of the worst people got booted from the staff. Still a few bad ones left. But I don't really keep up with that either. 20:05:41 Phantom_Hoover: I would say so :P 20:05:55 I know someone who does, so I get to hear some of it that way, of course that is biased. 20:06:22 Phantom_Hoover: hm? 20:06:36 Vorpal: The CTCP thing. 20:06:39 oh right 20:06:43 "The Zune HD web browser scores 5/100 in the Acid3 test." X-D 20:06:44 yeah that is stupid . 20:06:51 A certain person who we don't know who it is at _all_ complained, then Plazma, etc. 20:06:56 Gregor: ouch 20:07:06 Gregor: Quite "impressive" considering in-development IE gets 100/100. 20:07:20 Gregor: that is fucking terrible. Considering even IE6 got more iirc. 20:07:37 Vorpal: The Zune's browser is uniquely bad. You have to use it to believe it. 20:07:48 * pikhq_ would be willing to bet on a port of IE5 20:07:49 s/'s browser// 20:07:49 firefox 6 gets 100/100 of course 20:07:57 pikhq_: but why 20:07:59 pikhq_: I have discovered that the greatest thing about the Zune is that it has legitimate fanboys who I can troll endlessly since they're fans of literally the worst media player ever made. 20:08:17 Vorpal: IE5 is the most portable IE. 20:08:18 Gregor, wasn't Tycho a fan? 20:08:28 pikhq_: eh, it still requires windows doesn't it? 20:08:29 Phantom_Hoover: Mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmrrrrp? 20:08:31 Vorpal: It actually ran on not-Windows! 20:08:37 pikhq_: oh right, mac os 20:08:39 indeed 20:08:47 Vorpal: It was offered for Windows, Solaris, and HP-UX. 20:08:58 pikhq_: and iirc mac os classic 20:08:58 IE for Mac was a completely different product that shared the brand name. 20:09:02 ah right 20:09:15 IE for UNIX was a direct port. 20:09:30 pikhq_: IE for mac was quite weird. Of course it shared the "moving mouse pointer = slower download" issue of all classic mac os 20:09:43 that was more due to the OS 20:09:48 Anyway, the Zune, with Liberate (to get rid of their shitty UI and reintroduce a shittier one but with better app compatibility) and an FTP server is approaching a tolerable device. 20:10:10 Though the lack of hardware volume buttons is seriously the worst offense any media player could commit. 20:10:11 Yeah, the design of classic Mac OS was pretty ridiculous. 20:10:46 It made plenty of sense on the first few Mac models. 20:10:50 yes 20:10:57 pikhq_: I used Mac OS 9 20:11:00 And got to be utterly ridiculous when running on PowerPCs. 20:11:21 yes 20:11:59 Shame they didn't switch to A/UX in the late 80s, though. 20:12:36 yeah 20:12:54 Gregor: How do you adjust the volume on a Shuffle, I wonder 20:13:21 elliott: Hardware 20:13:34 using the volume control, perhaps 20:13:35 Gregor: Hmm, it has volume buttons? 20:13:40 Yes 20:13:44 Gregor: And one other button, right? 20:13:51 olsner: The Shuffle has ~no controls. 20:13:56 The new ones have five I think ... 20:14:05 I'm talking about the ones that are basically headphones. 20:14:10 elliott: Some had hardware buttons, some had buttons *on the fucking headphones*. 20:14:13 The shuffle has always had controls, just no screen. 20:14:13 Oh right those new ones. 20:14:16 No I mean the ones before that. 20:14:28 Before that, they had hardware volume buttons. 20:14:34 There has never been a shuffle with no controls whatsoever, just (like pikhq_ said) they've been in stupid places. 20:14:50 "It also no longer had volume or track controls on the device itself. Instead, the packaged iPod earbuds included a three-button device on the right earbud cord." 20:14:52 There was nothing intervening. Went from buttons on the device to buttons on the fucking headphones, the right dicks. 20:14:56 So lame, it should have a one-button device. 20:15:03 One button goes to the next option, sitting for enough time on one option selects it. 20:15:08 And a "do nothing" option in each menu. 20:15:18 It would be SO USELESS. 20:15:37 Anyway, point being, even when Apple went "lol NO SCREEN", they STILL put hardware volume, because OF COURSE YOU PUT HARDWARE VOLUME CONTROLS. 20:15:39 It's already pretty dang useless. 20:16:03 I want to play random music approx. never. 20:16:43 They should make a CloudShuffle that just plays completely random garbage from iTunes via Verizon 3G :P 20:16:47 pikhq_: You might not, but 99 percent of iPod user s do. 20:16:49 With no controls (EXCEPT VOLUME) 20:16:50 s/user s/users/ 20:17:04 Gregor: It should just tune into random radio frequencies. 20:17:09 For three minutes at a time. 20:17:15 elliott: Not terrible enough. 20:17:17 elliott: Yeah, fuck that shit. 20:17:32 Gregor: How do you propose to make it more terrible 20:17:39 elliott: CloudShuffle :P 20:17:48 Except, only select songs that are in the, say, 25 most popular on iTunes. 20:18:06 So it's repetitive, horrible, and there's not a damned thing you can do about it. 20:18:10 Gregor: Dude, that still plays music (please give your idiotic jokes that "DATS NOT MUSIC" to /dev/null). 20:18:13 This would just play static. 20:18:16 Different static. Every three minutes. 20:18:20 Ohhhhhhhhhhhhhhhhhhhh 20:18:23 The chances of hitting on a real radio are approximately 0 :P 20:18:26 s/radio/radio station/ 20:18:29 I thought you implied that it actually seeked :P 20:18:35 Fuck no, it just picks a random frequency. 20:18:36 Not just completely random frequencies, but random /stations/ :P 20:18:37 25 most popular on itunes.co.jp will make it even more repetitive. 20:18:38 And seeks to it. 20:18:57 So you go "please stop here, please stop here" when it briefly passes over a real station on the path to Radio Bzzzzzzt. 20:19:11 elliott, dude, radio frequencies are wide enough that you'd get real stations often enough. 20:19:24 Phantom_Hoover: You're implying that it only picks from frequencies actually used for radio. 20:19:39 Here's a list of frequencies that could, theoretically, be used to transfer sounds of some sort: Every frequency. 20:19:54 but gamma is VERY EXPENSIVE 20:19:58 elliott, except receiving almost all of those is impossible. 20:20:01 requires atomic power 20:20:13 -!- sllide has joined. 20:20:15 Phantom_Hoover: If it picks a station it can't receive, it just kills the user. 20:20:16 Also, bringing a RFShuffle on a plane is illegal :P 20:20:43 elliott: That would be totally awesome if it picks up ELF band. 20:20:57 You might even get some whalesong! 20:21:09 quintopia: It comes with its own nuclear power station. 20:21:11 Attached to the device 20:21:12 . 20:21:23 Apple: "The smallest media player, ever." 20:21:30 Fuck You Industries: "It's so big. So big. You don't even know. So big." 20:22:07 The US runs a radio station on 76 Hz. 20:22:30 Idonno, I still feel like the CloudShuffle is the superior device. 20:22:36 pikhq_: Wow, what? 20:22:45 pikhq_: how long would an antenna need to be to pick that up with any reasonable amount of gain? 20:22:56 Gregor: The problem is that it'd actually be not entirely terrible sometimes :P 20:23:02 I mean, people, in general, don't mind pop music. 20:23:07 elliott: But that's the draw! 20:23:08 elliott: It exists to provide one-way transmission to submarines world-wide. 20:23:09 in the millilightsecond range, I think 20:23:23 Even with shiny Appleness, the RFShuffle would never sell a single unit :P 20:23:31 People would actually be stupid enough to buy CloudShuffle. 20:23:40 Gregor: Well, yeah, I'm telling you to stop being holier-than-thou on IRC and to go sell this thing :P 20:23:59 But ... but I am holier than thou :( 20:24:34 ais523: I'm not entirely sure how big the receiving antennas are. The broadcasting site is a few square miles, though. 20:24:46 Gregor: Actually the "internet streaming-based shuffley device" idea is a really good one. 20:24:56 Gregor: Residential connections will be fast enough to act as servers for that soon enough. 20:24:57 Noooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo D-8 20:25:15 Russia also has a station on 82 Hz. 20:25:19 Gregor: It sure beats syncing a shitload of FLACs to a device that doesn't have nearly enough space to store all of them. 20:25:31 Aaaah, cold war. 20:26:36 pikhq_: yes, except didn't they shut them down since then iirc? 20:26:51 Vorpal: What, and risk losing funding? 20:27:06 pikhq_: in Russia though? 20:27:22 Okay, Russia probably did, because the fall of the USSR was pretty... Harsh. 20:27:33 pikhq_: that is an understatement 20:27:56 On the other hand, I'd imagine it wouldn't take too much to run once it's already set up. 20:28:12 Most of your cost is going to be laying out miles and miles of antenna. 20:28:28 What's the highest frequency anyone does radio on :P 20:28:39 pikhq_: given the length of the antenna wouldn't the resistance in the antenna be a rather significant problem? 20:29:11 and anyway, if it is worldwide the current usage will be huge anyway 20:29:33 Oh, huh. Technically, they're not using antennas for that. 20:29:40 pikhq_: oh? 20:29:45 They're running leads into the earth to use the *planet* as an antenna. 20:29:47 Don't they have a facility that uses the Earth itself as an antenna. 20:29:50 Ha, snap. 20:29:51 pikhq_: awesome 20:30:03 http://upload.wikimedia.org/wikipedia/commons/3/3d/Clam_Lake_ELF.jpg 20:30:12 Lake Elf. 20:30:15 Yup. 20:30:28 pikhq_: that is sure going to require a HUGE current to work? 20:30:31 surely* 20:30:44 Yeaaah. 20:30:57 is it safe? 20:31:20 Well, there's no *known* health risks, at least. 20:31:44 -!- monqy has joined. 20:31:45 It probably would be, because there is no way a 76 Hz wave is going to ionise. 20:33:27 elliott: Anyways, seems the highest radio frequency used for data is somewhere around 90 GHz. 20:33:36 Pssht, I have CPUs faster than that. 20:33:40 pikhq_: hm true 20:33:51 And there's an permitted-unlicensed band at 60 GHz. 20:33:56 s/an/a/ 20:34:27 pikhq_: whoa. 90 GHz? Where is that in relation to visible light? 20:34:30 still way below? 20:34:48 Vorpal: Visible light starts at 405 THz. 20:34:52 oh right 20:34:55 A radio station that broadcasted on the light spectrum would be THE COOLEST. 20:35:08 elliott: well there is data communcation using 20:35:11 using infrared* 20:35:24 so, technically that is way over 90 GHz 20:35:31 of course it is not exactly radio 20:35:50 pikhq_: where does infrared start? 20:36:10 Vorpal: Sorry but I cannot see infrared with my eyes. 20:36:22 pikhq_: oh and: 20:36:24 The US maintained two sites, in the Chequamegon-Nicolet National Forest, Wisconsin and the Escanaba River State Forest, Michigan (originally named Project Sanguine, then downsized and rechristened Project ELF prior to construction), until they were dismantled, beginning in late September 2004. 20:36:25 Vorpal: ~1 THz. 20:36:31 looks like US tore them down 20:36:35 pikhq_: heh 20:37:05 pikhq_: infrared is quite large then. What part is normally used for remotes and such? Probably near visible light since normal digital cameras can capture th at 20:37:06 that* 20:37:39 elliott: a DVD drive uses visible light to transfer data. A very short distance, sure, but still 20:37:40 Yeah, that's somewhere in near infrared... 20:37:58 From ~200 THz to ~400 THz. 20:37:59 Vorpal: AND I CAN'T SEE IT 20:38:05 I want a radio station where I can GO AND VIEW THE BEAMS 20:38:22 elliott: I imagine it would be a soft glow over everything 20:38:29 Good enough 20:38:35 anyway it wouldn't work well, because there is too much noise in visible light 20:38:51 pikhq_: interestingly on digital cameras IR light from remotes tend to look bluish-white 20:38:51 elliott: That'd be a shitty radio station — most of the point of using radio for modulation is that most things we build with are radio-transparent. 20:39:02 pikhq_: I DON'T CARE HOW SHITTY IT IS 20:39:03 I WANT IT 20:39:22 Vorpal: I'd be willing to bet each color sensor is having about equal response to it, then. 20:39:45 elliott: oh and looking at a broadcast radio antenna would probably blind you. They tend to be around 60 000 W 20:40:08 Vorpal: Coooooooooooooooooooooooooooooooooooooooooooooooool 20:40:21 Vorpal: I don't think that says that much about the lumens. 20:40:22 pikhq_: interestingly on digital cameras IR light from remotes tend to look bluish-white 20:40:26 I feel this is an appropriate time to state 20:40:27 FUCK 20:40:28 TETRACHROMATS 20:40:31 pikhq_: hm. Or it was just too intense when aimed at the actual lamp. I should check it out reflected against a white wall. Of course, I don't know if the white wall reflects in IR... 20:40:53 I need another X chromosome and statistical unlikelihood. 20:40:55 elliott, makes sense, given that they're all female. 20:40:56 elliott: they can't see in IR either 20:40:58 ONLY THEN CAN I SEE MORE COLOURS 20:41:14 Incidentally, the estimated amount of energy the Sun's light striking the Earth imparts is about 174 PW. 20:41:20 Vorpal: I DON'T CARE, THEY CAN SEE MORE COLOURS 20:41:22 I WANT MORE COLOURS 20:41:36 Vorpal, humans can see very slightly in near IR. 20:41:38 Yes, that is the right unit; petawatts. 20:42:04 Phantom_Hoover: And humans can see quite well in near UV if you remove their lenses. 20:42:08 Phantom_Hoover: not enough to see a remote though 20:42:22 Vorpal, *very* near IR. 20:42:27 Phantom_Hoover: right 20:42:44 pikhq_: heh. 20:43:09 wait a second, what exactly defines IR? Isn't it basically "wavelengths below what a human can see"? 20:43:21 It's a very loosely defined term. 20:43:26 which means humans seeing ANYTHING from IR would be absurd. 20:44:11 But it seems to mean "Wavelengths below what a human can see that are produced largely by object's heat" 20:44:49 heh 20:45:04 Well, if there's a strict max on the wavelength that roughly corresponds to the bottom of human range, then *some* humans could plausibly see it. Presuming that the limits of the visible range are variable. 20:45:07 yeah seeing in the full IR would be weird. 20:45:26 so would full UV of course 20:46:07 -!- oerjan has joined. 20:46:28 -!- boily has quit (Quit: WeeChat 0.3.5). 20:47:06 hi oerjan 20:47:08 hoerjan 20:47:27 helliott 20:47:42 I don't think near infrared (the night vision/TV remote) zone has much to do with heat. 20:48:15 lower IR certainly does though 20:48:18 Thermal imaging long-wavelength IR, sure. 20:48:32 if it's hot enough, it does :P 20:48:33 The name-share is a bit confusing. 20:48:45 (as does visual light, of course) 20:49:08 well yeah 20:49:14 and UV 20:49:51 oerjan: oh btw, I think the English term is "visible light", not "visual light" 20:49:57 er right 20:50:26 actually the peak wavelength of a blackbody never reaches below somewhere in blue 20:52:04 http://en.wikipedia.org/wiki/File:PlanckianLocus.png 20:54:20 But that's just the peak; I assume the intensity overall (incl. UV) will increase if you keep increasing the temperature. 20:54:33 yeah 20:54:42 http://en.wikipedia.org/wiki/Black_body 20:55:23 "When an object is visually white, it is emitting a substantial fraction as ultraviolet radiation. 20:55:27 " 20:56:30 Vorpal: you're right on that 21:00:09 ok well the peak radiation does reach UV, it's the total color which has blue as limit 21:00:16 (visible color) 21:00:28 q 21:00:38 uantum 21:00:58 oerjan: right 21:01:10 oerjan: but that is only because we can't see UV I assume? 21:01:21 presumably 21:01:31 Phantom_Hoover: And humans can see quite well in near UV if you remove their lenses. <-- anyone described what it looked like? 21:01:46 I don't really want to remove my lens to find out 21:01:52 pikhq_: I imagine humans wouldn't be able to focus on anything at all if you removed their lens 21:01:54 so it'd just be a blur 21:02:04 also, the near UV would be picked up primarily by blue cones 21:02:07 ais523: yes but what colour I mean 21:02:11 so UV would be visible as a shade of blue 21:02:16 ais523: well yes, but what shade I meant 21:02:29 would it be bluer than anything they seen before? 21:02:32 or such 21:02:49 my guess is it'd be the purple that you see coming out from UV lights (because their color tends to overlap into the visible range a bit) 21:02:59 ais523: also you could insert an artificial lens I guess? 21:03:01 it wouldn't be bluer, it'd just be less red and less green for its brightness 21:03:27 ah 21:03:38 Vorpal: did you know that a human's black-and-white vision has a wider field-of-view than their color vision? 21:03:56 I've done an experiment where a colored object was placed in such a place that I could see it, just not tell what color it was 21:03:57 well yes 21:04:10 from the planck's law formula, it seems like every frequency's emission is increasing with temperature. 21:04:13 and you just think "I don't know what color that is", it doesn't look like anything 21:04:14 never done the experiment though 21:04:18 and if you try to visualise it, it's a sort of grey 21:04:24 as that's what you visualise colorless things /as/ 21:04:36 or at least, what I visualise them as, and probably most humans 21:04:39 ais523: oh the other hand you can't see the outline very clearly either 21:04:44 on* 21:04:46 indeed 21:05:11 ais523: so visualizing it would be a blur, and possibly a headache 21:05:45 well, I knew what the object actually was, just not its color 21:05:47 I've done an experiment where a colored object was placed in such a place that I could see it, just not tell what color it was 21:05:52 ais523: where was it placed? 21:05:55 as I'd been told, and seen examples of the object in several colors 21:06:00 elliott: far to the right of my field of vision 21:06:00 or at least, what I visualise them as, and probably most humans <-- I prefer the checkerboard pattern of transparent found in image editors 21:06:03 it was moved in slowly until I could see it 21:06:22 Vorpal: but you don't think uncolored objects in real life look like that, surely? 21:06:28 ais523: hmm, it's very hard for me to perceive my lack of colour vision there but I suppose that's the point 21:06:31 ais523: I was joking. 21:06:36 you can't exactly tell you have no colour vision in dreams, either 21:06:46 elliott: yes, you remember the colors of things in the boundary 21:06:51 I think that's kind of wonderful, in that complete colourblindness isn't greyscale, it's just uncoloured 21:06:59 and have a reflex action to look at something that moves into it that you can't see the color of and don't know 21:07:05 heh 21:07:08 -!- pumpkin has joined. 21:07:09 elliott: there is no colours in dreams? Huh? I'm pretty sure I seen vividly green grass and red flowers in dreams 21:07:22 ais523: since violet triggers red cones as well, i'd expect UV to do the same ... 21:07:25 Vorpal: you don't have color vision during dreams, because your eyes are shut 21:07:34 Vorpal: some dreams have colour, some don't 21:07:38 ais523: well yes, you don't have vision at all 21:07:40 oerjan: violet /light/ doesn't, but violet /color/ does 21:07:51 I imagine colour turns on with lucidity but don't quote me on that 21:07:52 because it involves a mix of red, blue, and purple light 21:08:00 ais523: um yes it does. 21:08:00 ais523: hmm, I think I just managed to look leftwards enough to perceive the colourlessness of things there, but I dunno 21:08:04 could have just been me fooling myself 21:08:23 oerjan: the color response curve of cones is a bell curve, isn't it? 21:08:29 elliott: probably, anyway if you turned your eyes then no. 21:08:37 Vorpal: of course not 21:09:01 -!- copumpkin has quit (Ping timeout: 258 seconds). 21:09:06 ais523: i'm pretty sure it's not. 21:09:06 of rods too 21:09:20 oerjan: http://en.wikipedia.org/wiki/Cone_%28vision%29 21:09:29 why bother having an argument when you can just check Wikipedia? 21:09:59 arguments are more fun, obviously 21:10:12 ais523: you just search faster :P 21:10:31 oerjan: that's because I went straight to Wikipedia, and guessed the article name and disambiguator 21:10:46 it turns out that that isn't the primary disambiguator, but someone had thoughtfully already added a redirect 21:11:12 That thing is not very well modeled with a Gaussian. 21:13:52 but violet _is_ the shortest pure spectral color wavelength. 21:14:19 so why does it look redder than blue? 21:15:51 You could easily imagine the tail of the red curve overtaking the tail of the blue in the short end. 21:15:59 yes, that might be 21:17:08 CIE "standard observer" response functions (used in the XYZ colorspace, and indirectly in Lab) are based on rather bad 1920s approximations of the spectral response of humans; http://en.wikipedia.org/wiki/CIE_1931_color_space#Color_matching_functions 21:20:28 -!- pumpkin has changed nick to copumpkin. 21:21:17 What is it with the past harshing our vibe? 21:21:22 Deep thoughts. 21:23:46 `log harsh 21:23:52 2011-02-10.txt:20:49:55: Gregor: disable that <-- now that's a bit harsh, might want to announce the result to the channel anyhow though 21:24:09 `log harshing 21:24:13 2011-09-21.txt:21:21:17: What is it with the past harshing our vibe? 21:24:15 -!- Madoka-Kaname has joined. 21:24:19 `log harshing 21:24:23 2011-09-21.txt:21:24:19: `log harshing 21:24:26 `log harshing 21:24:29 2011-09-21.txt:21:24:19: `log harshing 21:24:31 lame 21:24:33 `log harsh.*vibe 21:24:37 2011-09-21.txt:21:24:33: `log harsh.*vibe 21:24:40 :P 21:24:47 `pastelogs harsh.*vibe 21:24:52 http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.9945 21:25:10 See, nobody else is as cool as me. 21:25:19 elliott: i have an idea for using `log without it returning `log searches, unfortunately it only works if everyong uses it 21:25:26 `logurl 2011-05-21.txt 21:25:27 `pastelogs harsh.*buzz 21:25:28 http://codu.org/logs/log/_esoteric/2011-05-21 21:25:29 namely, put [] around one of the chars 21:25:31 http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.28118 21:25:36 *everyone 21:25:37 oerjan: ais523 has a perfect solution to it 21:25:41 well, relatively perfect 21:25:46 [^]]search term 21:25:52 That's right, only I would mix those metaphors :P 21:25:56 oerjan: anyway, I deliberately left them in :) 21:26:01 `pastelogs killjoy 21:26:05 http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.26726 21:26:20 Apparently "harshing my mellow" is vastly more popular than the vibe-based alternative. 21:26:24 Apparently oklopol is the ultimate killjoy. 21:26:25 At least according to Google suggestions. 21:27:04 elliott: that only works when searching /for/ `log searches 21:27:19 ais523: umm, howso? 21:27:28 `log [^]]pontificate 21:27:31 2010-10-07.txt:22:47:08: cpressey: PC-BSD; pontificate 21:28:00 `log [^]]njanoewhr;awheroiawer 21:28:03 No output. 21:28:07 oh right, I see 21:28:07 ais523: Your point? 21:28:14 it's ^] not ^` 21:28:15 I got confused 21:28:27 `log [^]]quarv 21:28:31 No output. 21:28:34 Hm 21:28:35 Indeed. 21:28:40 `run log "asoijdhdsghsglfg" | grep -v ' `run log "asoijdhdsghsglfg"' 21:28:43 No output. 21:29:18 -!- augur has quit (Remote host closed the connection). 21:31:09 The `log [^]]foo will still find the bazillion earlier plain `log foos. 21:32:00 -!- augur has joined. 21:32:19 elliott: i have an idea for using `log without it returning `log searches, unfortunately it only works if everyong uses it 21:32:26 This one only works if everyong uses it, too. 21:33:00 egrep -v '\d\d:\d\d:\d\d: <[^>]*> `log' 21:33:00 huh, why is gmail marking every single new mail I get as "important" based on words it contain. 21:33:01 Tadaaaaaaaaaa 21:33:10 egrep -v '\d\d:\d\d:\d\d: <[^>]*> `(log|pastelogs)' 21:33:11 I wonder if I can turn that off. It is bloody useless 21:33:18 Vorpal: I hid the markers. 21:33:33 elliott: doesn't help wrt using IMAP client for gmail 21:33:36 which I do 21:34:11 It doesn't do it for IMAP, apart from the "important" folder. 21:34:15 At least according to a quick search. 21:34:16 well yeah 21:34:22 So just delete that folder. 21:34:28 What, you can disable conversation view in Gmail now. 21:34:31 hm. guess that would work 21:34:42 elliott: you can? Why would that be useful though? 21:34:51 Itw ouldn't. 21:35:02 s/tw /t w/ 21:35:27 actually I can think why it would be useful. Gmail likes to put every mail I get from the automated course web system thingy at university in a single convo 21:35:32 that is kind of annoying 21:35:50 but not in general no 21:36:09 "sed 's/Gregor/Gre\xE2\x80\x8Bgor/g'"?-) 21:36:35 *cough cough* 21:36:37 okay there are other reasons: "Important mainly because of your interaction with messages in the conversation" for example 21:36:39 fizzie: I have no idea to what you refer. 21:36:41 >_> 21:36:42 <_< 21:36:43 whatever that one really means 21:36:46 UTF-8 ... is that Grègor? 21:37:02 fizzie: wat 21:37:03 > all $ zipWith (<) [2,6] [3,5] 21:37:04 It has both "Gre" and "gor" in it, so probably not. 21:37:06 `help 21:37:06 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/ 21:37:08 i think you want or 21:37:09 It smells like some sort of a nick-ping avoidance thing. 21:37:16 fizzie: Where is that? 21:37:18 fizzie: where is that from? 21:37:21 elliott: snap 21:37:21 > or $ zipWith (<) [2,6] [3,5] 21:37:22 True 21:37:28 elliot, Vorpal: bin/log. 21:37:29 er wait 21:37:32 > and $ zipWith (<) [2,6] [3,5] 21:37:33 False 21:37:33 oh 21:37:37 *and 21:37:39 oerjan: Does having (fmap f x) behave differently to (x >>= return . f) violate the monad laws? 21:37:43 Or applicative laws? 21:37:43 oerjan: CakeCake already said that. 21:37:48 fizzie: I'll fix that. 21:37:55 elliott: Monad or Functor 21:37:59 fizzie: I was considering making the same nick-ping avoidance for everyone, but decided only I'm important. 21:38:02 oerjan: Eh? 21:38:13 elliott: nothing applicative in there 21:38:29 Gregor: why not just insert a UTF-8 zero width space? 21:38:40 Vorpal: DUHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH 21:38:41 I don't know any irc client smart enough to nick ping over that 21:38:45 `fetch http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/0eea30ea7bb0/bin/log 21:38:46 2011-09-21 21:38:46 URL:http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/0eea30ea7bb0/bin/log [185/185] -> "log" [1] 21:38:48 `run mv log bin 21:38:49 No output. 21:38:56 Gregor: oh is that what you did. I thought olsner said it was Grègor? 21:38:59 elliott: most types have at most one valid fmap candidate, i believe 21:39:13 elliott: you removed the anti-nick ping? 21:39:14 Vorpal: olsner was wrong :P 21:39:14 why 21:39:14 elliott: and since x >>= return . f must be one, they must be equal 21:39:29 Vorpal: It wasn't an anti-nick ping, it was corrupting certain sections of the log for one specific term. 21:39:33 fizzie: Damn you for letting elliott see that >_< 21:39:37 elliott: I see 21:39:46 Gregor... 21:39:51 ah, I missed the e before the \x stuff, it looked like it replaced the e 21:39:52 elliott: so you are against inserting zero width space? 21:39:52 oerjan: Hmm, I guess it doesn't matter actually 21:39:53 elliott: in any case it's a gross violation of the intent 21:39:59 the rest was pure guess 21:40:06 Vorpal: Vorpal: It wasn't an anti-nick ping, it was corrupting certain sections of the log for one specific term. 21:40:07 Gregor: Actually I thought (at first glance) it was converting "Gregor" into something derogatory, and that elliott had added it. :p 21:40:09 That is the reason I reverted. 21:40:14 fizzie: Good idea 21:40:26 elliott: so there was a bug in where it inserted that zero width space? 21:40:35 Vorpal: "sed 's/Gregor/Gre\xE2\x80\x8Bgor/g'"?-) 21:40:40 Vorpal: It wasn't an anti-nick ping, it was corrupting certain sections of the log for one specific term. 21:40:42 elliott: yes, it seems okay 21:40:47 I will henceforth continue this conversation entirely with quotes. 21:40:48 Vorpal: It wasn't an anti-nick ping, it was corrupting certain sections of the log for one specific term. 21:40:50 elliott: it seems like an anti-nick ping for me 21:40:57 Okay. 21:40:59 elliott: stop being such an arse 21:41:08 No. 21:41:19 seriously, anti nick-ping with zero width space is an awesome idea 21:41:29 I'm glad to hear you think that. However that was not an anti nick-ping. 21:41:40 ttoille 21:41:49 elliott: so it would still ping Gregor? Are you suggesting that? 21:42:19 Vorpal: I was unaware that freenode had added a feature to their servers where there would always be a user with the nick "Gregor" on #esoteric. 21:42:38 elliott: ... you are just being stupid now 21:42:51 He's saying that it's an anti-Gregor-ping, not a (general) anti-nick-ping, And wah wah wah :P 21:42:59 Gregor: oh okay. 21:43:15 Gregor: I'm not really saying anything, I'm just trying to get Vorpal to stop talking to me. 21:43:30 Gregor: can you get a current user list from inside bin/log? 21:43:40 then you could insert a zero width space in each nick in there 21:43:40 Vorpal: Yes. 21:43:46 elliott: where? 21:43:53 `ls /var/irclogs 21:43:55 ​_ai \ _corewars \ _esoteric \ _esoteric-minecraft \ _glogbot \ _matrixofsolidity \ _plof \ _scapegoat \ index.php \ log \ log.css \ log.js \ raw \ stalker.php 21:44:01 `ls /var/irclogs/_esoteric/????-??-??-raw.txt 21:44:03 ls: cannot access /var/irclogs/_esoteric/????-??-??-raw.txt: No such file or directory 21:44:06 elliott: so you would have to parse it manually for nicks 21:44:08 `ls /var/irclogs/_esoteric/????-??-??.raw.txt 21:44:08 right 21:44:09 ls: cannot access /var/irclogs/_esoteric/????-??-??.raw.txt: No such file or directory 21:44:16 `ls /var/irclogs/_esoteric 21:44:17 better solution please 21:44:18 2003-01-18-raw.txt \ 2003-01-18.txt \ 2003-01-19-raw.txt \ 2003-01-19.txt \ 2003-01-20-raw.txt \ 2003-01-20.txt \ 2003-01-21-raw.txt \ 2003-01-21.txt \ 2003-01-22-raw.txt \ 2003-01-22.txt \ 2003-01-23-raw.txt \ 2003-01-23.txt \ 2003-01-24-raw.txt \ 2003-01-24.txt \ 2003-01-25-raw.txt \ 2003-01-25.txt \ 2003-01-26-raw.txt 21:44:26 Vorpal: What on earth is not better about that? 21:44:31 You can package up the "list of current users" into a command. 21:44:44 `run cat 2003-01-18-raw.txt | egrep 'NAMES|JOIN|PART|QUIT' 21:44:46 cat: 2003-01-18-raw.txt: No such file or directory 21:44:47 elliott: something that doesn't need to parse every single log from the start to get the current user list? 21:44:58 if every file start with NAMES then fine 21:45:02 otherwise it is annoying 21:45:02 `run cat /var/irclogs/_esoteric/2003-01-18-raw.txt | egrep 'NAMES|JOIN|PART|QUIT' 21:45:04 ​< 1042851425 ? :clog!unknown@unknown.invalid JOIN :#esoteric. \ < 1042851425 ? :clog!nef@bespin.org JOIN #esoteric. \ < 1042851716 ? :hcf!unknown@unknown.invalid QUIT :. \ < 1042852578 ? :deltab!unknown@unknown.invalid QUIT :brunner.freenode.net irc.freenode.net. \ < 1042852625 ? :deltab!~deltab@espians.com JOIN 21:45:05 especially in shell 21:45:15 Honestly the solution I would probably do is just s/\(<[^>]*\)\(.>\)/\1ZWSHERE\2/g' 21:45:26 But I suspect elliott would zap that too. 21:45:28 Gregor: People can ping inside messages. 21:45:29 Gregor: what? 21:45:38 Gregor: brain parse error 21:46:04 elliott: Yes, but that's considerably more rare than just the nick talking. I'm just trying to reduce, not eliminate. 21:46:09 Gregor: it is your bot, you can just override whatever elliott does 21:46:20 It's HackBot. HackBot is anarchy. 21:46:27 well okay, but you run it 21:46:47 Gregor: clearly you should modify HackEgo's output routines, so they can't be tinkered with from inside the bot 21:46:49 HackBot edit-wars: the best. 21:46:55 stubbornocracy 21:47:11 heh 21:47:18 well okay, but you run it 21:47:27 elliott: ? 21:47:33 In which Vorpal is confronted with the idea that not everyone operates on the Vorpal principles of "repeatedly revert until the other party gets bored". 21:48:02 ais523: i didn't think it was possible to modify HackEgo's output routine 21:48:17 oerjan: It is if you have access to the machine it runs on. 21:48:22 oerjan: How do you think I added botloop avoidance? 21:48:23 oerjan: from inside the bot, no 21:48:56 elliott: Gregor: the "Learn to read context" course is thataway. 21:49:15 oerjan: Context is for losers. 21:49:19 oerjan: Gregor: clearly you should modify HackEgo's output routines, so they can't be tinkered with from inside the bot 21:49:25 Gregor, go learn Japanese 21:49:27 Note "Gregor:". 21:49:39 oerjan: you is the one failing at context. 21:49:44 Vorpal: "Are". 21:49:46 elliott: i was pointing out it is already impossible to tinker 21:49:49 Madoka-Kaname: Gureegoru 21:49:50 elliott: right 21:49:51 The "learn to use the word are" course is thataway. 21:49:54 who is Madoka-Kaname? 21:50:00 oerjan: You are misparsing. 21:50:04 Vorpal: Lymia. 21:50:07 oh okay 21:50:11 oerjan: "They" =/= the output routines. 21:50:15 elliott: oh 21:51:03 "They" there was the ping avoidance codezzz. 21:51:08 Vorpal: /whois is your friend 21:51:36 Important mainly because you often read messages with this label. <-- what? You mean no label at all? Just sitting there in my inbox? 21:51:38 Right. 21:52:03 Vorpal: /whois is your friend <-- did that, but "+ [Madoka-Kaname] (~moe@unaffiliated/cirno-chan): Moe Moe Power~ <3" meant nothing to me 21:52:17 I see no mention of "Lymia" there, nor do I know the normal host of that user. 21:52:41 okay further down there is logged in as, but due to a bug that line sometimes show up in the server tab in my irc client 21:52:43 Lymia is cirno-chan 21:52:45 so I didn't notice it 21:52:47 Vorpal: you don't see a line with account : Lymia ? 21:53:03 oerjan: as I said just above, it ended up in the wrong tab for unknown reasons 21:53:37 Gregor: Anyway, the annoying thing about ping-avoidance is that it makes `log non-idempotent. 21:53:48 Well, I suppose it isn't already, since it takes a random line, but the point is that it messes up copying. 21:53:50 *waaaaaaaaaaaaaaaaaaaaaah* 21:54:03 Ah, now I'm convinced, I'll add it immediately 21:54:05 elliott: ddg sometimes make some hilarious mis-suggestions. Try "code indentation" (without quotes) 21:54:07 :P 21:54:11 "Better call the WAAH-bulance." 21:54:20 It suggested a LaTeX package, nice touch but not quite what I wanted 21:54:51 Vorpal: It prioritises user-content sites like StackExchange, I think. 21:54:58 It also searches API docs and the like. 21:55:09 !echo !echo hi 21:55:10 elliott: so very geared towards programmers? 21:55:12 ​!echo hi 21:55:26 Vorpal: Only if it thinks the API docs are relevant. 21:55:31 right 21:55:32 StackExchange is not programmer-only. 21:55:38 oh? 21:55:40 didn't know that 21:55:41 ​!echo hi 21:55:47 http://stackexchange.com/sites 21:56:02 There's even 21:56:02 Jewish Life and Learning beta 21:56:02 Q&A for those who base their lives on Jewish law and tradition and anyone interested in learning more 21:56:04 ok putty definitely does not copy zero-length spaces 21:56:12 Gardening and Landscaping beta 21:56:12 Q&A for gardeners and landscapers 21:56:35 elliott: are they quite as well frequented as the programming parts though? 21:56:39 * Phantom_Hoover → sleep 21:56:40 -!- Phantom_Hoover has quit (Quit: Leaving). 21:58:33 Probably not. 21:58:47 They're separate sites and all. 21:58:53 StackExchange =/= Stack Overflow. 22:02:26 oh come on, ddg special cases xkcd 22:04:11 Vorpal: Eh? 22:04:26 elliott: try searching xkcd. It inlines the last comic 22:04:37 didn't for a few other web comics I tried 22:04:40 Vorpal: I bet it does that for anything it thinks is a webcomic. Or maybe any blog. 22:04:58 But anyway, good punishment for searching for xkcd. 22:05:01 elliott: hm https://duckduckgo.com/goodies.html indicates otherwise 22:05:09 it lists it as a "special query" 22:05:35 -!- sllide has quit (Ping timeout: 260 seconds). 22:07:27 Fair enough :P 22:07:54 https://duckduckgo.com/?q=(%3E_%3C) -- lol 22:10:03 monqy: hey, I didn't know you played Crawl 22:10:12 Henzell's learndb has you credited as the author of the "autodie" script 22:10:30 I did, that's how I got the squarelos stuff 22:10:39 ais523: i dont play crawl 22:10:46 i used to though 22:10:50 hmm, ah I see 22:10:55 crawl is a bad game for bad people 22:11:09 and you created autodie to get the same effect as playing by hand, just much faster? 22:12:02 if by same effect you mean getting things out of the way, yes 22:12:21 -!- Patashu has joined. 22:12:28 no, I meant dying 22:12:30 oh 22:12:43 it's called autodie because of its suicidal tendencies 22:13:26 I was trying to (partially) automate crawl in hope that I could get a bunch of the boring parts out of the way in hope that i could enjoy it. but then i got fed up with scripting crawl (its lua and i dislike lua etc etc etc) 22:14:27 so now I'm just giving up on crawl until it gets to a point where I like it (though I'm doubtful this will ever happen) or someone makes a fork I like (doubtful here as well) 22:19:18 im auto die 22:21:31 that's, umm, bizarre 22:21:52 monqy: did you see autorobin? 22:21:56 yes 22:22:00 more bizarre is that i joked about it before it happened 22:22:01 also, dtsund has made a fork with a similar idea to what you just suggested 22:22:04 elliott: you were right about feedback to ddg. 22:22:06 but it hasn't shortened the game much yet 22:22:09 I've heard of that fork as well 22:22:10 * oerjan swats elliott with synchronicity -----### 22:22:18 elliott: works well. Quick response, something like half an hour or so. 22:23:05 despite not playing the game, I do still hang around in ##crawl (and ##crawl-dev but you probably noticed me there) 22:23:18 oerjan: :D 22:23:36 elliott: seems it is used for the colour picker, though he did agree that I had a good point about it seeming a little strange to normal users who did not know the workings of the code. 22:24:37 brb 22:24:40 elliott: I think this issue, or more accurately the quick and informative response, made me like the site more. Would never have gotten that from google XD 22:26:09 `log next-door neighbor 22:26:10 ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: /hackenv/bin/log: Permission denied \ /home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: /hackenv/bin/log: cannot execute: Success 22:26:18 wtf 22:26:34 Gregor: WHAT ARE YOU DOING 22:26:46 `log next-door neighbour 22:26:48 ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: /hackenv/bin/log: Permission denied \ /home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: /hackenv/bin/log: cannot execute: Success 22:26:52 Hm 22:27:19 monqy: i'm pretty sure i don't spell it british. hm or maybe i did, because of the context. 22:27:19 `file bin/log 22:27:21 bin/log: POSIX shell script text executable 22:27:27 `run ls -l bin/log 22:27:28 ​-rw-r--r-- 1 5000 0 185 Sep 21 22:27 bin/log 22:27:38 `run chmod 0755 bin/log 22:27:39 No output. 22:27:40 Gregor: lymia 22:27:46 bet she used this alt. nick 22:27:50 `help 22:27:50 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/ 22:27:55 `log next-door neighbor 22:28:00 2011-09-21.txt:22:26:09: `log next-door neighbor 22:28:02 oh 22:28:04 elliott: would that be lymee or Madoka-Kaname 22:28:05 my fault 22:28:08 :D 22:28:21 oh 22:28:23 `log next[- ]door neighbou?r 22:28:24 eelliott 22:28:26 2011-07-12.txt:19:53:16: by some freak coincidence taneb is elliott's next door neighbor 22:28:31 lol 22:28:33 there you go :P 22:30:58 `log live in [Hh]exham 22:31:01 2011-01-22.txt:00:58:06: elliott, I know you live in Hexham and I know your surname. 22:31:08 `log live in [Hh]exham 22:31:12 2011-07-16.txt:21:47:10: Taneb: Are you serious do you live in Hexham. 22:31:28 oerjan: It's already case-insensitive 22:31:32 oh. 22:31:33 `log lIvE In HEXam 22:31:36 Erm 22:31:37 2011-09-21.txt:22:31:33: `log lIvE In HEXam 22:31:42 It is not spelling-insensitive though :P 22:31:48 shocking! 22:31:53 `log lIvE In HEXhaM 22:31:57 2011-09-21.txt:18:45:41: `pastelogs don't tell me you live in hexham 22:38:50 -!- nooga has quit (Ping timeout: 260 seconds). 22:41:42 -!- ais523 has quit (Remote host closed the connection). 22:43:18 I seen them in Sweden. Not very common here. Been a year or so since I last saw one 22:43:48 i've seen a squirrel outside my window not long ago 22:44:06 may have been this week, or previous one 22:44:39 When europeople come to Purdue, they frequently comment on how many squirrels there are here. 22:44:50 And my response is "... huh? Y'know, we have chipmunks too. And jackrabbits." 22:45:32 um chipmunks are squirrels 22:45:53 oerjan: Yesyes, but in common parlance they're not. 22:46:45 One also doesn't frequently say "Look at that big squirrel!" when talking about a woodchuck. 22:47:10 o kay 22:47:26 Gregor: one doesn't? 22:47:36 -!- copumpkin has quit (Quit: Computer has gone to sleep.). 22:47:54 -!- micahjohnston has joined. 22:48:30 -!- audy has joined. 22:48:52 fizzie: Tempred? <-- fizzie tempered his temptations. he's secretly a vulcan, you know. 22:49:23 Gregor: well okay, one says "oh I guess it is Groundhog Day" 22:49:44 (sorry, that was a Slash'EM reference) 22:50:22 Vorpal: In the same way that one only refers to humans as animals when specifically making a point about humans being animals. Otherwise the term "non-human animals" is unnecessary and cumbersome. This is the nature of species names in common parlance, they're neither particularly accurate nor particularly (whatever the word is for "including all species derived from a common ancestor") 22:50:59 Phantom_Hoover: I simply dropped the "have" there somehow 22:51:06 Gregor: are you sure there is a word for "including all species derived from a common ancestor"? 22:51:24 Vorpal: I'm quite sure that there's the inverse, not sure about that word. 22:51:34 i believe one of the differences between norwegian and swedish is that swedes frequently drop the "have" in perfect forms 22:52:03 Gregor: what would the inverse be? 22:52:21 Vorpal: ... not including all species derived from a common ancestor ... 22:52:30 Gregor: well duh 22:52:49 e.g. since birds evolved from dinosaurs but birds aren't commonly referred to as dinosaurs, the name "dinosaur" is 22:52:57 Gregor: I thought you meant a single word for the inverse... 22:53:07 There is a single word for that. 22:53:26 oerjan: we do? Never noticed 22:53:49 I would actually say "Jag har sett" in that case 22:53:50 Gregor: "clade" 22:53:56 oerjan: No. 22:54:49 Gregor: um i was responding to your earlier comment 22:54:52 oerjan: Oh, I thought we were g---right :P 22:55:02 Yeah, clade is right for the original, but it's also a noun :P 22:55:10 so for the later one, "not clade", or paraphyletic iirc 22:55:13 MONOPHYLETIC 22:55:19 Paraphyletic being the inverse. 22:55:22 Thankee 22:55:44 Point is, species names in common parlance are neither particularly accurate nor particularly monophyletic. 22:57:09 Vorpal: "När jag varit i Norge ..." or so, i think it maybe for subordinate clauses only 22:57:17 And that, my friends, is why chipmunks are not squirrels :P 22:57:22 *may be 22:57:32 oerjan: hm. That works, if somewhat informal 22:57:47 Gregor: Your MOM is a squirrel. 22:57:56 In comm onparlance. 22:57:58 In common parlance. 22:58:10 "The industry standard for image resizing 22:58:10 Enlarge images up to 1000% without sacrificing quality" -- uh huh 22:59:05 elliott: It's trivial to /enlarge/ images arbitrarily without sacrificing quality. 22:59:17 Hell, with no interpolation at all you're not sacrificing quality. 22:59:27 Gregor: In common parlance... 22:59:34 *ba-dum* :P 23:09:36 Gregor: We're still waiting for the *tsh*. 23:09:49 THERE SHALL BE NO TSH 23:10:09 LET THERE BE TSH 23:10:33 THERE SHALL NEVER BE 23:10:49 (LET THEM EAT TSH) 23:14:12 -!- elliott has set topic: god bless haskell america | 12345678!&^ | http://codu.org/logs/_esoteric/. 23:14:17 topic was a bit long 23:14:20 and it's after 3.10.2011 23:14:22 by a long time 23:15:02 Uhhhh ... no? 23:15:19 oh 23:15:21 hmm 23:15:23 weird 23:15:26 what is it with time 23:15:32 Did ... did you just interpret that as a US date? 23:15:37 no i just 23:15:42 didn't realise that this wa sthe 9th month 23:15:45 `pastelogs Hel/Finland 23:15:49 http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.20061 23:15:51 -!- calamari has joined. 23:16:02 -!- elliott has set topic: Esolang event @ Hel/Finland on 3.10.2011: https://wiki.helsinki.fi/display/lambda/esoteeriset+ohjelmointikielet | god bless haskell america | 12345678!&^ | http://codu.org/logs/_esoteric/. 23:16:05 -!- calamari has left. 23:16:05 there we go 23:16:06 Let them eat squid! 23:16:09 rip calamari 23:16:25 monqy: rip 23:17:11 hi 23:17:15 hirp 23:18:16 -!- calamari has joined. 23:31:06 ?pl do foo <- st; return (foo >>= f) 23:31:06 (line 1, column 13): 23:31:07 unexpected ";" 23:31:07 expecting letter or digit, variable, "(", "`", "!!", ".", operator or end of input 23:31:10 ?undo do foo <- st; return (foo >>= f) 23:31:10 st >>= \ foo -> return (foo >>= f) 23:31:13 ?. pl undo do foo <- st; return (foo >>= f) 23:31:13 (f =<<) `fmap` st 23:31:19 oerjan: I blame you 23:31:59 -!- copumpkin has joined. 23:36:37 -!- FireFly has quit (Quit: FireFly). 23:38:06 wat 23:38:14 oerjan: you didn't make a nice operator for that 23:38:44 most of the weird operators were after my time, anyhow. 23:38:53 oerjan: "weird" :P 23:38:54 there aren't really that many in the haskell report. 23:39:04 *h98 23:39:39 oerjan: ooh, I wonder if your haskell style can be traced to a defined lineage, since it was probably before haskell's internet explosion in popularity when they all mixed together apart from Utrecht 23:39:43 EXCITING??? 23:40:14 elliott: it's a rather weird thing to want anyhow, since you are using return on a monadic action 23:40:33 yeah turns out I didn't want it :) 23:40:38 in fact, i don't think there's any reason why they need to be the same monad 23:40:57 :t do foo <- ?st; return (foo >>= ?f) 23:40:58 forall (m :: * -> *) (m1 :: * -> *) a b. (?st::m (m1 a), Monad m, ?f::a -> m1 b, Monad m1) => m (m1 b) 23:41:55 of course it's not _that_ weird, you could easily use a parser monad to build some other monad's actions 23:43:04 i'm sure my haskell style has changed somewhat. 23:43:27 oerjan: actually no it seems I do need it... but anyway 23:43:37 and probably, but still :P 23:43:50 I don't suppose you recall reading one gigantic codebase and nothing else when learning Haskell, that would be convenient to trace it 23:43:51 :P 23:44:36 look at http://oerjan.nvg.org/esoteric/Unlambda.hs it is one of the first haskell programs i wrote 23:45:02 hmm, I wonder if 2001 is after when the styles started melding together 23:45:10 heh i just intended by 2 there 23:45:19 I do that :P 23:45:21 I like how you import everything qualified 23:45:22 now i have this weird 4 with intermediate 2 thing 23:45:35 '.' -> do c <- IO.hGetChar h; return (Dot c) 23:45:39 I like the part where you didn't know what fmap was 23:45:45 heh :P 23:45:45 or liftM I guess 23:46:03 yes, lots of things i would change today 23:46:05 I also like how you abused Show :( 23:46:09 (like here means don't like) 23:46:20 (Computation cp1) >>= f = Computation cp where 23:46:20 cp dat1 cont2 = cp1 dat1 cont1 where 23:46:20 cont1 dat2 a = cp2 dat2 cont2 where 23:46:20 (Computation cp2) = f a 23:46:25 whaoh what is happening 23:46:42 i probably didn't know Show was not meant for displaying stuff, you know :P 23:46:46 well this is certainly unique code :P 23:47:02 how so? 23:47:14 callCC f = Computation cp where 23:47:15 cp dat cont = cp2 dat cont where 23:47:15 (Computation cp2) = f cont 23:47:19 oerjan: well I don't exactly see nested where that often :P 23:47:23 unless you need it because of scoping 23:47:25 but you don't here at all 23:47:44 lol at ExpressionSource 23:47:46 newtype Filename = FN String 23:47:48 um yes i doo 23:47:49 *do 23:47:54 did they not have FilePath back then? 23:47:56 oerjan: oh hm 23:48:05 (Computation cp1) >>= f = Computation cp where 23:48:05 cp dat1 cont2 = cp1 dat1 cont1 where 23:48:05 cont1 dat2 a = cp2 dat2 cont2 where 23:48:05 (Computation cp2) = f a 23:48:07 not there 23:48:14 at least not the last one 23:48:57 elliott: seems i didn't know about field names :P 23:49:10 Chunk x st >>= f = f x `mappend` Fuck (liftM (>>= f) st) 23:49:10 my solution may be suboptimal 23:49:49 -!- Jafet has quit (Quit: Leaving.). 23:51:02 oerjan: incidentally couldn't Set be made a monad if (Ord a) => were added to all its constructors 23:51:03 elliott: (Computation cp2) = f a uses the a parameter of the surrounding function, so the last where is definitely needed 23:51:07 oh you can't do retur 23:51:08 n 23:51:27 oerjan: oh darn it does too 23:51:30 I lost track of the a 23:53:33 did they not have FilePath back then? <-- i think this is pretty much pure haskell 98 libraries 23:54:04 :t openFile 23:54:05 Not in scope: `openFile' 23:54:08 ?hoogle openFile 23:54:09 System.IO openFile :: FilePath -> IOMode -> IO Handle 23:54:10 oerjan: so is FilePath 23:54:15 it's a synonym for String 23:54:21 you'd still need the newtype admittedly 23:54:22 ah yes. 23:58:33 as for abusing Show, i sometimes defined newtype RawString = Raw String; instance Show RawString where show (Raw s) = s 23:58:53 > var "indeed." 23:58:54 indeed. 23:59:49 and i think i have somewhere a [[a]] instance which displays a matrix/table 23:59:59 oerjan: :'(