00:04:12 -!- nooga has quit (Ping timeout: 265 seconds). 00:15:35 @where pondoc 00:15:35 10 43' 0" North, 125 0' 0" East 00:15:48 oerjan 00:16:22 SPEAK UP 00:16:54 OERJAN 00:16:56 @where pandoc 00:16:56 http://sophos.berkeley.edu/macfarlane/pandoc/ 00:17:09 @where pundoc 00:17:10 I know nothing about pundoc. 00:17:14 @where pondoc 00:17:14 10 43' 0" North, 125 0' 0" East 00:17:27 @where panda 00:17:27 I know nothing about panda. 00:21:59 -!- sebbu has joined. 00:22:00 -!- sebbu has quit (Changing host). 00:22:00 -!- sebbu has joined. 00:28:08 -!- sebbu has quit (Ping timeout: 244 seconds). 00:38:25 -!- augur has joined. 00:39:06 -!- sebbu has joined. 00:39:10 -!- sebbu has quit (Changing host). 00:39:10 -!- sebbu has joined. 01:03:36 -!- zzo38 has joined. 01:09:56 -!- monqy has joined. 01:30:09 -!- zzo38 has quit (Remote host closed the connection). 01:40:57 :t (^?) 01:40:58 s -> Getting (First a) s t a b -> Maybe a 01:41:26 :t just 01:41:27 Not in scope: `just' 01:41:27 Perhaps you meant `_just' (imported from Control.Lens) 01:41:34 :t _just 01:41:36 (Applicative f, Prismatic k) => k (a -> f b) (Maybe a -> f (Maybe b)) 01:42:43 :t identity 01:42:44 Not in scope: `identity' 02:12:20 -!- augur has quit (Read error: Connection reset by peer). 02:12:53 -!- augur has joined. 02:37:26 -!- augur has quit (Remote host closed the connection). 02:43:17 you do it to yourself 02:45:02 -!- kmc has set topic: Yes I'll tell you, I'll tell you why I'm lying here... but God forgive me... and God help us all... because you don't know what you ask of me. | http://codu.org/logs/_esoteric/. 02:49:53 -!- oerjan has set topic: Yes I'll tell you, I'll tell you why I'm lying here... but God forgive me... and God help us all... because you don't know what you ask of me. | http://codu.org/logs/_esoteric/. 02:50:00 inb4 elliott rage 02:50:40 What happened? 02:51:08 space de-expansion 02:51:31 I see. 02:51:36 -!- tswett has joined. 02:51:38 -!- shachaf has set topic: Yes I'll tell you, I'll tell you why I'm lying here... but God forgive me... and God help us all... because you don't know what you ask of me. | http://cоdu.org/logs/_esoteric/. 02:52:05 tricksy 02:52:21 > "Yes I'll tell you, I'll tell you why I'm lying here... but God forgive me... and God help us all... because you don't know what you ask of me. | http://cоdu.org/logs/_esoteric/" 02:52:22 mueval: recoverEncode: invalid argument (invalid character) 02:52:39 > "Yes I'll tell you, I'll tell you why I'm lying here... but God forgive me... and God help us all..." 02:52:41 "Yes I'll tell you, I'll tell you why I'm lying here... but God forgive me.... 02:53:01 > " because you don't know what you ask of me. | http://cоdu.org/logs/_esoteric/" 02:53:01 mueval: recoverEncode: invalid argument (invalid character) 02:53:11 > ord 'о' 02:53:11 mueval: recoverEncode: invalid argument (invalid character) 02:53:12 > " because you don't know what you ask of " 02:53:13 " because you don't know what you ask of " 02:53:35 > "me. | http://cоdu.org/logs/_esoteric/" 02:53:35 mueval: recoverEncode: invalid argument (invalid character) 02:53:42 > "me. | http://cоdu" 02:53:43 mueval: recoverEncode: invalid argument (invalid character) 02:53:53 > ".org/logs/_esoteric/" 02:53:54 binary search itt 02:53:55 ".org/logs/_esoteric/" 02:54:00 oerjan: I suspect there are more efficient ways of figuring that out. 02:54:03 > "tp://cоdu" 02:54:04 mueval: recoverEncode: invalid argument (invalid character) 02:54:20 > "me. | ht" 02:54:21 it's easy when you're url hilighter stops at the problem о 02:54:22 "me. | ht" 02:54:36 > "tp://c" 02:54:37 "tp://c" 02:54:46 > "du" 02:54:47 "du" 02:54:49 -!- shachaf has set topic: Yes I'll tell you, I'll tell you why I'm lying here... but God forgive me... and God help us all... because you don't know what you ask of me. | http://cоdu.оrg/lоgs/_еsоtеric/. 02:55:09 now the о is in codu and esoteric, shachaf? 02:55:29 я,я 02:55:32 it's 1px off of o in my font 02:55:38 monqy: oh no 02:55:51 fix your font 02:55:54 no 02:55:58 "nо" 02:56:03 -!- shachaf has set topic: Yes I'll tell you, I'll tell you why I'm lying here... but God forgive me... and God help us all... because you don't know what you ask of me. | http://сodu.оrg/lоgs/_еsotеric/. 02:56:20 oh no what did you do 02:56:47 øh nø 03:01:27 -!- Sgeo|web has joined. 03:12:44 wtf. shachaf. 03:12:49 вхыыыыыыыыыы 03:16:37 ḧẗẗp̈:̈/̈/̈c̈öd̈ü.̈ör̈g̈/̈l̈ög̈s̈/̈_̈ës̈öẗër̈ïc̈/̈ 03:17:01 What did the : do? 03:17:09 ? 03:17:25 Hmm, I guess none of the punctuation has diæreses. 03:17:42 Or maybe my font is just messed up! 03:17:52 something weird happened in copy-paste-land 03:18:08 "COMBINING_DIAERESIS" sounds like a disease. 03:18:32 COMBINING PALATALIZED HOOK BELOW 03:18:45 Sounds rather painful, in fact. 03:18:45 D: 03:18:49 how long do i have to live, doc 03:19:58 COMBINING GRAVE-ACUTE-GRAVE 03:20:09 oh i blame mosh 03:20:14 Uh oh. 03:20:28 the umlauts disappear if i cat the same file inside mosh 03:20:36 on a different server though 03:20:40 Those are umlauts? 03:20:40 so maybe it's a locale difference 03:20:50 they're dots anyway 03:21:03 is вхыыыыыыыыыы supposed to be like "whyyyyyyyyyyyy" 03:22:52 -!- Phantom__Hoover has quit (Read error: Connection reset by peer). 03:23:23 GHC recompiles much more quickly when you touch the RTS than when you touch the compiler. 03:23:40 I suppose it doesn't have to recompile the compiler at all. 03:23:58 yeah 03:24:01 compiling Haskell is slow 03:24:28 And you don't need to do the stage1/stage2 thing. 03:24:34 Well, I guess you don't really need that anyway. 03:28:05 Gregor: So should the new quote database keep an ordering? 03:28:11 I think ordered quotes are silly. 03:28:55 Ordering per se isn't important, but numbering or otherwise having short, easy-to-remember IDs is, and ordering seems to be the best way to do that. 03:29:03 Except of course that then we keep deleting them, breaking it. 03:29:16 No, we're going to make a new system where a quote is identified by a hash. 03:29:18 (Of the quote.) 03:30:17 ... how about no. 03:30:31 Gregor: ... how about yes? 03:30:32 Unless it's like a decimal hash of no more than four digits. 03:30:38 It'll be base 32. 03:30:41 > 32^2 03:30:42 1024 03:30:44 > 32^3 03:30:45 32768 03:30:56 Three characters should be plenty. 03:31:16 * oerjan gently reminds people of the birthday paradox 03:31:24 Yes, I know. 03:31:29 :) 03:31:36 We've already gone through it and figured out how long they need to be. 03:31:43 > 1.2 * sqrt(32^3) 03:31:44 217.2232031805074 03:31:47 > 1.2 * sqrt (32^4) 03:31:48 1228.8 03:31:58 Anyway we'll just take the shortest unique prefix each time. 03:32:01 That's "good enough". 03:32:05 I mean, I'm not gonna stop anybody, I have little investment and the whole point of HackEgo is do whatever you want, but *eh* 03:32:22 elliott: Tell Gregor. 03:32:40 It's just not memorable at all. 03:32:48 What's not memorable? 03:33:15 Three to four base-32 digits. 03:33:15 I've forgotten already. 03:33:21 i like the idea 03:33:34 I think it's just as memorable as three digits. 03:33:44 although i'm fine with just assigning them increasing integers that don't change when one is deleted 03:33:45 Because people are inefficient at remembering things from a small alphabet. :-( 03:33:47 imo a sequence is simpler, "colission-free" and easier to remberer 03:33:59 Jumping from decimal to anything more than about base 12 and it becomes impossible. 03:34:05 that's the database way to do it 03:34:23 just have people type in the whole quote when they want to retrieve the quote. 03:34:26 Yeah, just not deleting numbers seems like the sensible way to go. 03:35:17 If by sensible you mean unsensible? 03:35:30 Bike's suggestion is good. 03:35:49 Yeah, being memorable, sequential AND constant, that'd be terrible. 03:36:54 The number shouldn't be part of the quote! 03:36:59 That'd mess the whole thing up. 03:37:55 ... dahell? Who's suggesting that? Or are you just pissy about the fact that order of addition affects quote identification? 03:37:57 i say quotahto, you say quotayto 03:40:02 i have a suggestion 03:40:13 you specify an id when you add a quote 03:40:21 if it's not unique, it doesn't get added 03:40:33 then people decide what's memorable 03:41:33 And make it not indicate whether or not it was added, and hide the quote list for 24 hours after an attempted addition 03:41:41 And 24 hours before an attempted addition 03:43:05 brilliant! 03:43:08 Even quintopia's suggestion is better. 03:44:48 How about do whatever the fuck you want because HackEgo isn't a democracy, it's anarchy. 03:45:27 Good point. 03:45:34 monqy: what do i want 03:46:49 ?????hi 03:47:44 * kmc throws a chair through the nearest starbucks window 03:48:04 monqy: hi 03:49:04 kmc: what if the nearest Starbucks is miles away? 03:49:09 Is the nearest Starbucks miles away? 03:49:48 come and see the violence inherent in the system 03:51:17 HELP! HELP! I'M BEING OPPRESSED! 03:51:41 `quote reference 03:51:44 94) Darn, now I can't acknowledge the reference you were making. 03:52:05 how wonderfully meta 03:54:55 I have a great idea. 03:54:55 tswett: You have 1 new message. '/msg lambdabot @messages' to read it. 03:55:12 Let's assign each quote a number according to the order in which it was added. 03:55:46 look deep into its soul 03:55:49 `quote 03:55:50 396) mixing drinks together is like taking all of mozart's works and listening to all of them at once and in general a drink - and most foods - are kind like taking a song and then just taking the average of the notes and listening to it for three minutes. olsner: the point is you don't have to be the composer yourse 03:55:58 `quote 03:56:00 48) ??? Are the cocks actually just implanted dildos? Or are there monster dildos and cocks? Or are both the dildos and cocks monster? 03:56:05 `quote 03:56:07 516) Yeah, Bashir, just sit there drinking, rather than diagnosing the carpenter mauled in that tragic bonobo accident. 03:56:10 `quote 03:56:12 119) how does a "DNA computer" work. von neumann machines? CakeProphet, that's boring in the context of DNA. It's just stealing the universe's work and passing it off as our own. 03:56:15 `quote 03:56:17 290) that one doesn't make a lot of sense outside context. Unless it is supposed to be a rather lame joke about STD as in HIV, and so on // HELLO WELCOME TO QUOTE DATABASES 101 03:56:36 `delquote 290 03:56:42 ​*poof* that one doesn't make a lot of sense outside context. Unless it is supposed to be a rather lame joke about STD as in HIV, and so on // HELLO WELCOME TO QUOTE DATABASES 101 03:57:25 `quotwe395 03:57:26 ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: quotwe395: not found 03:57:38 Why is my terminal being slow. Stop being slow, my terminal. 03:59:40 `ls 03:59:41 bin \ canary \ egobot.tar.xz \ foo \ interps \ karma \ lib \ paste \ quotes \ share \ wisdom \ zalgo \ zalgo.hi \ zalgo.hs \ zalgo.o 03:59:54 > "Hi" 03:59:56 "Hi" 04:01:38 `quote 395 04:01:39 395) mixing drinks together is like taking all of mozart's works and listening to all of them at once and in general a drink - and most foods - are kind like taking a song and then just taking the average of the notes and listening to it for three minutes. olsner: the point is you don't have to be the composer yourse 04:01:41 `quote 290 04:01:42 290) A priori one cannot say that post hoc ergo propter hoc the diminishing returns would give; yet under quid pro quo one can agglutinate fabula and sujet into vagrancies untold. See? I'm intellectual. 04:02:13 04:02:15 `quote 04:02:15 `quote 04:02:15 `quote 04:02:15 `quote 04:02:16 710) I saw a MythBusters show about that. (Or I guess it maybe was a tree.) 04:02:17 193) Invent the game called "Sandwich - The Card Game" and "Professional Octopus of the World" (these names are just generated by randomly) 04:02:17 245) Phantom_Hoover: I have just one tvtropes page open in elinks, but my tvtropes.txt "queue" has 38 tvtropes.org URLs waiting for processing. 04:02:17 859) Gordon Moore's expected lifespan doubles every 18 months 04:02:18 `quote 04:02:19 371) "system is fairly sane imagine if the roomba was called the Robotic Magic Vacuum would you object to that being trademarked I mean phrase trade" oops 04:02:25 elliott, naturally, forgot to take into account the varying efficacies of arbitrational vantages. 04:02:42 elliott: monqy tswett despite not on list, Fiora 04:03:21 Are you talking about that potato I read? 04:06:03 Yes 04:06:12 Well, I don't know if you've read the potato 04:06:14 * tswett nods. 04:08:53 `run quote 395 | fmt -w80 | tail -1 04:08:55 knows what sequences of drinks taste the best 04:09:10 `run quote 395 | fmt -w80 | tail -3 04:09:12 of the notes and listening to it for three minutes. olsner: the \ point is you don't have to be the composer yourself not everyone \ knows what sequences of drinks taste the best 04:09:30 This fan fic seems good enough overall, but it has a couple of blemishes. 04:09:39 "You fiddle through the pantry, reaching in deep, standing on one foot for balance." 04:27:32 wtf 04:27:55 Gregor: you should read potatoes 04:35:00 -!- epicmonkey has joined. 04:39:25 potato reading, the new fad of scrying 04:47:13 -!- epicmonkey has quit (Read error: Operation timed out). 04:50:42 -!- WeThePeople has joined. 04:59:29 hi 05:00:36 hi 05:00:43 `hi 05:00:45 hi 05:00:52 hi 05:00:54 monqy: hello 05:01:25 monqy: have you heard return to the neverhood 05:02:36 `welcome WeThePeople 05:02:38 WeThePeople: Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page. (For the other kind of esoterica, try #esoteric on irc.dal.net.) 05:02:45 Damn it, it's TOO FAST now. 05:03:01 Is it? 05:03:02 `welcome 05:03:04 Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page. (For the other kind of esoterica, try #esoteric on irc.dal.net.) 05:03:10 Seems slow enough to me. 05:03:12 `welcome 05:03:13 Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page. (For the other kind of esoterica, try #esoteric on irc.dal.net.) 05:03:19 -!- WeThePeople has left ("Leaving"). 05:03:21 > "It's not appreciably slower than lambdabot!" 05:03:22 "It's not appreciably slower than lambdabot!" 05:03:28 > "hi" 05:03:29 "hi" 05:03:35 @@ @echo @echo hi 05:03:35 echo; msg:IrcMessage {msgServer = "freenode", msgLBName = "lambdabot", msgPrefix = "shachaf!~shachaf@unaffiliated/shachaf", msgCommand = "PRIVMSG", msgParams = ["#esoteric",":@@ @echo @echo hi"]} 05:03:36 rest:"echo; msg:IrcMessage {msgServer = \"freenode\", msgLBName = \"lambdabot\", msgPrefix = \"shachaf!~shachaf@unaffiliated/shachaf\", msgCommand = \"PRIVMSG\", msgParams = [\"#esoteric\",\":@@ @ 05:03:36 echo @echo hi\"]} rest:\"hi\"" 05:03:45 Although apparently lambdabot becomes hyper-instantaneous on second request or something??? 05:03:49 Or maybe I'm just lagged. 05:03:49 woah man 05:03:56 @ping 05:03:56 hi Bike 05:03:57 pong 05:04:06 @botsnark 05:04:06 :) 05:04:06 hi shachaf 05:04:09 hi 05:04:23 Bike: have you learned lens yet 05:04:34 what is lens 05:04:43 @where lens 05:04:43 I know nothing about lens. 05:04:47 !!! 05:04:55 @where+ lens https://lens.github.com/ 05:04:55 Done. 05:04:57 gosh 05:05:02 http://www.amazon.com/dp/B003L7WF7A/?tag=047-20 05:05:03 "whoops" 05:05:05 @where+ lens http://lens.github.com/ 05:05:05 That's not a 9 05:05:05 I will never forget. 05:05:20 okay well that link is - oh, no https 05:05:21 Sgeo|web: ?tag 05:05:22 ? 05:05:24 Really? 05:05:27 Don't ?tag= us! 05:05:31 I have no idea what tag= is 05:06:12 it means u steel awr mohnee! 05:06:12 I'm sure. 05:06:22 I got the link from http://www.thisiswhyimbroke.com/ if that's relevant, maybe the tag is some referral thing? 05:06:35 It is. 05:06:40 man this doesn't even have any polynomials above the second degree does it 05:06:42 pathetic! 05:06:58 Bike: are you still talking about lens 05:07:09 I'm mostly just facepalming about the 3(pi-.14) thing 05:07:32 I don't think lens has polynomials. Am I wrong. 05:07:35 Maybe they put that just above where the 9 normally is, in just the right spot? 05:08:01 > sqrt 1221 05:08:03 34.942810419312295 05:08:13 Bike: It has algebraic types. 05:08:19 Sgeo|web: bla bla Do Irrationals Really Exist?? bla bla 05:08:31 Bike: Sure they exist. 05:08:32 > (1221) ** (1/11) 05:08:34 1.9081412268565665 05:08:35 Well, the computable ones do. 05:08:46 > (1221) ** (1/111) 05:08:48 1.0661252990161068 05:08:49 the multiple question marks are supposed to indicate that it's not meant as a serious question or worth talking about 05:08:52 Wait what 05:08:53 and: does type algebra have polynomials? 05:09:03 i didn't think it did. 05:09:04 Bike: My answer was not completely serious either. 05:09:14 blast, i should have known 05:09:37 > 2 *** 3 05:09:38 No instances for (GHC.Num.Num (a0 b0 c0), GHC.Num.Num (a0 b'0 c'0)) 05:09:38 aris... 05:09:40 > 2 ** 3 05:09:41 8.0 05:09:49 what the hell does three asterisks denote? 05:09:54 Typos. 05:10:06 A thing with functions on tuples. 05:10:15 oh. i was hoping tetration for shits/giggles 05:10:25 > (+1) *** (*2) $ (8,5) 05:10:26 :t (***) 05:10:26 (9,10) 05:10:27 Arrow a => a b c -> a b' c' -> a (b, b') (c, c') 05:11:18 > (f *** g) (x,y) -- better 05:11:20 Ambiguous type variable `c0' in the constraints: 05:11:20 (GHC.Show.Show c0) 05:11:20 ... 05:11:26 oh no 05:11:32 you're doing that just to amuse me, correct 05:11:34 > (f *** g) (x,y) :: (Expr,Expr) 05:11:34 > 1221/111 05:11:35 (f x,g y) 05:11:36 11.0 05:11:37 :(t ****) 05:11:43 wow, what was that, me. 05:11:43 :(t 05:11:48 :t (****) 05:11:49 Not in scope: `****' 05:11:49 Perhaps you meant one of these: 05:11:49 `***' (imported from Control.Arrow), 05:11:49 ...it's some weird elementary school division symbol 05:11:55 ÷ 05:12:02 :t ÷ 05:12:02 fd:9: commitBuffer: invalid argument (invalid character) 05:12:08 bull shit 05:12:10 Bike: no, not that. on the clock. 05:12:14 ÷ works fine except that lambdabot is broken. 05:12:46 Ok, I can't get the thing at position 11 on that clock to actually equal 11 with either obvious interpretation 05:12:48 I think I've seen that clock 05:12:52 hi 05:12:59 oh was the clock linked in here 05:13:04 I guess i'll see if I've seen it 05:13:05 anyway, sgeo, obviously the point is to give it to math majors so that you can watch them explode atchu 05:13:33 > let f g x = g (g x) in f f f f (+1) 0 05:13:34 65536 05:13:38 > let f g x = g (g x) in f f f f f (+1) 0 05:13:40 *Exception: stack overflow 05:13:41 ...oy 05:13:42 Sgeo|web: i said it's a weird division symbol 05:13:43 *oh 05:13:58 Right, the thingy for long division 05:13:59 derp 05:14:21 explode in what sense 05:14:25 I should learn to pay attention 05:14:46 But 3(pi - .14) != 9 05:15:07 monqy: the sense ending with you covered in principia mathematica symbology written in blood 05:15:08 > 3(pi - 0.14) 05:15:10 3 05:15:18 oh i havent seen that clock 05:15:20 what now sgeo 05:15:21 but i've seen another clock 05:15:37 people also buy Math Jokes 4 Mathy Folks [Paperback] 05:15:37 > pi 05:15:39 3.141592653589793 05:15:52 oh, parse thing. 05:15:58 Oh, I see what shachaf did 05:16:11 > 3 0 05:16:13 3 05:16:46 «Some philosophers might take issue with such a Platonist view of the world - this belief in an absolute and eternal reality beyond human existence - but to my mind that is what makes them philosophers and not mathematicians 05:16:52 The scary thing is that it shouldn't even LOOK like multiplication to our eyes in that context but it does 05:17:03 why shouldn't it? 05:17:04 i'm going to find some math jokes in this book 05:17:07 watch out, mathy folks 05:17:30 Bike: because Haskell doesn't have a thing where things next to eachother like that is multiplication 05:17:39 What's the difference between an economist and a confused old man with Alzheimer's? 05:17:56 obviously, but it's close enough 05:17:58 monqy: BEATS ME 05:17:59 The economist has a calculator. 05:18:30 Bike: Haskell has a thing where "x y" means "x" 05:18:32 > 1 2 05:18:34 1 05:18:35 > 1 "hello" 05:18:36 1 05:18:39 > pi 8 05:18:41 3.141592653589793 05:18:46 > pi 1 2 3 4 "hello" 05:18:48 3.141592653589793 05:18:49 > 7 8 9 05:18:50 7 05:18:52 is that actually a haskell thing or is it a parse thing, because i'm used to parsers giving up like that 05:19:01 also i didn't need five examples but thanks 05:19:05 It's a misleading lambdabot thing. 05:19:14 makes more sense 05:19:15 ps why does lambdabot have that thing 05:19:22 Actually "x y" means what "x(y)" usually means. 05:19:31 monqy: because cale. dont ask questions monqy!!!!! 05:19:38 because pointwise arithmetic is useful, in principle 05:19:42 monqy: Caleskell confuseth 05:19:48 «No instance for (Num (t -> t1)) arising from the literal `3' at :1:0-2» bullshit 05:19:54 :t (.) 05:19:55 Functor f => (a -> b) -> f a -> f b 05:19:56 remember when caleskell had a funky type signature for flip, and (.) was fmap 05:20:01 @ty (.) 05:20:02 actually can you have functions named 3 05:20:03 Functor f => (a -> b) -> f a -> f b 05:20:04 øh nø 05:20:05 oh it's still fmap....... 05:20:06 i would like that 05:20:09 :t flip 05:20:09 :t flip 05:20:10 monqy: Still is! 05:20:10 (a -> b -> c) -> b -> a -> c 05:20:11 (a -> b -> c) -> b -> a -> c 05:20:15 at least they fixed flip 05:20:15 Bike: Yes. 05:20:20 happy birthday ada byron? 05:20:20 rad 05:20:25 3 actually means "fromInteger (3::Integer)" 05:20:51 :t fromInteger 05:20:52 Num a => Integer -> a 05:21:03 so, it's just a thunk that returns 3. 05:21:17 ...that's not the point. 05:21:29 ? 05:21:50 > (3 :: Double, 3 :: Int, 3 :: Complex Float) 05:21:51 (3.0,3,3.0 :+ 0.0) 05:21:59 ok, 3 as an integer? 05:22:11 instance Num MyValue where fromInteger :: Integer -> MyValue; fromInteger x = whatever 05:22:23 no, as whatever type you want 05:22:26 > 1 2 05:22:27 Could not deduce (GHC.Num.Num (a0 -> t)) 05:22:27 arising from the ambiguity chec... 05:22:35 then what's with the ::Integer in shachaf's type signature 05:22:39 :t 3 05:22:40 Num a => a 05:22:48 Bike: (3::Integer) is my special syntax for the Integer value 3. 05:23:03 Which isn't polymorphic or anything. It's just an integer. 05:23:13 that is what i assumed 05:23:23 @ty (3::Integer) 05:23:24 Integer 05:23:25 @ty 3 05:23:26 Num a => a 05:23:27 i'm pretty confused right now because i thought things made sense and then they didn't 05:24:09 Bike: Basically, you can define an unusual instance of Num and get functions out. 05:24:13 maybe learning haskell from a brainfuck derivative/glasswork channel was a mistake. 05:24:42 Wait, which channel are you talking about? 05:24:43 Bike: basically, 3 means you expect it to when you use it as an Integer. for any other type, it gets converted with fromInteger. 05:24:57 this channel. jokingly. 05:25:11 because it's nominally about esoteric languages and more often about lenses. 05:25:14 this is not _necessarily_ a thunk, since it could be done at compilation. 05:25:36 oerjan: i can't parse "means you expect it to". means you expect it to what? 05:25:45 oops 05:25:50 *means what you 05:26:13 @ty pi 05:26:14 Floating a => a 05:26:25 @ty a 05:26:26 Expr 05:26:38 Hmm. 05:26:57 This person in #haskell decided that https://en.wikipedia.org/wiki/Monad_(functional_programming) should be their introduction to Haskell. 05:26:58 so, 3 as a literal is "polymorphic"? for what i imagine is a different definition of "polymorphic" than i remember from C++ in 21 Days 05:27:15 Yes, 3 is polymorphic. 05:27:20 shoulda been Monad_(category_theory) 05:27:23 and ok cool 05:27:39 is literal 3.0 polymorphic? 05:27:46 @ty 3.0 05:27:46 Yes, but less so. 05:27:47 Fractional a => a 05:27:54 (Unless you use the GHC extension I wrote!) 05:27:58 (Which might be in 7.8?) 05:28:00 Only morphs to types of floats? 05:28:11 Fractional. 05:28:13 wow, what a badly constructed thought that was 05:28:17 Floating points are the devil. 05:28:19 you can use it as a ratio? 05:28:35 > 3.0 :: Rational 05:28:36 3 % 1 05:28:54 boy, i hope i can look forward to a generation of programmers using float syntax and thinking accurately that they have a rational 05:28:54 that's the fundamental meaning, everything else is converted from that type 05:29:03 Floats are the devil, and should not be considered numbers. 05:29:12 That's not float syntax, Bike. 05:29:18 That's decimal syntax. 05:29:22 well, in programming it usually is. 05:29:37 There are many well-behaved types that can express 3.1. 05:29:44 Floating point values are not among them. 05:29:48 i am aware 05:29:52 > x-- // decrement x 05:29:53 x 05:30:01 now x is decremented 05:30:11 i'm just imagining someone arguing bout using 3.0 in a non-haskell program and insisting that it's accurate 05:30:24 0.1 does not have an exact representation as a float. Joy. 05:30:51 > x++//increment x 05:30:53 what if it's a base ten float, eh, don't be so computerbound! 05:30:53 x + 1 05:31:12 Bike: Floats are computerbound. 05:31:20 > --x 05:31:21 "cerebro" 05:31:21 not an expression: `--x' 05:31:22 I don't deal in base 10. 05:31:46 not necessarily, you'd just have to be entertainingly nuts to use floats outside of 'em 05:31:51 But all bases are base 10 05:32:06 Not true. 05:32:24 mm? 05:32:30 2i ? 05:32:42 what would "all bases are base 10" even mean 05:32:53 Sgeo|web: Not if you follow Postel's Law. 05:33:25 monqy: are you going to learn lens on 12-12-12 05:33:31 For any base b, the string "10" in that base represents b. (Might not be true for all bases, but surely for base two, ten, sixteen, etc) 05:33:33 shachaf: maybe 05:33:52 we won't know until then now will we ! 05:33:58 boring 05:34:13 shachaf: no, he'll learn it on 12-21-12, which will cause the end of the world. 05:34:24 lol 05:34:30 oerjan: edwardk's talk is on 12-12-12 05:34:36 "10" in base 2i is 2i 05:34:37 ah. 05:34:39 So, no problems there 05:35:05 what about base 1 05:35:20 what about base balanced ternary!! 05:35:38 Is base 1 even a base? 05:35:43 balanced ternary is fine 05:35:44 `run allquotes | grep Jafet 05:35:44 now i want to go read taocp2 again, thanks shachaf 05:35:44 I'll grant balanced ternary 05:35:46 835) I wonder if Red Alert 4 will use MMIX \ 860) The world needs better healthcare, social justice and wealth distribution, but a monads library for clojure surely won't hurt 05:35:50 Sgeo|web: it's unary. tallymarks. 05:36:09 oerjan: I suppose that's still 3. 05:36:21 Bike: I haven't read any of it! 05:36:22 Should I? 05:36:27 it's pretty rad 05:36:33 Also should I go to http://www-cs-faculty.stanford.edu/~uno/musings.html on Friday? 05:36:35 maybe you should wait for knuth to slightly unfuck his language though 05:36:35 now fibonacci base may have some trouble there 05:36:49 anyway i mention it because he goes into floats 05:36:50 10 is probably 2, i guess 05:36:57 lots of fun stuff, like how they're not associative or whatever 05:37:04 or even commutative? i forget 05:37:11 They're nothing desirable. 05:37:34 well, they're useful in many contexts, just, as long as you know they're approximate 05:37:36 Is base 1 even a base? <-- could be a problem with the notification of zero 05:37:44 which most people don't 05:37:46 so 05:37:51 ieee floats are commutative, afair 05:38:09 What's commutative? 05:38:17 does that include snans and infinities, i wonder 05:38:22 x+y = y+x, x*y = y*x 05:38:29 OK, so both + and * 05:38:40 (i was about to change = to == until i remembered nan :P) 05:38:41 Hmm, that's unexpected. 05:39:19 -!- SingingBoyo has joined. 05:39:27 s/afair/iiuc/ 05:39:39 shouldn't leave the impression i actually read the standard 05:40:04 Not associative though. 05:41:19 i think that having addition be both commutative, associative and satisfy x+(-x) = 0 on a finite set of representations basically means you _must_ wrap around at some point. 05:41:36 *all of 05:42:19 Associativity is way more important than commutativity. 05:43:14 or even with just associativity, 1+1+1+1+...+1 must repeat at some point. 05:43:29 wait, who needs associativity, even. 05:44:04 1+(1+(1+(...))) must repeat at some point, given a bounded size representation. 05:46:38 for ieee, that presumably happens once you reach 1+x == x by rounding. 05:47:26 while things like Word32 can wrap around back to 0 05:48:58 if you have the property (-1)+(1+x) == x for all x, then you are guaranteed wraparound to the beginning. 05:49:35 "Many serious mathematicians have attempted to analyze a sequence of floating point operations rigorously, but have found the task so formidable that they have tried to be content with plausibility arguments instead." knuth you're not helping 05:49:36 C int never repeats 05:50:14 shachaf: ok i guess undefined behavior also works 05:54:25 hm, we do have ((u+v)-u)+((u+v)-((u+v)-u)) = u+v I guess 05:54:31 that's pretty much as good as associativity, right 05:54:53 we do? 05:55:03 -!- augur has joined. 05:55:17 @check \u v -> ((u+v)-u)+((u+v)-((u+v)-u)) == u+(v::Double) 05:55:19 Not in scope: `myquickcheck' 05:55:41 according to knuth. the proof's maybe a paragraph if you want me to dump it. 05:56:23 What does check do? 05:56:33 crashes horribly 05:56:46 I thought that was just lambdabot messing with shachaf. 05:56:48 -!- augur has quit (Read error: Connection reset by peer). 05:56:54 @check \u v -> ((u+v)-u)+((u+v)-((u+v)-u)) == u+(v::Double) 05:56:56 Not in scope: `myquickcheck' 05:57:00 -!- augur has joined. 05:57:01 OR WITH EVERYONE 05:57:05 -!- augur has quit (Read error: Connection reset by peer). 05:57:08 When it's not broken, @check will generate random inputs and check that your thing holds. 05:57:12 Lambdabot, you should be a bit nicer. 05:57:20 Golly, that doesn't seem that rigorous. 05:57:28 -!- augur has joined. 05:57:44 Bike: Good enough for programmers, right? 05:57:53 damn straight 05:58:34 it's good for that "not obviously false" feeling 06:00:15 also for that "obviously false" feeling, in other cases 06:00:40 (oh my poor ZipList Monad ;_;) 06:00:40 That feeling is good. 06:01:16 the other is false 06:01:49 > (\u v -> ((u+v)-u)+((u+v)-((u+v)-u))) (3.79::Double) (14::Double) 06:01:50 17.79 06:02:07 > (\u v -> ((u+v)-u)+((u+v)-((u+v)-u))) (-4818::Double) (.3::Double) 06:02:08 :1:58: parse error on input `::' 06:02:08 @ty obviously good 06:02:09 Not in scope: `obviously' 06:02:09 Not in scope: `good' 06:02:16 ok 06:02:56 i think one success and one parse error counts as a proof 06:03:14 -!- FreeFull has quit. 06:03:38 relatedly, haskell doesn't allow .whatever, huh. 06:03:56 .whatever is evil. 06:04:12 are you some kind of decimal paladin, shachaf 06:04:56 > (\u v -> ((u+v)-u)+((u+v)-((u+v)-u))) (-4818::Double) (0.3::Double) anyway this one works too 06:04:58 Not in scope: `anyway'Not in scope: `this'Not in scope: `one' 06:04:58 Perhaps you ... 06:05:08 The Decimal Paladin 06:05:10 or would if i understood how lambdabot's parsey cutoff thing wored, which I don't. 06:05:11 Base ten a true story. 06:05:17 for a certain value of works. 06:05:27 Bike: It doesn't actually do a cutoff thing. 06:05:28 considering what "decimate" means it's appropriate, I think 06:05:29 At all. 06:05:45 So what's with the > 3 4 thing. 06:05:57 > (\u v -> ((u+v)-u)+((u+v)-((u+v)-u))) (-4818::Double) (0.3::Double) -- sing a song 06:05:58 -4817.7 06:05:59 > 3 4 06:06:01 Could not deduce (GHC.Num.Num (a0 -> t)) 06:06:01 arising from the ambiguity chec... 06:06:02 Bike: that's not parsing, that's type hackery 06:06:04 nothin' 06:06:10 It doesn't work. 06:06:21 > 3 4 06:06:22 Could not deduce (GHC.Num.Num (a0 -> t)) 06:06:22 arising from the ambiguity chec... 06:06:29 what did shachaf do now. 06:06:30 well, i'm confused now, but it's a lambdabot confusion and not a haskell confusion, so i'm gonna go ahead and not care 06:06:45 Bike: I got Cale to change it back to normal. 06:06:52 So now lambdabot is just a little more normal. 06:06:57 :t (.) 06:06:58 Functor f => (a -> b) -> f a -> f b 06:07:02 Not *that* much, oerjan. 06:07:03 a _little_. 06:07:28 so, why's this channel use such an apparently weird evalbot (speaking of which i thought dot was compose, why would it be fmap) 06:07:49 * oerjan belatedly swats shachaf for the base ten pun -----### 06:08:33 oerjan: Whew. 06:08:44 Bike: fmap = (.) for functions. 06:09:00 Bike: Mapping a function over the result of another function is like composing the two functions. 06:09:00 so it's a simple generalization. 06:09:08 simple AND WRONG 06:09:22 ugh, and here i was thinking i almost maybe understood functors 06:10:15 "(((u+v)-v)+v)-v = (u+v)-v" anyway all of knuth's identities here kind of suck 06:11:11 Bike: just wait until you learn how functions are a Monad. 06:11:13 oh, and that's only even valid for certain rounding modes. lovely. 06:11:40 they're monads because they're functors and they form a monoid, right 06:11:58 ... 06:12:11 MAYBE 06:12:17 look when i say something stupid you can say "that's fucking stupid", it'll do me more good than some ellipses 06:12:24 O KAY 06:12:30 thanks oerjan 06:12:51 -!- TeruFSX has quit (Quit: Leaving). 06:13:25 > (do x <- sin; y <- cos; return (x^2+y^2)) 42 06:13:27 1.0 06:14:14 any particular reason you wrote that as a sequence instead of just an expression? 06:15:48 Do demonstrate what was going on with (r ->) 06:15:52 > liftM2(+)((^2)<$>sin)((^2)<$>cos) 42 -- OKAY 06:15:53 1.0 06:15:59 s/D/T/ 06:16:36 i was just wondering if using the extra variables was supposed to fuck up accuracy or something 06:17:03 this was not a float demonstration, it was a function monad demonstration. 06:17:36 oh, wow. i really fucked that up! 06:18:02 > (sin >>= \x -> cos >>= \y -> return (x^2+y^2)) 42 -- see, it's much clearer if you don't involve a "do" in it 06:18:03 1.0 06:20:25 -!- Sgeo|web_ has joined. 06:20:33 muh, in local ghci the do thing doesn't work, says functions aren't a monad I think 06:20:44 :m + Control.Monad.Instances 06:20:47 Also upgrade your GHC 06:21:31 oh my, it's a full version number behind the one y'all yelled at gregor bout earlier. 06:21:34 alt. use Reader 06:21:41 "same thing" 06:21:42 -!- Sgeo|web has quit (Ping timeout: 245 seconds). 06:22:38 monqy: "not the same thing" 06:22:47 "almost the same thing" 06:23:05 or are you doing something wacky here...... 06:23:33 "The Monad.Reader is an electronic magazine about all things Haskell. It is less formal than journal, but more enduring than a wiki-page or blog post" cool 06:25:06 -!- Yonkie has joined. 07:28:09 -!- epicmonkey has joined. 07:31:59 -!- oklopol has joined. 07:51:01 > (1 - 1e-18) ** 6e16 07:51:03 1.0 07:51:20 > exp (- 6e16 * 1e-18) 07:51:21 0.9417645335842487 07:56:50 -!- Arc_Koen has quit (Quit: Arc_Koen). 08:11:00 -!- Nisstyre-laptop has quit (Ping timeout: 264 seconds). 08:11:53 -!- Yonkie has quit (Ping timeout: 252 seconds). 08:12:18 -!- epicmonkey has quit (Ping timeout: 250 seconds). 08:23:02 -!- GreyKnight has joined. 08:25:45 http://www.undefined.net/1/0/?strip=562 08:25:49 No he wouldn't. 08:26:05 A spiral pattern that,,, also... has another form of movement 08:26:12 Should be sufficient for him to escape eventually 08:26:46 Hmm, although might be difficult to do that while panicky and scared and no reference points 08:28:19 So he could escape as long as the featureless white plain has a feature on it? :v 08:29:58 The idea is that he would go down into it to see how far down it goes 08:30:40 I was just wondering if I might've misread 08:30:59 So you mean *moving* in a spiral 08:31:08 (In fact you even used the word "movement") 08:31:37 yes 08:31:40 * GreyKnight swats himself -----### 08:31:42 living humans have trouble walking in a straight line without a reference point. 08:32:03 But if the spiral happened to be horizontal, it wouldn't work, so would also need... another direction of movement too 08:32:19 so what you're saying is he needs to ballet through hell. 08:32:25 he wouldn't have a way of ensuring that he was actually moving in a spiral. 08:32:27 -!- nooga has joined. 08:33:13 otoh pure random movement _should_ get him back to the surface eventually :P 08:34:10 living humans are bad at randomness too! gosh, we're so incompetent. 08:34:14 "You'll probably get back in finite time! What are you complaining about?!" 08:34:23 What a whiner :v 08:34:46 The character was never human. 08:34:51 Not that that necessarily helps 08:35:00 wait shit wasn't he an electron 08:35:07 they're not half bad at random 08:35:24 Looks like we have a winning plan 08:35:40 GreyKnight: Uh... oerjan does the swatting around here. 08:36:17 Bike: a molecule 08:36:35 * GreyKnight cattle-prods shachaf -----*** 08:36:49 hm, i wonder. in three dimensions random motion will get you away and all, but what about the direction? if hell extends infinitely downwards would he still be stuck there forever? 08:40:53 Help I'm readdicted to 1/0 08:40:58 random motion will get you back along any one or two axes, so he should get back to the surface. 08:41:30 although probably not at the same point, but he can just go randomly along the surface. 08:41:38 *then he can 08:41:54 Thus reducing the problem to a 2D random walk :-) 08:42:18 -!- GreyKnight has quit (Quit: brb). 08:42:25 Sgeo|web_: I was getting addicted to not knowing what you were addicted to. 08:42:28 but then he'll return to his starting point! 08:42:29 But now I'm having withdrawal. 08:42:46 Bike: i thought that was the idea 08:42:56 I mean, his starting point for eruption from the surface. 08:43:10 sure, as well as to any other point on the surface. 08:43:23 bah. 08:43:28 he should just fly up and look. 08:43:31 fwiw, there's a large dead bear that's been converted into dirt on the surface 08:43:40 ...that sounds like a better idea XD 08:43:55 dead bears are always a good idea. 08:43:58 -!- GreyKnight has joined. 08:44:32 Sgeo|web_: so you thought you'd come and get us (re)addicted too? THANKS 08:45:32 : ) 08:45:42 obviously what we need is tailsteak's hamsteaks fanart instead 08:48:28 :t 1 / 0 08:48:30 Fractional a => a 08:50:00 > signum 1/0 08:50:02 Infinity 08:50:16 unhelpful. 08:50:22 precedence 08:50:49 > signum (1/0) 08:50:50 1.0 08:51:04 that seems bad. 08:51:17 :t signum 08:51:19 Num a => a -> a 08:51:25 i'd assume that's correct ieee behavior? 08:52:33 hm, so it is. bother bother 08:52:42 > signum 1 08:52:43 1 08:52:57 So it goes to float because of the infinity? 08:53:07 no, because of the / 08:53:11 :t signum (1/0) 08:53:12 Fractional a => a 08:53:20 > signum (-1/0) 08:53:22 -1.0 08:53:27 is that a float? i thought i just learned it was just a rational 08:54:18 > (0 :+ 1) / 0 08:54:20 NaN :+ NaN 08:54:24 > signum(2/2) 08:54:26 1.0 08:54:31 Hm! 08:54:35 it's a Double. Rational is just the type used for interpreting decimal notation _before_ converting it to the actual type. 08:54:44 botheration. 08:54:55 > (1 :+ 1) / 0 08:54:55 > 2/2 08:54:56 NaN :+ NaN 08:54:57 can't find file: L.hs 08:55:10 wat 08:55:19 L is so overrated 08:55:23 the default default declaration is "default (Integer, Double)" 08:55:26 > signum NaN 08:55:28 Not in scope: data constructor `NaN' 08:55:45 > map signum [1/0, -1/0, 0/0, -0/0] 08:55:46 [1.0,-1.0,-1.0,-1.0] 08:55:47 except sometimes it's "default ((), Integer, Double)" 08:55:52 > 2 / 2 08:55:54 1.0 08:56:00 Oh, there we go 08:56:12 Hm I hadn't expected that 08:56:14 > signum (-0/0) -- negative 1, hopefully 08:56:16 -1.0 08:56:20 woo 08:56:27 that L.hs message is essentially just a lambdabot race condition of some sort. 08:56:32 (Well, I had after the discussion above, but not previously) 08:56:36 > signum (1/-0) 08:56:38 Not in scope: `/-' 08:56:38 Perhaps you meant one of these: 08:56:38 `-' (imported from P... 08:56:43 > signum (1/ -0) 08:56:43 Hah. 08:56:45 Precedence parsing error 08:56:45 cannot mix `GHC.Real./' [infixl 7] and prefix... 08:56:49 > signum (1/ (-0)) 08:56:51 -1.0 08:57:48 wait, nan's have well-defined signs? 08:58:01 -!- copumpkin has quit (Quit: Computer has gone to sleep.). 08:58:21 don't think so? 08:58:42 Yes, NaNs have a sign bit. 08:58:51 Yep 08:59:00 :t / 08:59:02 parse error on input `/' 08:59:04 IEEE nans do have signs. 08:59:06 :t (/) 08:59:07 Fractional a => a -> a -> a 08:59:09 Oops 08:59:10 Alas, 0/0 seems to produce a negative NaN. 08:59:22 Whether it's "well-defined" is another matter. 08:59:28 > signum (0/0) 08:59:29 -1.0 08:59:45 it's conceivable it is comparing it to 0 in haskell 08:59:59 rather than using whatever the C function is 09:00:20 copysign. 09:00:24 signbit. 09:00:44 @src RealFloat 09:00:44 Source not found. I feel much better now. 09:00:52 Okay, so 2/2 evaluates to a Fractional because Haskell doesn't want to have two possible result types for (/) 09:00:57 -!- Bike has quit (Quit: leaving). 09:01:01 Well, either. 09:01:02 But signbit seems to give 128 for both 0.0/0 and -0.0/0 here. 09:01:27 GreyKnight: um Fractional isn't a type, it's a type class. there are several types it can give. 09:01:51 Er right 09:01:57 This is the best type class: 09:01:58 @src Real 09:01:58 class (Num a, Ord a) => Real a where 09:01:58 toRational :: a -> Rational 09:02:02 (Told you I wasn't very good at Haskell :v) 09:02:03 Isn't it great? 09:04:43 I am just trying to figure out why 2/2 doesn't end up as an integer 09:05:09 because Integer isn't a member of the Fractional type class 09:05:09 Because of the type of (/) you looked at earlier. 09:05:14 And that. 09:05:35 > 2 `div` 2 09:05:36 1 09:05:43 that's integral division 09:06:07 > 2 `quot` 2 09:06:09 1 09:06:13 That's faster in general 09:06:15 > 2 `quot` 2 -- or this, different on ne... dammit Deewiant 09:06:16 1 09:06:32 Okay, so I was on the right track, just s/type/type class/ :-P 09:06:33 ...gative numbers. 09:07:41 making things polymorphic over different number types was one of the main original reasons type classes were invented. then they found fancier uses. 09:11:46 0xffffffff is the NaNniest (single-precision) NaN. 09:11:50 (It's also negative.) 09:12:12 elliott: monqy Fiora 09:12:30 Do you people even read that thing? 09:12:42 Sgeo|web_: Sgeo|web_ Sgeo|web_ 09:14:12 -!- Yonkie has joined. 09:15:24 For the record, at least my ghci's signum does not actually look at the sign bit; http://sprunge.us/eUPP -- all NaNs are negative. 09:16:25 signum x | x == 0.0 = 0 | x > 0.0 = 1 | otherwise = negate 1 09:16:30 Good old GHC. 09:16:50 fizzie: Methinks you're doing it wrong, or then my libc is also doing it wrong. 09:17:19 That's the Report's definition, of course. 09:17:45 fizzie: Scratch that, I was doing it wrong. 09:19:44 Deewiant: http://sprunge.us/hfiP -- it even prints as -nan. 09:20:02 Yes, I was doing it wrong. 09:20:39 Using 'unsigned long long' like that is also doing it somewhat wrong, though it doesn't seem to matter there. 09:21:19 -!- GreyKnight has quit (Quit: bbl). 09:22:39 What else except the usual things (not exactly defined representations for either unsigned long long or double) is wrong with it? 09:23:17 (I would've used uint64_t but was writing it in cat > tmp.c and hadn't remembered to #include .) 09:24:09 Hmm, I thought at least C11 would've mandated IEEE 754 but I guess not. 09:24:26 -!- epicmonkey has joined. 09:24:50 In that case it's a crapshoot anyway. I thought 'double' would be guaranteed 64 bits. 09:24:55 -!- epicmonkey has quit (Remote host closed the connection). 09:25:32 I *could've* added #ifndef __STDC_IEC_559__ #error "uh what are you *on* there?" #endif to it. 09:26:12 You still need uint64_t, making sure its sizeof is 8 and CHAR_BIT is 8. 09:26:37 I don't think I need those last two. 09:26:42 Or I guess you can be CHAR_BIT agnostic as long as uint64_t is an exact multiple of it. 09:26:54 Doesn't that avoid padding bits? Or are those included in CHAR_BIT. 09:27:16 uint64_t cannot have padding. 09:27:31 Oh, that's mandated? Well that's convenient. 09:27:37 If it exists at all, it must be a multiple of CHAR_BIT. 09:27:44 It's not mandated to exist, though. :p 09:28:02 Right, but if it doesn't it's a compilation error so that's fine. 09:28:24 I also don't think even __STDC_IEC_559__ mandates that byte order needs to be the same for 'double' and 'uint64_t', which would be an issue for the few systems where CHAR_BIT < 64. 09:28:51 -!- Yonkie has quit (Ping timeout: 276 seconds). 09:30:00 'double' in that case has a known order, though, so you just need to write your integer rightly. 09:31:56 (Two's-complement is also mandated for the fixed-width intN_t, for the record.) 09:34:50 -!- Yonkie has joined. 09:35:27 "The coin toss is the most platykurtic distribution" -- that's an awesome word. 09:35:57 Platykurtic vs. leptokurtic. 09:37:14 Platykurtic platypus. (An Ubuntu code name?) 09:37:27 vote for ubuntu, let's submit idea to them 09:37:38 Maybe for their next go-around; they already did a P. 09:40:15 Hrm. I reloaded the webmail, and the page was replaced by an otherwise-empty page except for the words "The custom error module does not recognize this error." 09:44:51 Help I slept for around 8 hours during the day and I can't seem to fall asleep now 09:45:10 Although I have a 4 page essay due on Tuesday and had plans to spend Monday working on it 09:48:04 -!- oerjan has quit (Quit: Sleep? What a ridiculous concept.). 09:55:52 -!- epicmonkey has joined. 09:57:06 -!- epicmonkey has quit (Remote host closed the connection). 10:07:31 sgeo: you could start working on it now, till you get tired 10:08:05 the best method to get sleepy is still to try staying awake 10:12:31 -!- epicmonkey has joined. 10:13:00 -!- epicmonkey has quit (Remote host closed the connection). 10:29:06 -!- micahjoh1ston has joined. 10:29:09 -!- nortti_ has joined. 10:29:23 -!- elliott_ has joined. 10:31:51 -!- augur_ has joined. 10:34:02 -!- augur has quit (*.net *.split). 10:34:02 -!- ion has quit (*.net *.split). 10:34:02 -!- elliott has quit (*.net *.split). 10:34:02 -!- nortti has quit (*.net *.split). 10:34:02 -!- micahjohnston has quit (*.net *.split). 10:41:20 -!- ion has joined. 10:43:07 -!- epicmonkey has joined. 10:44:57 -!- epicmonkey has quit (Remote host closed the connection). 10:49:00 -!- copumpkin has joined. 10:55:04 -!- epicmonkey has joined. 11:06:02 -!- evitable has joined. 11:11:50 -!- yiyus_ has changed nick to yiyus. 12:06:54 -!- Jafet has quit (Ping timeout: 240 seconds). 12:07:22 -!- Jafet has joined. 12:19:13 @tell zz038 Remember when you wanted { union { float f; unsigned u; }; f = 1.0f; dosomething(u); } be valid C, or at least a GCC extension? Turns out it in fact *is* valid C++. 12:19:13 Consider it noted. 12:20:06 fizzie: It is? 12:21:16 It is. 12:21:28 -!- nortti_ has changed nick to nortti. 12:22:09 "An union of the form [thing like that] is an anonymous union. -- For the purposes of name lookup, the members of the anonymous union are considered to have been defined in the scope in which the anonymous union is declared." 12:22:14 (C++03.) 12:22:52 Oh, I thought you meant using one value of the union after setting a different one. 12:23:06 It even gives an example of void f() { union { int a; char *p; }; a = 1; p = "Jennifer"; } "Here a and p are used like ordinary (nonmember) variables, but since they are union members they have the same address." 12:24:00 No, just the scoping; but using one value after setting a different one is legal C99 and C11, assuming reinterpreting the representation does not end up with a trap representation. (Don't know about C++ in that case.) 12:27:00 (Ref. C11 footnote 95: "If the member used to read the contents of a union object is not the same as the member last used to store a value in the object, the appropriate part of the object representation of the value is reinterpreted as an object representation in the new type as described in 6.2.6 (a process sometimes called ‘‘type punning’’). This might be a trap representation." ... 12:27:06 ... Footnotes are non-normative, but the footnote is the only thing they added (in C99 TC-something, I think), so clearly they believe it's already deducible from the normative text. C99 did remove the explicit mention of it being undefined that C89 had.) 12:27:52 Oh, C89 is the one true C. 12:29:10 shachaf: http://www.iso.org/iso/catalogue_detail.htm?csnumber=17782 "Status: X Withdrawn" 12:29:35 shachaf: no, k&r c is 12:30:13 -!- SingingBoyo has quit (Ping timeout: 248 seconds). 12:31:18 -!- epicmonkey has quit (Ping timeout: 264 seconds). 12:33:03 Maybe I should clarify, though. 12:33:08 @tell zzo38 That is, the name lookup is done the way you wanted, with the members being considered defined in the scope in which the union is declared. I have not checked whether C++ makes it undefined to read an union member that was not the one last written to. 12:33:09 Consider it noted. 12:38:06 -!- Sgeo|web has joined. 12:41:18 -!- Sgeo|web_ has quit (Ping timeout: 245 seconds). 12:45:47 -!- epicmonkey has joined. 12:54:57 -!- sebbu has quit (Read error: Connection reset by peer). 12:55:26 -!- sebbu has joined. 12:56:57 -!- boily has joined. 13:01:32 -!- carado has joined. 13:33:59 -!- ion has quit (Ping timeout: 240 seconds). 13:34:42 -!- ion has joined. 13:50:40 -!- variable has quit (Ping timeout: 240 seconds). 13:51:09 -!- variable has joined. 14:01:35 -!- augur_ has quit (Remote host closed the connection). 14:29:18 -!- epicmonkey has quit (Ping timeout: 252 seconds). 14:32:19 -!- augur has joined. 14:55:16 -!- evitable has quit (Ping timeout: 245 seconds). 15:24:23 -!- FreeFull has joined. 15:27:14 -!- Taneb has joined. 15:27:40 Help 15:27:40 Sugar 15:27:40 Aaah 15:27:45 hi 15:31:39 -!- ogrom has joined. 15:31:57 But yeah, I've had about 120% of my recommended daily sugar intake in the past 5 minutes 15:34:14 And I'm not good at sugar 15:34:28 why did you do a thing like that 15:34:52 I really fancied some coke 15:35:16 And now this 1.5L bottle is 2/3 empty 15:35:31 * Fiora prepares the insulin shots 15:37:10 I probably ought to modernize the family-tree library I wrote 15:37:57 It uses data-lens 15:39:42 Except I don't have Cabal here 15:40:26 I've heard there is no cabal. 15:40:57 Which will certainly explain why it isn't here 15:41:10 Oh no 15:41:17 It's going to get creepy here soon 15:41:26 Like, deserted school creepy 15:43:16 -!- mroman has quit (Ping timeout: 240 seconds). 15:43:19 -!- Sgeo|school has joined. 15:43:23 -!- mroman has joined. 15:43:35 I'm suddenly having visions of code I write being used by tryclj.com 15:44:07 Sgeo|school joins and immediately says something about clojure 15:44:08 take a shot 15:44:23 kmc, but I've already had too much coke! 15:44:30 And I don't have a shot glass 15:44:36 alcohol balances out sugar/caffeine, everyone knows that 15:44:42 [nb: not actually true] 15:46:12 if my experience generalizes I can imagine you conking out in about 1 hour :P 15:46:24 (due to sugar) 15:46:42 Okay, that will give me 17 minutes to wake up again 15:47:15 -!- elliott_ has changed nick to elliott. 15:49:54 Gregor: hi, ping 15:51:24 -!- Sgeo|school has quit (Quit: Page closed). 15:53:50 -!- elliott has set topic: apparently people did dumb things to the topic so here's a new one http://codu.org/logs/_esoteric/. 16:00:36 -!- FreeFull has set topic: apparently people did dumb things to the topic so here's a new one | Why not just have +t | http://codu.org/logs/_esoteric/. 16:07:52 -!- elliott has set topic: apparently people did dumb things to the topic so here's a new one http://codu.org/logs/_esoteric/. 16:08:18 `run echo -e '\00314test' 16:08:20 ​4test 16:08:26 `run echo -e '\003 14test' 16:08:27 ​ 14test 16:08:35 `run echo -e '\e14test' 16:08:36 ​14test 16:08:39 hm what is ^C 16:09:33 3 according to a thing i found online 16:11:06 how'd i do \003 without the 1 getting included after tho 16:11:10 if only this was haskell and i had \& 16:11:27 oh 16:12:23 `run echo -e '\000314test' 16:12:24 ​test 16:12:30 cheating 16:12:31 & thx 16:16:27 http://www.extremetech.com/computing/142881-ibm-creates-first-cheap-commercially-viable-silicon-nanophotonic-chip hmm, nanophotonics 16:17:33 > 1 :: (Int,Int) 16:17:34 No instance for (GHC.Num.Num (GHC.Types.Int, GHC.Types.Int)) 16:17:34 arising fro... 16:17:51 was did there used to be an instance 16:18:36 yes 16:21:44 > (1,1) :: (Int,Int) 16:21:46 (1,1) 16:23:10 yes 16:26:08 `run hg diff -c 1002 | patch 16:26:12 patching file quotes \ Reversed (or previously applied) patch detected! Assume -R? [n] \ Apply anyway? [n] \ Skipping patch. \ 1 out of 1 hunk ignored -- saving rejects to file quotes.rej 16:26:22 right 16:26:24 `rm quotes.rej 16:26:27 No output. 16:26:28 `run hg diff -c 1002 | patch -R 16:26:33 patching file quotes 16:26:47 cool it works 16:26:50 `hg log 16:26:51 changeset: 1017:b1a219757d6a \ tag: tip \ user: HackBot \ date: Mon Dec 10 16:26:33 2012 +0000 \ summary: hg diff -c 1002 | patch -R \ \ changeset: 1016:e960263d7a5f \ user: HackBot \ date: Mon Dec 10 16:26:27 2012 +0000 \ summary: rm quotes.rej \ \ changeset: 1015:1cef8e6fa7e9 16:26:58 cool it 16:26:59 "works" 16:31:16 elliott: Why ping 16:31:25 Gregor: I... forget. 16:31:36 Gregor: oh right I was going to ask if hackego could support ansi colours but it already does??? 16:31:43 It does, yes. 16:31:54 The only characters it rejects now are \x00 and \x01. 16:32:05 Err, wait X-D 16:32:06 you should remove the dumb botloo pprefix thing imho 16:32:12 I keep forgetting what we're talking about. 16:32:26 ANSI colors it doesn't filter, but it's not like they'll work for most IRC clients. 16:32:31 mIRC colors work too. 16:32:49 Don't remove the botloo prefix! 16:32:59 We'll end up with botpoo all over the channel 16:34:17 :[ 16:34:36 -!- Arc_Koen has joined. 16:35:12 Gregor: right I meant mIRC 16:35:17 Gregor: P.S. please remove the botloop thing it's so dumb 16:49:33 Never. 16:49:53 ok but how about change your mind 16:50:00 Mmmmm 16:50:14 I'll CONSIDER scheduling a change of heart. 16:55:02 thanks 17:04:13 -!- Taneb has quit (Ping timeout: 245 seconds). 17:06:02 -!- sebbu has quit (Read error: Connection reset by peer). 17:06:29 -!- sebbu has joined. 17:10:09 -!- nooga has quit (Ping timeout: 252 seconds). 17:23:00 -!- GreyKnight has joined. 17:44:50 headache + train with screeching brakes = headache^2 17:50:37 -!- nooga has joined. 17:58:11 -!- nooga has quit (Ping timeout: 252 seconds). 18:02:17 -!- Bike has joined. 18:34:23 hm..headache + train with no screeching brakes = no head 18:35:08 On the plus side, no headache anymore 18:35:15 right 18:36:30 but i guess i know what you're talking about.. have some trails directly in front of my window 18:36:43 just waiting for the right train to jump on 18:36:59 someone elses train 18:39:44 -!- Phantom_Hoover has joined. 18:45:28 @quote 18:45:28 says: Looks more like lenses reinvented Java Beans. 18:45:56 what 18:45:59 HaskellBeans :-D 18:46:03 @forget Looks more like lenses reinvented Java Beans. 18:46:03 Done. 18:46:13 D-: 18:46:27 does anyone here know where to find gcc 0.9 or 1.0? 18:47:18 elliott, can you explain lenses? 18:47:45 depends on how much haskell you know 18:47:58 All I know is they have something to do with getting a stab 18:48:10 I am not too great with Haskell (yet) 18:51:13 -!- Phantom__Hoover has joined. 18:51:36 do you know about functors and applicative functors 18:54:02 You don't need to "know about functors and applicative functors" to understand lenses. 18:54:16 you need to know about fucntors and applicative functors to understand lens 18:54:18 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds). 18:54:24 maybe GreyKnight was referring to lenses in general though 18:55:41 Hm I did not know there was a difference 18:56:05 Functors I know about 18:56:32 I will take lenses in general please! 18:56:36 well you can think of a lens from a to b as a getter and setter pair 18:56:41 (a -> b, a -> b -> a) 18:56:46 for instance 18:57:03 you have (a,b) -> b, (a,b) -> b -> (a,b) 18:57:08 get (a,b) = b 18:57:13 set (a,b) b' = (a,b') 18:57:24 so you have a SimpleLens (a,b) b 18:57:47 that's all there is to regular old lenses, really 18:57:57 plus some obvious laws like get (set x y) = y 18:58:14 you can, e.g. create a lens for each field of a record, which can both get the value in that field from a record and set it to something else 18:58:26 and you can compose them 18:58:29 Does the name "lens" have some significance I'm not grasping? 18:58:38 so for instance 18:58:46 data SomeRecord = SomeRecord { a :: Int, b :: Int } 18:58:53 er 18:58:56 data SomeRecord = SomeRecord { a :: (Int,Int), b :: Int } 18:59:25 let's say you have a lens for the a field of that record (here you have get rec = a rec; set rec newA = rec { a = NewA }) 18:59:36 you can compose that with the lens for the second element of a tuple (which I showed above) 19:00:05 and get the resulting lens acts like: get (SomeRecord { a = (1,2), b = 3 }) --> 2 19:00:19 set (SomeRecord { a = (1,2), b = 3 }) 4 = SomeRecord { a = (1,4), b = 3 } 19:00:42 you can just use this representation: data Lens a b = Lens { get :: a -> b, set :: a -> b -> a } 19:00:52 then get :: Lens a b -> a -> b, set :: Lens a b -> a -> b -> a 19:01:18 And presumably you could construct lenses to access the other Ints in SomeRecord in the obvious fashion 19:01:23 yes 19:01:26 GreyKnight: It lets you "focus" on some particular part of a structure. 19:01:38 Ah, bad puns. Okay. 19:01:44 or just any computed function of that field..right? 19:01:50 compose :: Lens a b -> Lens b c -> Lens a c; compose lens1 lens2 = Lens { get = \x -> get lens2 (get lens1 x); set = \x y -> ...try writing this... } 19:01:57 (I want you to try writing it because I'm too lazy to.) 19:02:03 shachaf: my new laptop has shipped after all 19:02:08 and the charge is back on the card 19:02:10 so no free laptop :( 19:02:25 Anyway the lens library itself uses the same basic ideas, but it uses a fancier representation that lets you write a lot of operations on them more nicely and compose them more conveniently and stuff. 19:02:48 But lenses in general are very simple, you can just think of them as a getter-setter pair. 19:03:06 Prisms are a related concept, right? 19:03:14 yes 19:03:22 (presumably more punnage) 19:03:59 if a lens is: (a -> b, a -> b -> a), you can think of a prism as: (b -> a, a -> Maybe b) 19:04:05 they're actually more closely related than it looks 19:04:17 but showing that involves slightly more complicated types 19:04:33 a prism is basically a first class "constructor"... you can put a value in a constructor and possibly take it out 19:04:37 so for 19:04:37 data Foo = A Int | B String 19:04:42 you have Prism Foo Int, Prism Foo String 19:04:53 (A, \x -> case x of A y -> Just y; _ -> Nothing) 19:04:59 and (B, \x _> case x of B y -> Just y; _ -> Nothing) respectively 19:06:38 Hm how come prisms use a -> Maybe b whereas lenses use a -> b ? 19:06:43 Or wait 19:07:18 you can't really see that they're related with those definitions 19:07:41 Lost my train of thought, stupid headache 19:08:27 yea, it's still not clear but thank for the kickstart elliott 19:09:05 at least i have basic idea now 19:09:30 Also they really do look like Haskell's answer to JavaBeans :-) 19:10:01 -!- nooga has joined. 19:10:50 they seem to be the fashion of this winter 19:11:08 everyone is talking about 19:11:19 tomorrow is the ceremonial ground breaking on the boston Green Line Extension 19:11:45 they are going to spend 7 years and one billion dollars to extend an existing light rail line about 6km along an existing rail corridor 19:12:03 assuming there are no additional delays or cost overruns, of course 19:13:11 Sounds legit 19:14:24 -!- monqy has quit (Quit: hello). 19:14:53 -!- GreyKnight has changed nick to apparently. 19:15:13 -!- apparently has changed nick to GreyKnight. 19:17:24 -!- nooga_ has joined. 19:20:30 fashion 19:20:43 oops 19:20:54 -!- nooga has quit (Ping timeout: 256 seconds). 19:21:01 dumidumidum *sing 19:21:19 hagb4rd is wearing this season's Lens, a stunning little ensemble with functor trim 19:21:40 Give us a twirl 19:21:52 damn 19:21:57 i'm looking good 19:26:00 -!- nooga_ has quit (Ping timeout: 256 seconds). 19:26:00 Hm we have Lens and Prism... what about Mirror? 19:26:23 It could implement reflection-like abilities :-) 19:26:29 There is Iso. 19:27:00 * elliott sort of likes the idea of renaming Iso to Mirror 19:27:12 it avoids the abbreviation and analogises well with Lens/Prism 19:27:26 indeed 19:28:54 we should talk with the marketing guys to change this 19:34:06 anyway..you may swat me hard, i'm still not really convinced haskell could be used to implement bigger software projects.. at least while not employing a bunch of scientists as programmers 19:34:25 i think the 'lens' logo should be http://upload.wikimedia.org/wikipedia/en/thumb/3/3b/Dark_Side_of_the_Moon.png/220px-Dark_Side_of_the_Moon.png 19:35:45 Haskell is already used to implement bigger software projects by non-scientists though 19:35:53 so your claim is too absurd to even need rebutting 19:38:41 the reference list litarature is a small time 19:41:10 elliott are you a student of computer science or sth? 19:41:18 personally, i'm not really convinced c++ could be used to implement bigger software projects... 19:41:40 i'm not really convinced that bigger software projects can be implemented 19:41:48 hagb4rd: depends on your definition of "student" 19:42:01 on second thought, yes, kmc, i'm not convinced of that either 19:42:04 I think the idea of implementing bigger software projects in C is more unthinkable than doing so in Haskell anyway, and evidently that happens 19:42:10 oh arcatan beat me to it 19:42:14 "C/C++" 19:43:58 no i'm really not into some religious war or sth..it's just that 70 to 80 percent of software-costs is mostly spent on maintance 19:44:18 and the code i've seen so far seems not be easy maintained 19:44:49 and your average Haskell program can well be more easily maintainable than your average C program, assuming competent people for both tasks 19:45:16 it is very easy to get lots of things wrong in C that just aren't possible to get wrong in Haskell, and experts get these things wrong all the time 19:45:17 ight 19:45:22 hence the existence of segfaults for reasons other than compiler bugs 19:45:22 this discussion is quite elucidating 19:45:40 quite hallucinating 19:48:27 yep the experts you are talking about are at first not easy to get, and for this reason not very cheap.. i guess the technique u choose to implement a software solution cannot be decided in general for all time 19:49:06 would you agree so far 19:50:10 it's not impossible to get those things wrong in haskell either 19:50:31 but you are only exposed to those errors in a small subset of the code you write 19:50:42 kmc: well it is impossible for a Haskell 2010 program, compiled with a non-buggy compiler, that does not use the FFI, to segfault 19:50:59 sure but real programs use the FFI 19:51:03 admittedly, those conditions are not usually true 19:51:12 but it's nothing compared to the fact that a C program uses the FFI every line :p 19:52:21 It is quite possible for said Haskell 2010 program to terminate saying e.g. "head: empty list" or "fromJust: Nothing" 19:52:46 Which is hardly better than a segfault 19:52:53 This is why I think JavaScript made a mistake in not letting you dereference or call undefined. 19:52:54 it is better 19:53:01 Deewiant: that is better in several ways 19:53:10 If they'd just made those return undefined, then it would barrel on endlessly no matter what you did :) 19:53:11 a segfault is just a lucky outcome of undefined behavior 19:53:15 for one, there is no security risk 19:53:22 at least not the kind segfaults imply 19:53:41 Right, that can matter in some contexts 19:53:47 for two, you know that program will always output that under those conditions -- it is "reasonable behaviour", not just stuff going wrong 19:54:01 for three you get a useful error message :P 19:54:16 of course, that doesn't mean partial functions are a good thing 19:54:22 but they're a lot less bad of a thing 19:54:39 it's weird to pick Haskell as the exemplar memory safe language 19:54:56 Re. two: in practice you usually know the other program will always segfault as well :-P 19:55:02 I was just using memory unsafety as an obvious, universal example of something C does really badly 19:55:03 no 19:55:05 no no no no no no 19:55:09 Deewiant: no no no no no no no 19:55:27 kmc: Do elaborate 19:55:34 last but not least if youthe everyday software programming is that sophisticated.. (it's almost boring) as many of 19:55:34 i wonder what are the biggest headaches experienced by the real maintenance programmers working on e.g. C++ or Java projects 19:55:37 elliott: C does unsafety very *well*, you mean? 19:55:40 a segfault is a lucky outcome of undefined behavior 19:55:43 sometimes you don't get lucky 19:55:45 olsner: good point 19:55:48 and how much programming language features affect that 19:56:08 sometimes you get slightly wrong results 19:56:12 sometimes you get permanent data corruption 19:56:17 sometimes you get exploitable security holes 19:56:19 kmc: In practice if it segfaulted once it usually will segfault the second time as well 19:56:27 Or I don't know, usually in my programs 19:56:28 C programmers who treat segfaults as the worst case outcome scare the fuck out of me 19:56:44 sure "usually" meaning 99% of the time 19:56:44 lol 19:56:50 but now run that program in production for 10 years 19:56:55 and also expose it to adversarial attackers 19:57:02 some weird shit will happen 19:57:12 * elliott bets that 99% is more like 50% in the presence of pthreads. 19:57:12 That's a situation I wouldn't want to put a C program in 19:57:30 so you would not use C in production or for anything with security requirements 19:57:30 Deewiant: sounds like an argument Haskell's failure conditions are better 19:57:31 Re. three: there are more tools for finding the cause of segfaults than for "fromJust: Nothing" :-P 19:57:40 elliott: I'd say it's situational 19:57:59 Sometimes you care about not segfaulting, sometimes it's not that big a deal 19:58:11 not having the possibility of segfault* 19:58:20 again "segfault" is the symptom and it's the mildest of all symptom 19:58:31 I'm not disagreeing with you on that 19:58:33 if a segfault isn't a problem I don't see how head [] can be 19:58:35 it's like if i said it's ok to get AIDS because having a cough is not so bad 19:58:48 Non sequitur 19:58:53 hella sequitur 19:58:56 exactly.. i'm sure haskell has its advatages.. in many use cases 19:59:09 can we just say "invalid memory access" instead of "segfault" instead 19:59:19 elliott: I'd rather see a C segfault than a Haskell 'head []' when developing something unless GHC's debugging facilities have improved to the point that I can find the latter quickly 19:59:30 you can use -xc to get a backtrace these days 19:59:43 ghc: unrecognised flags: -xc 19:59:44 But okay 19:59:48 another point is that it's a lot easier to write Haskell that doesn't use partial functions than it is to write a C program that has no risk of segfault 19:59:48 it's a RTS flag 20:00:04 ghc: the flag -xc requires the program to be built with -prof 20:00:16 That's a bit annoying but oh well 20:00:24 again it's weird that this discussion of memory safety is "C vs Haskell" and not "C vs almost every other language" 20:00:36 well it was a C vs. Haskell thing 20:00:42 i agree that GHC's debugging and error-finding tools are shitty 20:00:44 just the subject ate the ject 20:00:53 originally said the subsubject ate the subject but decided that was redundant 20:00:55 elliott: And yes, it is, but it's not easy :-P Now you have to be very careful about all library code etc 20:00:58 if we're still talking about long-term software projects started today, I don't think that C will be the language of choice for many of them 20:01:09 a lot of Haskell tools suck even though these problems should be easier in Haskell 20:01:12 just because it is a niche language 20:01:12 Deewiant: I'm like 10x more paranoid of C libraries than Haskell libraries 20:01:57 kmc: Right, much (all? I forget) of my argument regards the tooling 20:02:14 elliott: Sure, I didn't say C is any easier :-) 20:02:51 -!- ogrom has quit (Read error: Connection reset by peer). 20:04:13 -!- Sgeo|web has quit (Ping timeout: 245 seconds). 20:04:32 anyway I would rather maintain a badly-written Haskell program than a badly-written C program at the very least 20:04:51 you're hired! 20:05:12 i don't necessarily agree with that elliott 20:05:32 If they're equally large, I'm not so sure either 20:05:59 my idea of a badly-written Haskell program is that 10 people worked on it, and each one thought they were super clever, but also fundamentally misunderstood at least one aspect of the language 20:06:13 and so it will be full of excessively clever things that don't quite make sense and don't fit together 20:06:27 in other words more like C++ than C 20:07:12 C has a lot of problems and badly written C code is a nightmare, but it doesn't have this problem in particular 20:07:17 it does depend on context though 20:07:41 if security is extremely important, and the program will be exposed to lots of malicious input, i will still prefer the badly written haskell code 20:07:49 I think it's generally easier to make a Haskell program less dumb. 20:07:58 -!- fungot has quit (Ping timeout: 246 seconds). 20:08:04 if security is extremely important I'd rather not be maintaining the program whatever language it's in :P 20:08:06 or else treat the C program as untrusted and heavily sandbox it 20:08:38 it's that code should be understood and basically easy read if possible.. so putting 10 lines of code into one that makes you look pretty clever is the one of the worst case scenarios when it comes to maintenance 20:08:53 (in real life) 20:09:58 yeah 20:10:09 and haskell doesn't have to be written that way, but it often is 20:10:20 because most people writing haskell are excited beginners and not seasoned professionals 20:10:58 -!- lambdabot has quit (Ping timeout: 245 seconds). 20:11:32 well you can do exactly the same in C 20:11:33 however 1 really clever function that gets used 50 times is better than 50 separate simple functions 20:11:46 and I'd prefer to refactor the Haskell 20:11:54 and i admit my first impression of haskell was that there are ways to express things shorter without loosing readability 20:12:51 especially handling data stuff 20:14:06 thanks to the guys that implemented the lambda calculus in c#.. that would be the next i miss in c 20:15:00 i'm sure the one thing elliott hates more than c is c# 20:15:02 :p 20:15:09 huh 20:15:14 C# is a pretty good language 20:15:16 it is memory safe 20:15:35 it supports many styles well, including expressive functional programming 20:16:07 it has LINQ 20:16:10 yea 20:16:15 linq is great 20:16:28 and mono is evolving pretty well so far 20:16:52 that's good 20:20:30 -!- nooga has joined. 20:40:43 -!- GreyKnight has quit (Quit: You hit the grey light. It explodes!). 20:44:12 -!- boily has quit (Read error: Connection reset by peer). 20:49:53 -!- sebbu2 has joined. 20:49:53 -!- sebbu2 has quit (Changing host). 20:49:53 -!- sebbu2 has joined. 20:50:11 -!- boily has joined. 20:50:17 * hagb4rd puts some self-made xmas cookies into the channel 20:53:06 -!- variable has quit (Quit: I found 1 in /dev/zero). 20:53:37 -!- sebbu has quit (Ping timeout: 265 seconds). 20:53:43 eat! 20:53:48 they are not poisoned 20:58:20 -!- boily1 has joined. 21:01:13 -!- augur has quit (Remote host closed the connection). 21:01:41 -!- boily has quit (Ping timeout: 255 seconds). 21:01:58 -!- boily1 has changed nick to boily. 21:03:31 -!- Sgeo|web has joined. 21:05:24 -!- variable has joined. 21:11:57 "Apple Maps 'is life-threatening' to motorists lost in Australia heat" 21:12:02 -- BBC 21:14:22 it's not life-threatening, just 'life threatening' 21:17:04 A Finnish paper had that (well, similar) headline today too. 21:17:15 Guns don't kill people, Apple Maps kill people. 21:17:24 Australia kills people 21:17:24 (That wasn't the headline.) 21:18:32 I think fizzie should write the headlines 21:19:05 -!- ais523 has joined. 21:20:14 We just bought Helsinki-Imatra-Helsinki train tickets (that's about 250 km one way) for two, and they cost substantially less than the local regional traffic tickets we'll need to get to the Helsinki Central Railway Station. 21:20:45 heh 21:21:06 with ryanair and such, you can spend less on a plane ticket than on getting to the airport :) 21:21:13 i've also taken a $2.50 metro ride to a $1 intercity bus 21:21:24 They're running this "advent calendar" thing where there's every day a new (A, B) pair and a set of particular trains between those points, and it costs fixed 1.50 eur/person. 21:22:05 And of course it's only valid if bought during that day. 21:22:07 (The local traffic trip is something like 3.37 eur or thereabouts when bought with the RFID card dealie.) 21:22:32 cool 21:22:53 so you have to go on the day of purchase? do they list the city pairs ahead of time? 21:23:35 No, you just have to purchase today; the travel times vary a bit, but for today's deal it was something like January 7th to January 31st. 21:24:09 (And therefore the routes aren't revealed in advance, of course.) 21:24:18 -!- augur has joined. 21:24:52 elliott: Heeeeeeeeeeeeeeeeeeeeeeeey here's a thought. 21:25:04 oh god 21:25:05 elliott: http://phantomjs.org/ + some glue code = modern textmode browser. 21:25:09 -!- augur has quit (Remote host closed the connection). 21:25:10 We did have to take the 07:12am train instead of the more human-friendly 10:12am one since the other one was already sold out (it's 11:25pm here so today's deal was quite old), but still. 21:25:15 -!- augur has joined. 21:25:25 that was 21:25:33 quite far away from any thought I was expecting you to tell me 21:25:48 by "local traffic tickets" do you mean a local train or something else? 21:25:50 "PhantomJS is an optimal solution for" not sure they know what "optimal" means 21:25:51 elliott: Probably over a year ago we (or perhaps not you at all) were discussing how shitty text mode browsers are ;) 21:25:59 it might have been me 21:26:01 they are very shitty 21:26:07 a beautiful, elegant, awesome browser that celebrates craftsmanship 21:26:16 kmc++ 21:26:32 Wait, what is that referencing? I thought I knew but now I don't. 21:27:35 internet explorer, right? 21:28:46 https://addons.heroku.com/bonsai 21:29:28 nice 21:29:47 kmc: The Helsinki/Espoo/Vantaa/Kauniainen regional area has pretty much just one type of tickets for trains/subway/buses/trams, so I mean those. (There's one price for in-city traffic, and another for the four-city zone... and then it gets more confusing, since the regional traffic... conglomeration sells bus-and-train tickets also for the neighbour municipalities, while the railway company ... 21:29:53 ... sells train-only tickets for those places, with completely different pricing schemas; but that's not really relevant any longer; and anyway who'd want to go there?) 21:30:17 (Uh, and Kauniainen counts as Espoo for the purposes of local traffic, because it's an enclave city kind of thing. Finland's last one, in fact.) 21:30:37 ok 21:31:06 fizzie: did you count where you'd need to put those ...s 21:31:18 I think by 2015 they have a new thing where they set up new fare zones and forget the actual city boundaries, since they're not terribly logical. (The new zones are roughly circular bands around the Helsinki centrum.) 21:31:24 elliott: No, it was splitlong.pl. 21:31:43 fizzie: it does that??? 21:31:46 that's fancy 21:32:08 Well, it puts what you /set splitlong_line_end to the end, and splitlong_line_start to the start. 21:32:20 But they default to " ..." and "... ". (Or maybe the spaces are implicit.) 21:32:31 (No, they're explicit.) 21:33:12 You could have splitlong_line_end of "\" and splitlong_line_end of "" for a kind of a programmer's approach. 21:34:04 splitlong_line_end = "HEY WAIT A SECOND JUST GONNA INSERT A LINEBREAK HERE" 21:34:12 splitlong_line_end = "OK AS I WAS SAYING: " 21:34:16 er 21:34:22 I copied the mistake from fizzie's line 21:35:18 Wow, elliott, that's a HEY WAIT A SECOND JUST GONNA INSERT A LINEBREAK HERE 21:35:23 OK AS I WAS SAYING: great idea. 21:35:42 OK AS I WAS SAYING: HEY WAIT A SECOND JUST GONNA INSERT A LINEBREAK HERE 21:35:43 OK AS I WAS SAYING: HEY WAIT A SECOND JUST GONNA INSERT A LINEBREAK HERE 21:35:43 OK AS I WAS SAYING: HEY WAIT A SECOND JUST GONNA INSERT A LINEBREAK HERE 21:35:47 You want that kind of a loop. 21:36:12 (I don't know what happens if you do set them long enough to result in that.) 21:36:21 (I suspect it's going to explode.) 21:39:36 -!- SingingBoyo has joined. 22:18:36 -!- Nisstyre-laptop has joined. 22:27:39 -!- Gregor has quit (Excess Flood). 22:27:47 -!- Gregor has joined. 22:30:29 -!- boily has quit (Quit: Poulet!). 22:31:49 "Sundown is a zero-dependency library composed of 3 .c files and their headers. No dependencies, no bullshit." 22:31:52 yeah fuck that "code reuse" bullshit 22:32:13 real hackers etc 22:32:39 I see kmc has never tried to install an edwardk package 22:34:22 kmc: Does it still depend on a C compiler? 22:34:30 If so I won't use it. 22:34:38 Real Hackers can compile C by hand 22:34:40 kmc: hah 22:34:45 otherwise how would you know it's secure?!?!? 22:36:11 one more and i start to think it was ironic :p 22:36:23 kmc: Did you hear NumInstances is out of lambdabot? 22:36:57 oh? 22:36:58 cool 22:37:00 story? 22:37:29 It was confusing someone in here. 22:37:32 I told Cale it was confusing. 22:37:35 He took it out. 22:37:40 cool! 22:37:52 And now 14:32 man shachaf is the death of fun in #haskell ;) 22:39:46 shachaf is the death! 22:42:12 -!- SingingBoyo has quit (Ping timeout: 264 seconds). 22:43:48 Is Caleskell documented anywhere? 22:44:53 L.hs 22:44:55 documented only in the cries of horrified and confused beginners 22:45:13 just avoid lambdabot on Malbolge Mondays 22:45:20 when @run runs Malbolge instead of Haskell 22:47:17 @run 2+2 22:47:27 :( 22:54:56 `? finnish 22:54:58 Finnish suomalaiset ei Perkeleistä on hakkapeliittaan. Ei saa peittää. Parasta ennen! 22:55:16 elliott!!!!!!!! 22:55:21 Did you write the new `quote? 22:55:39 $ wc -l qdb.py 22:55:40 120 qdb.py 22:56:01 So? 22:56:03 Upload it! 22:57:44 120 lines! for adding a line of text to a text file? 23:00:38 -!- oerjan has joined. 23:13:26 `addquote headache + train with screeching brakes = headache^2 hm..headache + train with no screeching brakes = no head On the plus side, no headache anymore 23:13:29 862) headache + train with screeching brakes = headache^2 hm..headache + train with no screeching brakes = no head On the plus side, no headache anymore 23:20:20 -!- epicmonkey has joined. 23:21:54 `addquote [after discussing Haskell lenses] they seem to be the fashion of this winter < hagb4rd is wearing this season's Lens, a stunning little ensemble with functor trim 23:21:57 863) [after discussing Haskell lenses] they seem to be the fashion of this winter < hagb4rd is wearing this season's Lens, a stunning little ensemble with functor trim 23:21:58 oops 23:22:00 `revert 23:22:02 Done. 23:22:18 `addquote [after discussing Haskell lenses] they seem to be the fashion of this winter hagb4rd is wearing this season's Lens, a stunning little ensemble with functor trim 23:22:21 863) [after discussing Haskell lenses] they seem to be the fashion of this winter hagb4rd is wearing this season's Lens, a stunning little ensemble with functor trim 23:22:36 oerjan: "discussing lens", surely. 23:22:41 well, I guess it was just lenses in general 23:22:42 OKAY 23:22:45 but they're not Haskell-specific! 23:22:57 hi oerjan 23:23:06 perhaps that should go in lam... oh it's not here 23:23:10 hi hagb4rd 23:23:30 `delquote 863 23:23:35 ​*poof* [after discussing Haskell lenses] they seem to be the fashion of this winter hagb4rd is wearing this season's Lens, a stunning little ensemble with functor trim 23:24:10 `addquote [after discussing lens] they seem to be the fashion of this winter hagb4rd is wearing this season's Lens, a stunning little ensemble with functor trim 23:24:13 863) [after discussing lens] they seem to be the fashion of this winter hagb4rd is wearing this season's Lens, a stunning little ensemble with functor trim 23:26:59 JEEZ guys, double space. 23:27:01 IT'S IMPORTANT. 23:27:48 but it's nothing compared to the fact that a C program uses the FFI every line :p <-- that darn C-to-C ffi, so convenient but dangerous 23:28:21 hm? no double space around [...] in..cisions 23:29:03 hm wrong word. 23:29:29 Gregor: that quote follows the standards. 23:29:51 yay! 23:29:55 cuts in the quote = incisions, makes sense 23:29:58 * oerjan wasn't entirely sure himself 23:30:29 `echo HALP GUYS I'M TOO FAST 23:30:30 HALP GUYS I'M TOO FAST 23:30:39 Gregor: want me to de-optimise hackego? 23:30:44 who cares if it's the right word if it means something vaguely similar to what you mean 23:31:00 It would be cool if UML could be made to blow up if you try to write. 23:31:02 echo 'echo sleep 0.1 >> .bashrc' >> .bashrc 23:31:20 Blow-up-on-write is clearly the best write policy. 23:31:38 Gregor: You can do that 23:31:40 just use a custom FS 23:31:55 shouldn't be very long with FUSE 23:32:18 Gregor: in fact you could unionfs the normal FS and a FUSE empty-but-stops-everything-on-any-write FS 23:32:35 'snot a bad idea. 23:33:05 I'm not sure whether the current slowdown is mostly launching UML or `hg status` though. If it's the former, then there's not much point to piling more on that ;) 23:33:10 presumably the latter would send a message to the hackego supervisor stuff 23:33:13 which would then kill -9 23:33:31 Gregor: well it should be easy to time them with python 23:33:48 Gregor: I forget, what does your UML use as init? 23:33:49 But I'm sooooo laaaaazy :( 23:33:56 Its own custom thing. 23:34:07 init just mounts some shit then runs what you asked. 23:34:22 Right, I was wondering what the init itself is 23:34:25 So I could micro-optimise it 23:34:53 I doubt that it's the problem, probably the kernel is, but: https://bitbucket.org/GregorR/umlbox/src/802cc63695cab6922b1b1f8c7815612c4f8dc3a4/init.c?at=default 23:35:26 Gregor: Oh right, you could probably save a good amount of time by stripping down the kernel 23:35:45 ^^´ 23:35:52 I was trying to figure out if I can remove the bogomips calculation. 23:35:56 That's pretty retarded and takes time. 23:35:58 Can't find it though. 23:36:04 Or rather, can't find an option for it. 23:38:01 Gregor: it occurs to me that you don't necessarily need to use hg status 23:38:12 you could compare the dir trees with diff or something 23:38:16 I suspect hg status is not super-optimised 23:38:29 Quite probably. 23:38:31 `run tree | paste 23:38:36 http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.1294 23:38:56 | `-- \357\274\267\357\274\245\357\274\254\357\274\243\357\274\257\357\274\255\357\274\245 lolwut 23:38:57 Gregor: in fact... it may be that how UML/UMLBox works means files always change inode on being modified? 23:39:04 fizzie: found fungot failure, fix fast! 23:39:06 that would let you check whether anything changed superfast 23:39:27 elliott: I doubt it. 23:39:28 Gregor: Why is all the EgoBot stuff in HackEgo... 23:39:34 elliott: I'm working on merging them. 23:39:57 You could at least put them in a separate bin directory so the `/! separation could be maintained and `ls bin` didn't give a bunch of crap 23:40:11 -!- fungot has joined. 23:40:21 *waaaah* 23:40:25 fizzie: fabulous! 23:40:27 ^^ 23:40:48 (Note: I don't WANT to maintain the `/! separation) 23:41:04 well you can still separate the paths 23:41:11 how is fungot's twitter stream doing these days? 23:41:11 olsner: this is prob a premature question... but what would it do? where were you from? 23:41:14 Yeah, I could. 23:41:19 olsner: Offline. :/ 23:41:19 Gregor: maybe that's your unicode goat in UTF-8 23:41:22 interps/ too 23:41:30 -!- epicmonkey has quit (Ping timeout: 264 seconds). 23:41:34 anyhow 23:41:35 FireFly: 's not that many characters... 23:41:36 `run rm paste/* 23:41:37 *bytes 23:41:38 olsner: I keep forgetting to restart the poster script. 23:41:39 that should speed things up 23:41:44 No output. 23:41:44 Heh 23:41:59 `revert 23:42:02 probably not a good idea 23:42:04 Done. 23:42:30 Gregor: by the way what should I call hg diff -c "$1" | patch -R 23:42:41 Ahaha 23:42:46 elliott: backout? 23:42:49 Gregor: it's WELCOME 23:42:55 I was thinking "undo" 23:42:59 FireFly: X-D 23:43:14 elliott: backout is the mercurial name for a similar operation. 23:43:52 `WELCOME FireFly 23:43:54 probably not a good idea <-- wait why not 23:44:02 oerjan: because logs 23:44:07 ​/hackenv/bin/perl: 3: Cannot fork 23:44:08 Gregor: I bet HackEgo would be faster if it used git 23:44:14 elliott: Quite probably. 23:44:16 elliott: are the logs in paste/ ? 23:44:21 Gregor: I like how you broke "perl". 23:44:25 With the EgoBot stuff. 23:44:27 elliott: But I'm still not sure if hg is even the slow part. 23:44:30 Ohlol X-D 23:44:33 `run rm bin/perl 23:44:36 No output. 23:44:40 I was wondering wtf was going on there X-D 23:44:40 oh you mean references from the logs to paste/ 23:44:47 `WELCOME FireFly 23:44:49 ​FIREFLY: WELCOME TO THE INTERNATIONAL HUB FOR ESOTERIC PROGRAMMING LANGUAGE DESIGN AND DEPLOYMENT! FOR MORE INFORMA 23:44:53 Perfect. 23:44:55 Oh, thanks 23:45:00 `help 23:45:00 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/ 23:45:03 I'll make sure to check out that wiki 23:45:11 Gregor: P.S. nice Unicode failure pls fix? 23:45:23 I don't have any clue why that happened X-D 23:45:29 * elliott thinks rm bin/perl is a bit of an incomplete solution to this problem... 23:45:38 I note that this is a good argument for the !/` distinction :P 23:45:43 `url bin/WELCOME 23:45:44 http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/bin/WELCOME 23:46:00 Dahell? 23:46:01 Gregor: The Unicode failure is on HackEgo's part 23:46:05 rm bin/perl must be a step in the right direction though 23:46:08 "INFORMA��" 23:46:14 You should .decode('utf-8') before length-limiting 23:46:28 I guess you need a loop since IRC's bounds are probably byte-based 23:46:31 No, I just want Python to treat it as raw, 8-bit crap. 23:46:31 (but beware, there may be more copies of perl) 23:46:46 Gregor: ...so you want that to be fucked up? 23:47:04 elliott: Cutting off mid-character is not a significant problem. 23:47:34 OHWAIT is it displaying like that because it cut off mid-character so my client went “ehhhh Latin-1” 23:47:36 X-D 23:48:33 `run WELCOME Gregor | head -c 3 23:48:35 ​G 23:48:40 Tee hee, tee hee ^^ 23:48:52 ah, I guess that's why it's broken for me too 23:49:10 `run echo $LANG 23:49:11 No output. 23:49:12 I was kinda hoping that output wouldn't have to be valid UTF-8 though... 23:49:14 Gregor: fix that :( 23:49:40 elliott: I will, but not whilst at work. 23:50:02 I'll try to make it so that if it fails to decode as UTF-8, it just does bytewise limiting. 23:50:31 by "that" I meant LANG being unset 23:50:37 Oh 23:50:43 LANGuage is for losers though. 23:50:51 it'd fix the head -c 3 thing 23:51:05 I chose 3 precisely so it'd output what I expected X-D 23:51:12 yes but it's still a bug 23:51:16 >: ( 23:51:22 problem with limiting UTF-8ly is that it's hard to maintain byte bounds without just chopping off one char at a time until it's fixed 23:52:41 -!- zzo38 has joined. 23:53:26 LANGuid LANGuages. 23:54:14 elliott: I'm thinking, (1) decode as UTF-8. If it doesn't decode, just use bytes. (2) Cut it off to a byte limit, then decode in a mode I'm hoping Python provides, “throw bad shit away”, (3) Re-encode and send 23:55:09 Gregor: That sounds much worse than just while len(encoded) < limit: str = str[:-1]; encoded = str.encode('utf-8') 23:55:33 (After you do pre_decoded_str = pre_decoded_str[:limit]; str = pre_decoded_str.decode('utf-8')) 23:55:39 (So most of the time it'll never even get into that loop) 23:55:56 elliott: I want to preserve incorrect strings. 23:56:04 It does have that mode, though, unless I misremember. 23:56:11 Ohwait, no, you mean for (2). 23:56:13 What are you trying to decode? 23:56:15 No, mine is considerably more efficient. 23:56:19 er, I mean 23:56:23 after you do str = str[:limit] 23:56:35 Gregor: Throwing bad shit away is so gross :( 23:57:22 elliott: Bad shit only occurs at the end of the string because you cut it off. 23:57:30 I only run (2) if the whole string is valid. 23:57:57 :( 23:57:59 you are gross & bad 23:58:49 `locale 23:58:51 LANG=zh_TW.UTF-8 \ LANGUAGE= \ LC_CTYPE="zh_TW.UTF-8" \ LC_NUMERIC="zh_TW.UTF-8" \ LC_TIME="zh_TW.UTF-8" \ LC_COLLATE="zh_TW.UTF-8" \ LC_MONETARY="zh_TW.UTF-8" \ LC_MESSAGES="zh_TW.UTF-8" \ LC_PAPER="zh_TW.UTF-8" \ LC_NAME="zh_TW.UTF-8" \ LC_ADDRESS="zh_TW.UTF-8" \ LC_TELEPHONE="zh_TW.UTF-8" \ LC_MEASUREMENT="zh_TW.UTF-8" \ LC_IDENTIFICATION="zh_TW 23:59:01 Fixed. 23:59:27 -!- sebbu has joined. 23:59:46 -!- sebbu has quit (Changing host). 23:59:46 -!- sebbu has joined.