00:00:18 -!- Jafet has quit (Quit: Leaving.). 00:02:45 elliott: ...you lost me. 00:04:33 CakeProphet: what 00:07:04 -!- Jafet has joined. 00:23:40 elliott: so you're basically saying you've decided to name it qhc? 00:23:53 CakeProphet: Yes, and I need deciding between Qhc and QHC for the module name 00:23:54 just a few minutes before you were asking which to name it. 00:23:56 oh 00:24:00 I see. 00:24:13 Qhc then. :P 00:24:23 like 00:24:25 explain 00:24:29 what's wrong with that. 00:24:35 it's ugly 00:24:39 QHC is ugly too 00:24:41 okay 00:24:44 qhc is ~beautiful~ 00:25:07 I think Qhc looks nice too. 00:25:07 I'll just go with Qhc 00:25:09 so there. 00:25:34 do you have an expansion for the name yet? 00:25:35 I think I'll write the grammar in Parsec; self-hosting is a goal so I don't want to use something like trifecta with a billion dependencies 00:25:38 CakeProphet: there is no expansion 00:25:44 qhc haskell compiler 00:25:45 ah okay. I thought that may be the case. 00:26:11 ...oh, so it's recursive actually. or rather, it's not a huge leap to assume that it's a recursive acronym. 00:26:12 q haskell compiler 00:26:19 even if it's not officially. 00:26:21 the q stands for q 00:26:49 monqy: but then the q on its own looks lonely. 00:26:59 the q stands for ~q~ 00:27:04 I think recursive is nice because it's almost the same as not expanding it. 00:27:27 I mean obviously the hc part stands for haskell compiler 00:27:37 Time to write a parser 00:27:41 * elliott cracks knuckles, opens http://www.haskell.org/onlinereport/haskell2010/ 00:27:48 oh dear.... 00:27:51 monqy: what 00:27:56 lol, now that the important stuff is out of the way. 00:27:56 parsing haskell 00:28:01 im scared 00:28:03 is it any fun 00:28:07 I'm afraid of parsing 00:28:08 can't be as bad as perl. 00:28:08 monqy: I'm going to not do layout 00:28:11 oh 00:28:14 monqy: for now 00:28:15 oh 00:28:19 monqy: since it's easy enough to add it in later 00:28:22 I guess that makes it 00:28:25 easier 00:28:29 it basically results in "if you don't see { after a few keywords, do some freaky shit" :P 00:28:33 s/results in/reduces to/ 00:29:12 monqy: I don't like how you have to keep some comments but not others :( 00:29:16 for things like pragmas 00:29:24 :( 00:30:04 I wonder if GHC maintains all comments in the AST?? 00:30:08 haddock uses it after all 00:31:03 elliott: might as well keep them if you're going to be handling pragmas. 00:31:09 makes it easier, I think? 00:31:11 Yeah, but keeping all of them is a Pain for processing the AST 00:31:14 Keeping declaration-level ones, maybe 00:31:17 Keeping inline ones? 00:31:19 Ugh 00:31:29 a pain? don't you just have to... ignore them? 00:31:36 probably the least painful thing to process. :P 00:31:47 ignore or check for pragmas. 00:31:50 on inline ones. 00:32:00 Hmm, GHC's idle GC time is every 0.3s 00:32:03 CakeProphet: Because even something like 00:32:06 9 {- foo -} + 9 00:32:06 becomes 00:32:13 Add 9 (CommentThen "foo" 9) 00:32:14 or whatever 00:32:28 lolwat. that's weird. 00:32:38 but I guess that is how you'd have to do it. 00:32:44 unless you do something weirder 00:32:47 keep onyl pargmas? is there any restriction on where they can appeare? 00:32:54 CakeProphet: How else would you do it 00:33:00 I was thinking about that... 00:33:02 monqy: but then whence haddock... 00:33:12 oh you'll be having a haddock in youre qhc? 00:33:18 then thats problems.... 00:33:22 well is there a node for like... a "line" 00:33:26 like, a top-level node? 00:33:30 monqy: well I dunno I just 00:33:33 don't like to rule things out..... 00:33:34 you could stick all the comments there. or something. :P 00:33:38 CakeProphet: do you mean declaration 00:33:42 yeah I think. 00:33:46 9 {- foo -} + 9 00:33:48 where declaration 00:33:50 that's kind of bad though. 00:33:50 anyway i was just about to say "keeping pragmas separate from the ast might be nice" but now that haddoc comments need some sort of itnegration..... 00:34:25 are you sure that haddoc even needs the compiler to do that shit? 00:34:35 CakeProphet: Haddock uses GHC, so yes 00:34:41 and things fail if the code doesn't typecheck etc. 00:34:47 I don't know whether it does it to find the comments, though 00:34:49 hmmm, okay. 00:34:56 er, right, that's what I mean. 00:35:07 hmm, looks like ghc at least parses pragmas /directly/ in the parser 00:35:10 * elliott looks at what it does for normal comments 00:36:04 does it parse them and put them in the AST or process directly? 00:36:36 second option sounds kind of easier maybe. depending on whether or not you're using state. 00:36:55 huh? 00:37:14 yeah putting pragmas in the AST sounds pointless actually. 00:37:28 ...also 00:37:32 many pragmas change syntax 00:37:34 so... yeah. 00:37:46 you can't process them later, after you parse. 00:37:59 * CakeProphet is thinking aloud. 00:38:59 so I guess you would just update a state record whenever you encounter a pragmas in the right place. 00:39:41 Well, you can just parse all extensions and the like 00:39:51 And mark that they were used 00:39:54 And then complain later if it's not OK 00:39:56 But yeah 00:40:09 do any extensions disallow otheriwse valid proramsgs 00:40:30 hmmm, none that I can think of. 00:41:08 unless they reserve some kind of symbol that could be used elsewhere. Is ! and the like reserved or is it a valid operator character in Haskell98. 00:41:16 ! and ~ 00:41:51 oh right: template haskell ruins $ in some cases, and if mdo is still a thing i think it can ruins stuff too 00:42:21 fair enough 00:42:27 so yeah I think you'd want to parse different based on extensions rather than doing it later. 00:43:27 elliott: can I help you or am I banned forever? 00:43:46 CakeProphet: for what 00:43:50 s/for/with/ 00:43:50 http://www.haskell.org/ghc/docs/latest/html/users_guide/syntax-extns.html#syntax-stolen 00:43:58 elliott: with this compiler, what do you think. 00:44:21 dunno, you could implement ConstraintKinds 00:44:36 -!- derdon has quit (Remote host closed the connection). 00:44:47 ew, -XArrows steals a lot of very nice things 00:45:46 elliott: but could I help with actually coding stuff so I can learn about compilers. :D :D :D 00:46:02 it's totally a good idea. 00:46:30 yes, I absolutely want someone inexperienced let all over my codebase 00:46:45 elliott: under your direction of course. 00:46:56 it's not like I'm just going to like, go break things. 00:47:07 are you sure 00:47:10 ..yes 00:47:23 are you that good at detecting bugs in the making :P 00:47:32 >_> sometimes? lol 00:47:55 anyway I don't need to handle extensions yet 00:48:01 i'm implementing pure haskell(tm) 00:48:09 I catch a lot of bugs when I review my own code, of course. 00:48:20 but no, I don't magically make programs that run correctly first run. 00:48:30 well, sometimes I do. 00:48:39 but I don't write compilers. :P 00:49:53 -!- Sweet has joined. 00:49:54 '{-# INLINE' { L _ (ITinline_prag _ _) } 00:49:55 '{-# SPECIALISE' { L _ ITspec_prag } 00:49:55 '{-# SPECIALISE_INLINE' { L _ (ITspec_inline_prag _) } 00:49:55 '{-# SOURCE' { L _ ITsource_prag } 00:49:55 '{-# RULES' { L _ ITrules_prag } 00:49:56 pro tokens 00:49:58 hi Sweet 00:49:59 `? welcome 00:50:05 Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page 00:50:08 Hi 00:50:51 -!- Sweet has left. 00:50:57 bye sweet 00:51:00 elliott: I'm guessing you're not going to go through 4 million intermediate representations right from the start. 00:51:15 maybe Haskell -> C 00:51:34 haskell -> haskell best compi;er 00:51:53 GHC has both 00:52:02 CakeProphet: haskell → core of some sort → backends 00:52:05 probably C will be a backend 00:52:11 oh okay. 00:52:12 I might have an intermediate language before that for simplicity 00:52:20 that simplifies things, not complicates them 00:52:25 unless you can think of an obvious mapping of haskell directly to C 00:52:36 I cannot. 00:52:46 I suppose that makes sense. 00:53:04 I was thinking the extra layers would require more effort, but it actually just makes it conceptually simpler. 00:53:20 welcome to compilers 00:53:38 welcome to monqy 00:54:11 good place to be 00:54:25 intermediate layer should be BF 00:54:40 or Unlambda 00:54:50 bad ideas 00:55:07 monqy: also jokes. 00:55:15 bad jokes 00:55:23 monqy: okay fine you make a joke. 00:55:30 I can't force those things man 00:55:46 forcing jokes is bad, for bad people 00:55:52 monqy: okay fine make ideas then. 00:56:04 forcing ideas is bad, for bad people 00:56:10 good idea. 00:56:26 jokes and ideas must flow naturally as that is the way of things 00:56:40 my jokes flow naturally and are also the shiznizzle. 00:56:48 best compiler jokes. 00:57:05 -!- Jafet1 has joined. 00:57:23 -!- Jafet has quit (Disconnected by services). 00:57:25 -!- Jafet1 has changed nick to Jafet. 00:59:15 elliott: oh oh oh LLVM 00:59:22 use that. 00:59:44 as backend. 00:59:51 back-backend. 01:00:03 i can have 01:00:04 multiple 01:00:06 backacbackbkcbackends 01:00:12 elliott: right but that's the best one. 01:00:17 use that one by default. 01:00:30 the beST?, eh 01:00:46 that didn't turn out quite how I Wanted it...oops?" 01:03:35 monqy: is it a pun on ST... 01:04:03 I recall reading about programs compiled with GHC being faster when LLVM was the backend. 01:06:56 That just says that the LLVM backend is faster than the asm one 01:06:57 Which it is 01:07:27 which probably says something about LLVM being a good choice for backend.... (....?) 01:07:38 or that the asm backend is bad 01:07:56 -!- sllide has joined. 01:07:56 actually it was comparing it to the C and asm backend. 01:09:09 http://blog.llvm.org/2010/05/glasgow-haskell-compiler-and-llvm.html 01:09:41 elliott: actually it was me messing up with my keyboard sometimes i accidentally shift (it is a ba d acdient) 01:09:41 source for this statement on Wikipedia: The Glasgow Haskell Compiler (GHC) has a working backend for LLVM that achieves a 30% speed-up of the compiled code when compared to native code compiling via GHC or C code generation followed by compilation, missing only one of the many optimization techniques implemented by the GHC. 01:09:46 monqy: opse 01:09:57 CakeProphet: the C backend is deprecated 01:10:03 ah. 01:11:00 still you get a lot of free optimizations for using LLVM. 01:11:07 free stuff in general. 01:11:27 granted 01:11:32 C does the same thing for you. 01:12:30 -!- sllide has quit (Ping timeout: 252 seconds). 01:13:40 elliott: psst. I've got a secret to tell you. 01:13:43 MEOW MEOW MEOW. 01:13:49 tswett: In-channel? 01:13:53 That's the worst way of delivering secerts. 01:13:54 secrets. 01:14:02 Oh, I... agree. 01:14:10 are you ashamed yet 01:14:14 But yeah. Secret secret secret. 01:14:23 {- Note [Declaration/signature overlap] 01:14:24 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 01:14:24 There's an awkward overlap with a type signature. Consider 01:14:24 f :: Int -> Int = ...rhs... 01:14:24 Then we can't tell whether it's a type signature or a value 01:14:24 definition with a result signature until we see the '='. 01:14:26 So we have to inline enough to postpone reductions until we know. 01:14:28 -} 01:14:30 groan 01:15:06 :( 01:16:02 so what sort of parser will yours be will it be able to handle this in a claener maner?? 01:16:16 elliott: oh, and, uh... PCHOOOOO. And... uh... 01:16:25 good secrets 01:16:49 Don't pretend you don't understand. 01:16:56 oh? 01:17:10 Heir of Breath. Seer of Light. Knight of Time. Witch of Space. 01:17:14 Got it? Good. 01:17:21 is that a homestuck thing 01:17:25 No. 01:17:27 no tswett has just gone mad 01:17:36 i decree it 01:17:40 good decree 01:18:03 amen 01:18:13 -!- variable has quit (Excess Flood). 01:18:52 god bless tswett gone mad america 01:19:12 monqy: what is this Homestuck thing? 01:19:14 The best kind of America. 01:19:29 tswett: I'm not into that sort of thing. 01:19:44 monqy: I see. 01:19:48 Well, PCHOOOOO. 01:19:55 pchoo 01:20:10 ah yes he has homestuck psychosis. 01:20:13 perfectly normal. 01:20:20 tswett: I'm not into that sort of thing. 01:20:23 monqy "not a sexual deviant" monqy 01:20:40 CakeProphet: perhaps you could explain to me this Homestuck thing. 01:20:51 it's... uh 01:20:52 no 01:20:54 I can't explain it. 01:20:55 -!- invariable has joined. 01:20:56 tswett: take it to /msg this channel is pg 01:21:09 too many words. too much time. 01:21:36 * tswett has stopped pestering #esoteric. 01:21:48 speaking of which I need to catch up on the new pages. 01:22:00 oh... there aren't any. 01:22:31 a whole month with no updates. 01:22:46 is this the ending? 01:22:48 .. 01:22:49 no 01:23:29 I thought there had been updates, like, a week ago. 01:23:43 CakeProphet: read the news 01:24:12 Would you stop filling the channel with this filth? There are children here. Like Sgeo. 01:24:47 the news just takes me to an RSS feed whose last update is also the 6th of september. 01:25:22 There's an EoA meter 01:25:24 The news is lower down on the front page, you idiot. 01:25:37 Now 01:25:45 monqy: looks like ghc strips out non-pragma comments at the lexer level 01:25:49 because there's no production for them 01:25:56 a reasonable thing to do 01:26:06 elliott: I... know? 01:26:44 CakeProphet: http://ompldr.org/vYXFseg 01:27:11 elliott: I... know? 01:27:46 You're being dense on purpose, right? 01:27:55 I thought Sgeo was saying there was more updates I just had to go to the news 01:28:05 now I understand 01:28:06 ??? 01:28:10 ??? 01:28:15 ???????? 01:28:16 ???, the noise of understanding. 01:28:26 21:23 < tswett> I thought there had been updates, like, a week ago. 01:28:26 21:23 < Sgeo|web> CakeProphet: read the news 01:28:37 my brain: "oh Sgeo is pointing me to the updates" 01:28:44 bad brain 01:28:46 never trust a tswett. 01:30:20 also I totally need to spend money on one of these overpriced hoodies. 01:31:39 so you can wear it in public or what 01:31:43 -!- invariable has changed nick to variable. 01:31:59 monqy: yes 01:32:10 so that I can find other HS fans, but mainly because I like the designs. 01:32:58 also because I only have one good hoodie 01:33:46 and winter fast approaches and I have money to throw away on the overpricedness. 01:33:46 all good reasons. 01:34:04 -!- CakeProphet has quit (Quit: Reconnecting). 01:34:18 -!- CakeProphet has joined. 01:34:19 -!- CakeProphet has quit (Changing host). 01:34:19 -!- CakeProphet has joined. 01:41:52 -!- Patashu has quit (Quit: MSN: Patashu@hotmail.com , Gmail: Patashu0@gmail.com , AIM: Patashu0 , YIM: patashu2 .). 01:44:02 http://www.orchestra.uwaterloo.ca/img/keysig.jpg 01:44:36 That's just G flat minor, you pussy 01:45:34 Wait till you get C flat 01:47:08 I like that there's a natural and a flat on the same line 01:47:22 The natural is an annotation; it's pretty common 01:48:00 I repeat what I said 01:48:05 monqy: OK, time to write Qhc.AST 01:48:10 monqy: or should it be Qhc.Ast.......... 01:48:18 decisions 01:48:25 Abstract syntax tree 01:48:42 I'd go AST because I don't want syntax and tree to feel left out 01:48:42 It probably cancels out a previous C# F# signature 01:48:58 I guess that's not common, but some typesetters do it 01:49:43 of course, the true genius is the instruction on how to play it 01:50:38 Yeah, violinists are prima donnas 01:51:04 monqy: yes but ... consistency with Qhc...................... 01:51:46 ........... 01:52:15 monqy: ................ 01:56:06 you guys are weird. 01:56:15 -!- Jafet has quit (Quit: Leaving.). 01:57:07 CakeProphet: die.......... 01:59:39 -!- Jafet has joined. 02:02:29 -!- Sgeo|web_ has joined. 02:03:45 -!- Sgeo|web has quit (Ping timeout: 252 seconds). 02:06:11 -!- augur has quit (Remote host closed the connection). 02:06:20 monqy: im bad at code 02:06:26 oops 02:06:30 me too 02:07:41 what the hell is infixexp 02:08:09 infixexp? 02:08:23 is this a haskellreport thing or a ghc thing 02:10:47 http://www.haskell.org/onlinereport/haskell2010/haskellch3.html#x8-220003 02:10:50 |- infixexp (prefix negation) 02:10:52 ah, my enemy. 02:11:03 qop 02:11:27 fexp→[fexp] aexp (function application) 02:11:32 oh no, do I have to maintain a list of applied arguments 02:11:33 rather than 02:11:34 crurying 02:11:53 do yoU? 02:12:01 if so>: be nonstantart...? 02:13:45 -!- MDude has quit (Read error: Connection reset by peer). 02:14:03 -!- MSleep has joined. 02:14:18 monqy: wow lambdas cannot have guards... 02:14:37 they can't even have mutliple caluses,,, 02:14:53 things which make moqny sad: 02:14:53 that 02:19:05 elliott: isn't it more efficient to apply arguments all at once instead of currying? 02:19:08 I assume that's why they do that. 02:19:25 that can be done at a later level dude 02:19:32 oh, okay. 02:21:18 |qcon { fbind1 , … , fbindn } (labeled construction, n ≥ 0) 02:21:24 haskell there is literally no way n could be < 0 here 02:21:27 you are silyl 02:22:07 qcon}{ 02:22:29 ndnibf 02:23:16 elliott: dude you don't know about NegativeConstructorLabels? 02:23:50 lol 02:26:24 Fin from Adventure Time just said hubris. 02:26:31 I wonder how many kids would actually know what that means. 02:26:51 "kids dont know words" -cakepropehtepth 02:28:47 "whats a hubris" - kids 02:28:59 "in your fac,e liot" - cakeprohplhet 02:29:30 wat 02:34:20 -!- augur has joined. 02:36:07 and now they just used macabre 02:37:51 -!- Sgeo|web_ has quit (Ping timeout: 252 seconds). 02:37:53 oh no 02:38:53 EInfix [] (whatevermyliteralthingis 9) (LeftSection thenamefor-) 02:39:02 monqy: finally -99 is as ugly in expression trees as it is in reality 02:39:10 CakeProphet: macabre is not an uncommon word.... 02:39:54 "Syntactic precedence rules apply to sections as follows. (op e) is legal if and only if (x op e) parses in the same way as (x op (e)); and similarly for (e op). For example, (⋆a+b) is syntactically invalid, but (+a⋆b) and (⋆(a+b)) are valid." 02:40:00 monqy: it's like they're trying to avoid suggesting a concrete parse strategy 02:42:08 elliott: but I'm watching a cartoon for kids. That's not a common word for kids to know, I think. Same for hubris. 02:42:14 but maybe America is just dumb. 02:42:23 i'm pretty sure most kids know what macabre is 02:42:29 maybe you just don't talk to many kids 02:43:01 monqy: help me prove to elliott that American kids is dumb. 02:43:10 how 02:43:11 lol 02:43:21 I don't have much experience with kids either 02:44:38 In my experience, American kids are less literate in English than I am in Japanese. 02:44:55 Heck, I may well be more literate in Mandarin than some American kids are in English. 02:45:01 And I know maybe 2 words of Mandarin. 02:45:28 s/American kids/Americans/ 02:45:30 do some american kids know less than 2 words of english (are babies kids) 02:45:40 my parents certainly don't know what hubris or macabre means. 02:45:45 monqy: I specified "literate" for a reason. 02:45:49 also: people who don't speek enlgiush?? 02:46:03 I can kinda-sorta parse meaning out of simple written Mandarin, but don't speak the language. 02:47:02 monqy: I believe he meant that he can only speak two words of Mandarin. 02:47:10 but it wasn't obvious that's what he meant. 02:47:26 I can basically pull off "ni hao". 02:47:28 :P 02:47:36 (diff | hist) . . N Simon meets alvin‎; 02:46 . . (+66) . . Raddy5 (talk | contribs)‎ (←Created page with 'simon the chipmunk once met alvin the chipmunk in winnipeg, canada') (Tag: possible vandalism) 02:47:38 http://en.wikipedia.org/wiki/Simon_meets_alvin 02:47:42 Thank god for Recentchanges. 02:48:13 http://ompldr.org/vYXFuNQ 02:50:14 this is a good page 02:51:46 monqy: http://sprunge.us/iCaU 02:51:48 it is a start... 02:52:30 qual 02:52:36 qualifier 02:53:38 monqy: also with more accents that's a spanish question word. 02:53:40 hm, what handles ()? considering it's special syntax and all 02:53:56 monqy: oh hmmmmmmm 02:54:00 monqy: that might be a constructor I think? 02:54:03 just like (,,) and the like are constructors 02:54:08 I will Think About It 02:54:15 |( exp1 , … , expk ) (tuple, k ≥ 2) 02:54:18 that is what the report says you see... 02:54:23 aha... 02:54:29 gcon→() 02:54:30 |[] 02:54:30 |(,{,}) 02:54:30 |qcon 02:54:37 hmm that means lists should use NonEmpty too 02:54:56 or maybe they should both use [], it's not like I don't have redundancy elsewhere 02:54:56 haaaaskellllllll 02:55:08 monqy: oh i just realised I don't actually support /resolved/ infix expressions 02:55:13 monqy: the infix thing there is lifted from a ghc proposal 02:55:27 monqy: but in ghc, there's a constructor for parens, so you can just add parens and have resolved unresolved infix expressions with just one operator 02:55:29 inside 02:55:30 to resolve them 02:55:35 oh wait hmm no 02:55:38 I don't need parens to resolve it, all is well 02:58:25 -!- Jafet has quit (Quit: Leaving.). 02:59:29 oh dear, it looks like one of the spambots was clever enough to find the main page 02:59:51 it has happened 02:59:55 it seems to have problems with the beginnings of its sentences 02:59:58 oh wow this is better than our current main page 03:00:01 refuse to revert 03:00:19 on. ntains, "Eat my dust!" I'll be a monkey's uncle! 03:02:41 yes 03:03:03 -!- yorick has quit (Ping timeout: 244 seconds). 03:08:27 alt→pat -> exp [where decls] 03:08:27 |pat gdpat [where decls] 03:08:28 | (empty alternative) 03:08:28 03:08:28 gdpat→guards -> exp [ gdpat ] 03:08:28 guards→| guard1, …, guardn (n ≥ 1) 03:08:30 monqy: comomplicated 03:09:21 data Clause = Clause Pat (Either Exp [(NonEmpty Guard, Exp)]) [Decl] 03:09:22 monqy: grosse 03:09:26 :( 03:10:55 A note about parsing. The expression 03:10:55 case x of { (a,_) | let b = not a in b :: Bool -> a } 03:10:55 is tricky to parse correctly. It has a single unambiguous parse, namely 03:10:55 case x of { (a,_) | (let b = not a in b :: Bool) -> a } 03:10:55 However, the phrase Bool -> a is syntactically valid as a type, and parsers with limited lookahead may incorrectly commit to this choice, and hence reject the program. Programmers are advised, therefore, to avoid guards that end with a type signature — indeed that is why a guard contains an infixexp not an exp. 03:12:25 monqy: :( 03:12:59 :( 03:15:29 -!- pikhq_ has joined. 03:16:02 -!- pikhq has quit (Ping timeout: 276 seconds). 03:16:04 elliott: parsers with limited lookahead are for chumps. 03:24:03 -!- Stelpa has joined. 03:24:12 Hi :) 03:25:24 -!- copumpkin has joined. 03:25:35 Sal'. 03:25:36 hi 03:27:14 I am really new to esoteric programming languages, and i am wondering, which is the most popular? :s 03:27:27 *Popular*? Probably Brainfuck. 03:27:29 brainfuck is the first one i heard of, and it is the one that interests me the most sofar :s 03:27:33 lol, i see :) 03:27:49 popular isn't a good thing, in brainfuck's case 03:27:58 whynot? :s 03:28:38 too many people making too many bad derivatives 03:28:41 for one 03:28:52 i see 03:29:15 well, i promise not to do that, lol 03:30:35 what esoteric language is the least punishing, monqy? 03:30:42 in terms of coding in it 03:30:54 sorry for asking annoying questions, btw :x 03:30:58 hm 03:31:01 you probably get these a lot 03:31:12 not much, actually 03:31:26 really? :o 03:31:43 at least not when I'm around 03:32:03 prolly malbolge 03:32:11 elliott: nice try >_> 03:32:22 i've been reading up on them :P 03:32:27 least punishing esoteric language to program in probably depends on your abilities, what you consider esoteric, and what you consider programming 03:32:30 i know at least about malbolge >_> 03:32:31 i was serious 03:32:45 oh 03:32:48 least 03:32:51 underload 03:33:35 i see, monqy 03:34:18 -!- Nisstyre has quit (Quit: Leaving). 03:34:57 -!- Nisstyre has joined. 03:40:24 -!- CakeProp1et has joined. 03:40:33 -!- CakeProphet has quit (Ping timeout: 248 seconds). 03:40:33 perl is one of the least punishing esolangs. 03:43:22 most punishing 03:47:22 -!- tiffany has quit (Quit: Leaving). 04:02:27 monqy: you should learn Perl just so you can bitch about it legitimately. 04:03:02 this is a good reason 04:03:26 yep that's right. I get to bitch about Perl because I use it for Serious Shit. 04:03:28 one time I read this big perl book and for a while I could even write stuff in perl but then I forgot about everything 04:03:59 because I went back to using haskell after I got better things to do than read a perl book (I was on a family raodtrip, had no internet access, etc etc) 04:04:09 I'm not entirely sure how I learned Perl actually. 04:04:33 I think after reading about it in small segments over the course of a few months I got to a point where I could actually start writing programs. 04:04:49 but there was never just a point where I was like "okay I'm going to learn Perl" 04:06:59 fizzie: have you ever used state? 04:07:07 (state variable declaration in Perl) 04:07:39 I always just use package-level lexical variables instead. But state might actually be clearer sometimes... 04:07:43 I just never think to use it. 04:10:19 monqy: I'm sure this is a dumb question but do you ever program? 04:10:29 I get asked that a lot 04:10:38 (giggling right now) 04:10:44 what do you mean by program 04:11:15 well I mean I never see you talking about programming. So I just wonder if you ever work on any projects. 04:11:23 ahh 04:11:28 yes I do program but I don't like it 04:12:04 wait 04:12:08 i guess that depends on what you mean by 04:12:09 work 04:12:09 and 04:12:11 projects 04:12:41 because yes I do work, and I do have projects, but you might not say I ever work on the projects 04:14:09 go on. 04:15:35 I'm not sure I follow. 04:16:00 -!- Stelpa has left ("Leaving"). 04:17:55 oh 04:17:56 uh 04:18:19 so you have ideas for projects but don't finish them? 04:20:15 there are a few types of not finishing but yeah the biggest thing i've ever finished outside of a school related thing (university; i unwisely chose computer science as my major) wasn't very big :'( 04:20:41 where by big I mean in all of complexity, importance, being interesting, and friends 04:21:57 for a recent example of not finishing things: today i was going to work on one of my projects, opened up the code, deleted some lines, put them back in, looked at some documentation, got frustrated, closed code, closed all of my tabs but one 04:21:59 yeah I'm the same way really. 04:22:53 the biggest projects I've done so far are work-related. 04:22:56 so people paid me to finish them. 04:23:19 im paid in threats of failure 04:23:26 lolwat 04:23:29 or uh 04:23:44 im bad at saying things ;_; 04:24:07 but the only reason I finished a lot of the things I finished is because I really had to finish them 04:24:27 they were painful and uninteresting and if I had a choice I would have abandoned them 04:24:27 ah because they were school projects. 04:25:00 yeah 04:25:28 I plan to finish more big things though. 04:25:33 now that I'm more comfortable organizing larger projects. 04:25:47 i have big plans but i'm not making any progress and am suddenly busy because of school 04:25:56 first step: finish this word generator 04:26:00 then: write out rules to portal chess 04:28:14 'ti$' => {'\\' => 55} 04:28:16 bah, what the hell. 04:28:27 I have to filter out some of this shit. 04:28:32 i have 3 main projects but none of them seem very easily finishable and I question whether they're even worth working on 04:28:35 :( 04:28:39 what does that even do 04:28:40 monqy: what are they? 04:28:53 that's part of the markov model my perl script generated. 04:29:07 I was commenting on the fact that there are lot of non-word things in it. 04:29:09 such as that. 04:29:21 though they're very unlikely I suppose. 04:30:05 one is a programming language I'm designing to solve all of my problems ever, one is a roguelike i enjoy because i want to enjoy a roguelike, and one is a nebulous secret mystery project 04:30:20 ah okay. 04:30:43 well, I've always been interested in creating a text-based game. Not necessarily a rogue-like. 04:30:53 the problem with the programming language is that I don't know how to solve all of my problems ever, or even quite what they are 04:31:05 yes that's a bit of hurdle. 04:31:17 the problem with the roguelike is that ugh implementation 04:31:29 what about it? 04:31:30 the problem with nebulous secret mystery project is nebulous secret mystery project 04:31:36 the ugh implementation? 04:31:39 yes. 04:32:04 * CakeProp1et has a little bit of experiencing with programming MUDs, though that's quite a bit different than a roguelike. 04:32:10 probably the best way is to have a domain-specific language. 04:32:18 to code all of the puzzles/monsters/items/etc 04:32:38 right now i'm stuck in two places 04:32:46 one is a good place and one is the ugh implementation 04:33:24 the good place is that i have a clear design i want to follow, the ugh implementation is that i can't get ui to work because everything is awful 04:33:37 monqy: maybe I could help? 04:33:50 how would you help? it might be helpful to have help...... 04:34:00 yeah, pretty much. 04:34:09 two people working on a project would increase the odds of it being finished. 04:34:22 and really what you'll probably end up with is a nice codebase to write many different games. 04:34:34 ...in theory. 04:35:08 -!- CakeProp1et has changed nick to CakeProphet. 04:35:39 the thing i got frustrated about is that i couldn't find a good console ui or whatever it's called library 04:35:55 vty? 04:36:06 yeah see I'm used to a MUD which is pretty much linemode so I don't know anything about those. 04:36:12 monqy: or: don't console 04:36:33 my problem with vty is that i couldnt' find a way to place characters individually and i dunno how efficient vty's way of doing things is 04:36:49 monqy: or: don't console 04:36:56 my problem with not consoleing is ew 04:37:14 i have to have a console interface or i will hate myself forever 04:37:39 monqy: not cconsoling =/= not text based 04:37:53 monqy: ncurses!!! :> 04:37:59 elliott: i know 04:38:10 monqy: see df 04:38:20 i'd hate myself forever if i did it like df 04:38:38 df uses OpenGL right? 04:38:42 monqy: why 04:38:43 sdl i thought 04:39:09 elliott: i dunno there's just something i like about console that isn't there in other things 04:39:20 monqy: fuck that 04:39:22 :( 04:40:10 like my font, being able to select things, the ~charm~ 04:40:20 it is a horrible concern but i don't know what i'd do without it ;_; 04:40:46 monqy is weird. 04:40:49 CakeProphet: the haskell "ncurses" library and "hscurses" both had problems when i looked at them 04:40:51 just use some console thing then. 04:40:55 monqy: selectable font 04:40:59 like whatever elliott said to use. 04:41:30 but it won't be the font i like will it :( 04:41:41 good thing i like horrible fonts 04:41:50 monqy: selectable font 04:41:59 ie any 04:42:01 oh i see what you said there 04:42:04 hm 04:42:08 (tempting) 04:43:04 that way i also wouldn't also have to make another frontend for windows people, at least 04:44:13 also you can do things like draw status bars without crappy block drawing characters 04:44:39 better control over colours, too :P 04:45:06 but i prefer crappy characters :( really thick lines and blocks and stuff look ugly to me 04:45:36 monqy: weirdo 04:45:42 eh? 04:45:50 i never suggested those 04:45:55 bah I don't know what filter regex to use... 04:46:24 consider using half-height lines to draw hp and [stat] bars on the same line 04:46:32 saving space 04:46:32 hm 04:46:54 I could do that 04:47:32 my previous plan was to use = signs because i couldn't think of any better symbol 04:48:15 [\p{Alphabetic}\p{Dash_Punctuation}\p{Connector_Punctuation}'] 04:48:16 maybe? 04:48:29 -!- copumpkin has changed nick to imsaguy4. 04:48:41 hm? 04:48:48 -!- imsaguy4 has changed nick to copumpkin. 04:49:10 monqy: I am trying to come up with the best regular expression to filter out all of the characters I don't want in my dataset. 04:49:16 I'll try this one. 04:49:23 oh 04:49:30 why all the \p in there 04:49:51 that's how you specify Unicode properties. Though there may be a way to specify multiple ones in one \p thingy 04:49:57 but I don't know how. 04:50:05 ah 04:50:35 and ' isn't in any of those categories? 04:50:52 also i hope those are the symbols you want in your dataset not out of it? 04:51:03 correct. 04:51:17 currently my regex is \P{Number} 04:51:29 but that leaves stuff that contains $ and _ and \ 04:51:32 which are apparently like... 04:51:35 things in books, for some reason. 05:01:30 -!- Vorpal has joined. 05:18:41 back 05:20:43 monqy: RIP http://en.wikipedia.org/wiki/Simon_meets_alvin 05:20:52 yeah i sawe :( 05:21:11 i like how it was deleted as a test page of all things 05:25:08 -!- CakeProphet has quit (Ping timeout: 252 seconds). 05:26:51 "Terrence Tao, at http://golem.ph.utexas.edu/category/2011/09/ and independently Daniel Tausk (private communication) have found an irreparable error in my outline. In the Kritchman-Raz proof, there is a low complexity proof of K(\bar\xi)>\ell if we assume \mu=1, but the Chaitin machine may find a shorter proof of high complexity, with no control over how high. 05:26:51 My thanks to Tao and Tausk for spotting this. I withdraw my claim. 05:26:51 The consistency of P remains an open problem. 05:26:51 Ed Nelson" 05:26:53 -!- CakeProphet has joined. 05:26:53 -!- CakeProphet has quit (Changing host). 05:26:53 -!- CakeProphet has joined. 05:26:53 rip claim 05:31:51 monqy: mourn 05:32:05 rip 05:39:00 http://www.haskell.org/onlinereport/haskell2010/haskellch4.html 05:39:01 oh no 05:41:27 weeeeeeeee 05:42:23 monqy: re language project: @ 05:43:07 mm 05:49:33 It really irritates me when a textbook makes a claim that I know to be *very* wrong. 05:49:47 what is the claim 05:50:10 This history textbook claims that the Japanese language was formed by Korean settlers going to Japan in the 4th century, and that the language they spoke eventually evolved into Japanese. 05:51:18 As it so happens, at this time there most probably already existed a Japonic language family. (this is believed to be *about* when Japanese diverged from the Ryukyuan languages) 05:52:09 Aaaand if that were true, Japanese and Korean would be a lot more similar. 05:52:49 Rather than having a handful of maybe-cognates and some curious grammatical similarities. 05:53:50 -!- CakeProphet has quit (Ping timeout: 240 seconds). 05:55:43 -!- CakeProphet has joined. 06:06:26 do any native english speakers here find this sentence to be acceptable: "John will speak with the boys and Susan will the girls" 06:06:49 that's pretty awkward 06:07:00 ok 06:07:11 i say things like that sometimes but yeah that is awkward 06:07:16 I'd word it more like "John will speak with the boys and Susan the girls" 06:07:16 i think susan should speak with the boys instead imho 06:07:18 with more commas 06:07:22 monqy: yes that's nicer 06:07:31 although i'd just duplicate it there really 06:07:34 i think susan should speak with the boys instead imho 06:07:34 monqy: yeah ;) 06:07:37 this is a funny joke laugh 06:08:31 Yeah, "will" makes it a bit strange. 06:08:48 hooray for me 06:08:49 The way I see it is that if you repeat or change an earlier word like "will" or "speak" in that case, you have to grab the rest as well; so "... and Susan {will speak with, speak with, with,} the girls" 06:08:49 I'd word it something like "John will speak with the boys, and Susan the girls" 06:08:51 -!- BeholdMyGlory has quit (Ping timeout: 260 seconds). 06:09:03 There's probably a few other comma placements that make it reasonable. 06:09:12 -!- oerjan has joined. 06:09:30 Deewiant: Sounds right. 06:09:57 "and susan speak with the girls" sounds awkward to me 06:10:01 -!- BeholdMyGlory has joined. 06:10:05 im not worried about comma placement 06:10:19 thats orthography that indicates structure, so thats ok 06:10:26 mess with commas as much as you want 06:10:28 -!- CakeProphet has quit (Ping timeout: 255 seconds). 06:10:49 Yeah, commas are merely hints at structuring. 06:11:04 Hence why there's quite a bit of flexibility with their placement. 06:11:21 -!- CakeProphet has joined. 06:11:22 -!- CakeProphet has quit (Changing host). 06:11:22 -!- CakeProphet has joined. 06:12:03 Also, you may wish to qualify your requests with "do any native English speakers here *except zzo38* [...]" 06:12:20 I have a sneaking suspicion he will throw a spanner in the works. 06:12:30 lol 06:12:49 zzo38 is a native English speaker? 06:12:56 shachaf: Surprisingly, yes. 06:13:05 zzo is a native speaker of the zzo38 dialect of English. 06:13:13 i like zzo english 06:13:26 (Too bad he is the only speaker) 06:13:48 * shachaf doesn't quite understand zzo38's motivations. 06:14:16 Madoka-Kaname: we are all the only speakers of our own idiolects 06:14:29 zzo is the best thing about #esoteric. 06:14:55 i wouldnt go that far 06:15:48 -!- Ngevd has joined. 06:16:08 monqy: http://sprunge.us/UiMF 06:16:10 not much left............ 06:16:10 Morning! 06:16:15 CakeProphet: I suppose that, now that I take the channel name into consideration... 06:16:23 augur: If you wouldn't go that far, that just proves that you're one of the inferior ones. 06:16:40 elliott: i was going to say you're the best thing about #esoteric :( 06:16:45 :( 06:16:45 * augur runs away crying 06:16:50 lambdabot is the best thing about #esoteric 06:16:51 augur: a clear misjudgement 06:17:01 ahahaha 06:17:04 Madoka-Kaname is correct 06:17:06 * shachaf doesn't quite understand zzo38's motivations. 06:17:11 shachaf: I think that /is/ zzo's motivations. 06:17:18 I am not too sure what's going on here 06:17:21 elliott: Being misunderstood? 06:17:22 Or at least as close to an externally-digestible form as one can get. 06:17:25 elliott: so much ast 06:17:29 shachaf: Yep. 06:17:32 elliott: but then... surely his motivation has lead to folly 06:17:36 since we now understand his motivation! 06:17:41 zzo is clearly an agent of the Intelligent Data Entity 06:17:43 augur: Do you? I sure don't. 06:17:44 im glad im not implementing haskell.... 06:17:49 but 06:17:50 but 06:17:52 Madoka-Kaname++ 06:17:52 elliott: I understand zzo. 06:17:55 monqy, you should implement Haskell 06:17:58 CakeProphet: Lies and folly. 06:17:58 because I have magic powers. 06:18:01 how can his motivation be for noone to understand his motivation 06:18:05 and still be successful! 06:18:08 this is not possible D: 06:18:14 lol "noone" 06:18:29 Would you prefer noöne? 06:18:31 he's zzo he can do anything 06:18:35 pikhq_: yes that's better 06:18:45 oh god, CakeProphet is a diaresist 06:18:52 Hooray, mild archaicisms! 06:18:52 kyle johnson is a fucking diaresist 06:19:01 "coördination" everywhere 06:19:04 no I just prefer it to silly things like noone 06:19:10 augur: I use it sometimes as well, but only because I delight in archaicisms. 06:19:14 who's kyle johnson 06:19:15 no one is preferred actually. 06:19:23 CakeProphet: "nobody" 06:19:24 elliott: a linguist 06:19:31 CakeProphet: someone 06:19:34 hmm, I guess that's kind of unfair to disembodied entertains 06:19:34 CakeProphet: everyone 06:19:35 elliott: a nobody is fine too. 06:19:35 I also delight in "thou". 06:19:39 no-one is kind of gross though 06:19:44 s/entertains/entities/ 06:19:48 augur: yes those are words. 06:19:51 Now I am even less sure what is going on 06:19:53 CakeProphet: so is noone 06:19:56 noone is like noon with an e at the end. 06:19:57 And that's a bit more than mildly archaic, really. 06:20:01 Ngevd: hi 06:20:04 Ngevd: what is... up 06:20:16 CakeProphet: heaven forbid 06:20:30 A cardinal direction not available in 2 dimensions 06:20:32 monqy: oh no i have to support datatype contexts 06:20:36 CakeProphet: When you say it like that, it looks like a Middle English "noon". 06:20:46 monqy: "haskel tweotheotusnadtand ten lots of horors" 06:20:53 yes it just looks like a weird way to spell noon to me. 06:20:58 Ngevd: what if your dimension is the vertical axis 06:21:05 CakeProphet: well you suck 06:21:15 Then it is left right forward backwards, but rotated 06:21:16 elliott: datatype contexts aren't dead? 06:21:21 monqy: not yet... 06:21:25 anti-rip... 06:21:35 diaf datatype contexts..... 06:21:36 augur: I'm fine with concluding this "debate" on that note. 06:21:45 Well, North South East West 06:21:56 CakeProphet: me too 06:22:06 body→{ impdecls ; topdecls } 06:22:06 |{ impdecls } 06:22:07 |{ topdecls } 06:22:09 WHAT THE FUCK IS IMPDECL YOU PIECE OF SHIT 06:22:17 oh imports 06:22:21 lol 06:22:22 lolololol 06:22:26 .. 06:27:27 so I watched two entire seasons of Adventure Time today. 06:27:35 that's a bit much. 06:30:27 ...I... I don't really know what to do now. 06:30:46 Watch the entire run of Star Trek 06:30:56 In reverse Watsonian Chronological order 06:32:40 I will now have a shower 06:32:44 To become clean again 06:32:46 -!- Ngevd has quit (Quit: Leaving). 06:33:15 "Noted Sherlockian authorities have credited him with from one to five wives in an effort to reconcile discrepancies in the Watsonian chronology, although ... 06:33:23 " 06:34:00 so, the entire run of star trek, with one to five divorces. 06:34:16 hi 06:34:24 the ho 06:34:29 rip ho 06:34:50 yo ho ho 06:38:41 -!- elliott has quit (Ping timeout: 248 seconds). 06:42:37 ...I have no clue what is causing this bug. 06:43:03 monqy: okay so maybe Perl is pretty punishing when you debug it. :P 06:54:09 -!- monqy has quit (Quit: hello). 06:56:40 What, it's got a debugger and all. 06:57:15 I'm bad at debuggers. :P also a debugger wouldn't really help here. 06:57:24 it was a case where I knew exactly where the bug was but not why 06:57:27 but now I've figured it out. 06:57:31 I think. 06:57:39 a new output will determine if I'm correct. 07:10:23 I really just.... 07:10:33 don't understand object oriented programming anymore. 07:10:50 haskell... it beckons you... 07:12:26 the weirdest thing ever is object-oriented Perl. 07:16:38 `run perl -e "%t=(); $x = \$t{a}; $$a = 2; print %t" 07:16:44 Bareword found where operator expected at -e line 1, near "275a" \.(Missing operator before a?) \ syntax error at -e line 1, near "; =" \ Execution of -e aborted due to compilation errors. 07:16:56 oh 07:17:04 `run perl -e '%t=(); $x = \$t{a}; $$a = 2; print %t' 07:17:07 a 07:17:14 `run perl -e '%t=(); $x = \$t{a}; $$a = 2; print values %t' 07:17:17 No output. 07:17:23 oh. hmmm 07:17:32 `run perl -e '%t=(); $x = \$t{a}; $$x = 2; print values %t' 07:17:35 2 07:17:38 okay cool. 07:18:31 GetOptions ( 07:18:32 d => \$debug_mode, 07:18:32 'h|help' => \$help_mode, 07:18:32 N => \$dont_normalize, 07:18:33 'o=s' => \$target_offset, 07:18:36 map {$_, \$datasets{$_}} keys %$Acro::Data::data 07:18:42 ); # best option handling, now better. 07:18:54 (note: not an actual comment in the source) 07:30:10 -!- nooga has joined. 07:44:16 -!- CakeProphet has quit (Ping timeout: 252 seconds). 07:46:06 -!- CakeProphet has joined. 08:10:49 -!- Phantom_Hoover has joined. 08:36:50 fizzie: er wait... what encoding is this google ngram data in? 08:39:40 All the interwebs data is in valid UTF-8; I don't really know about the book stuff. 08:40:58 I think "the book stuff" is what I'm using. 08:41:23 Yes, well. UTF-8 is what a reasonable person would assume, but you never know. 08:42:19 I was just wondering because Perl keeps giving me: 08:42:36 utf8 "\xEE" does not map to Unicode at ./construct_grams.pl line 20, <$f> line 219654. 08:47:16 Hrm. Well, it's true enough that a plain \xEE is not a complete UTF-8 sequence. 08:47:29 Could be just a bug in the datta. 08:47:37 ....... >_< 08:48:08 maybe it's something wrong with Perl? 08:49:21 I don't know what line 20 is doing, or what's on line 219654 of your file. 08:49:52 line 20 is 08:49:55 -!- ais523 has joined. 08:49:56 while(<$f>) 08:50:12 Heh, well; it's just reading. 08:50:20 .....yes I'm aware. :P 08:52:28 but I'm pretty sure my filtering regex isn't working properly now because the encoding isn't read properly or something.. 08:52:55 Well, how about the data, then? 08:53:19 "head -n 219654 | tail -n 1 | od -tx1z" or something. 08:53:38 I wouldn't be too surprised if there was just some broken UTF-8 in there. 08:54:11 (The Gutenberg files are in a horrible condition, for example. Though of course one hopes Google folks would have been more careful.) 08:56:07 I'm annoyed that there isn't a more efficient way to do that head|tail, it looks optimizable 08:56:19 regarding today's xkcd: who/what the fuck is corliss? 08:56:46 0000000 30 36 34 35 30 09 31 39 37 34 09 32 09 32 09 32 >06450.1974.2.2.2< 08:56:47 0000020 0a >.< 08:56:47 0000021 08:56:51 I have no clue what that means. 08:56:58 also I don't even know if that's the right file 08:57:07 oerjan: "Jeb Corliss (born March 25, 1976) is a professional BASE jumper, skydiver, and wingsuit flyer"? 08:57:11 since perl spams far too many Unicode errors for me to know which file it's on. 08:57:16 fizzie: ah 08:57:35 That line looks just fine, I don't see any EEs there. 08:57:43 thanks 08:59:46 fizzie: so for the head command I do line-1? 09:00:16 ais523: Possibly "tail -n +219654 | head -n 1" would be better, it wouldn't need to stuff all that data through the pipe. 09:00:29 I'm doing a different line 09:00:31 809 09:00:39 do I type 808 or 809 for head? 09:00:53 I am not concerned about milliseconds. 09:01:23 Depends on whether the Perl count is 0-based or 1-based; the one given for the head should be 1-based. 09:01:43 (Since "head -n 1 | tail -n 1" will give the first line.) 09:01:58 utf8 "\xE9" does not map to Unicode at ./construct_grams.pl line 20, <$f> line 809 09:02:10 ~$ cat /media/Elements/googledata/googlebooks-eng-1M-1gram-20090715-0.csv | head -n 809 | tail -n 1 | od -tx1z 09:02:13 0000000 24 30 2e 31 33 09 31 39 36 31 09 35 09 35 09 35 >$0.13.1961.5.5.5< 09:02:14 decipher plz 09:02:16 0000020 0a >.< 09:02:19 0000021 09:03:25 Well, I see no non-ascii on that line. Maybe you could check the neighboring lines, and/or recheck whether it's the right file. 09:04:02 I stopped it immediately so it's the right one. 09:06:10 E9 does sound latin-1ish, since it's é. 09:06:42 ..latin-1? 09:07:00 But it sounds unlikely all of it would be in latin-1. 09:07:09 well that would make sense for English files I guess, but why would they use latin-1 if there's also Chinese. 09:10:48 oh nevermind it was just something weird happening. 09:11:06 > map (chr . read . ("0x"++)) $ words "24 30 2e 31 33 09 31 39 36 31 09 35 09 35 09 35" 09:11:07 because I forgot to supply it with the directory to the right files. 09:11:07 "$0.13\t1961\t5\t5\t5" 09:11:13 I have no clue what it was reading... 09:11:19 but now I'm not getting four-billion errors. 09:11:59 oerjan: The text version is right there on the right side, you know. 09:12:10 > map (chr . read . ("0x"++)) $ words "30 36 34 35 30 09 31 39 37 34 09 32 09 32 09 32" 09:12:11 "06450\t1974\t2\t2\t2" 09:12:26 duh :P 09:12:47 man I'm so good at debugging. 09:12:48 the best. 09:12:56 *d'oh 09:18:21 > maxBound :: Char 09:18:22 '\1114111' 09:18:44 > showHex 2097151 "" 09:18:45 "1fffff" 09:18:46 > maxBound :: Bool 09:18:47 True 09:18:50 woah. 09:19:10 > showHex 1114111 "" 09:19:11 > maxBound :: Word128 09:19:11 "10ffff" 09:19:12 Not in scope: type constructor or class `Word128' 09:19:16 :( 09:19:34 @hoogle Word128 09:19:34 No results found 09:19:39 @hoogle Word64 09:19:39 Data.Word data Word64 09:19:46 alas 09:22:03 > True > False 09:22:03 True 09:22:23 You could deduce some sort of "truth is greater than falsehood" philosophy out of that. 09:23:25 > GT > LT 09:23:26 True 09:23:29 Also "bigger is better". 09:24:03 wow with a 128-bit word you could represent every ASCII character as a bit. 09:24:16 the entire word itself represents a superposition of ASCII characters. 09:26:09 that's a fairly efficient representation of an "ASCII set" 09:26:39 Maybe you could patent bitsets? 09:26:39 as many of the set operations can be computed with bitwise operators. 09:26:49 ....I doubt it. 09:26:54 someone has thought of this I'm sure 09:27:16 Well, uh, java.util.BitSet and all the bitset-based STL specializations of std::vector... 09:27:54 I don't think vector is what I'm talking about. 09:27:56 well... maybe it is 09:28:41 It is commonly implemented by stuffing sizeof(unsigned)*CHAR_BIT or so bits into each machine word. 09:29:43 I believe there's a slight amount of controversy, since it makes v[k] slower (have to do some bitshifting), but uses less space. 09:29:53 In Java-land it's a separate class. 09:31:49 Also because it's hard to point to a single bit. 09:32:10 "Note that vector does not actually meet the requirements for being a container. This is because the reference and pointer types are not really references and pointers to bool. See DR96 for details." 09:33:10 http://www.reddit.com/r/math/comments/l6qa3/i_know_this_is_really_basic_to_a_lot_of_people/c2q8vwt 09:33:10 Phantom_Hoover: You have 1 new message. '/msg lambdabot @messages' to read it. 09:33:19 I don't like this person and I don't even feel guilty about it. 09:33:48 i think haskell's unboxed Bool arrays also pack. 09:39:44 indeed they do. 09:40:09 -!- oerjan has quit (Quit: Later). 09:42:24 -!- ais523 has quit (Ping timeout: 258 seconds). 09:45:34 -!- Phantom_Hoover has quit (Quit: Leaving). 09:55:33 -!- ais523 has joined. 10:39:06 -!- sllide has joined. 10:39:56 -!- Patashu has joined. 10:44:20 -!- sebbu has quit (Read error: Connection reset by peer). 10:45:18 -!- sebbu has joined. 10:51:32 -!- asiekierka has quit (Read error: Operation timed out). 11:21:28 -!- derdon has joined. 11:36:28 -!- Jafet has joined. 11:36:32 -!- Sgeo|web has joined. 11:36:58 elliott (log-reading) CakeProphet Phantom_Hoover (does he logread?): Homestuck news update. 11:37:05 EoA5 will go up on 10/25 11:37:24 15 days away? 11:37:30 Better be really good 11:56:19 If it drops during class I'm going to watch it in class 11:56:32 (Well, actually, we get a break, so I'd watch it then) 12:26:52 -!- nooga has quit (Ping timeout: 260 seconds). 12:46:54 -!- ais523_ has joined. 13:12:44 -!- Patashu has quit (Ping timeout: 276 seconds). 13:13:01 -!- Jafet has quit (Quit: Leaving.). 13:20:59 -!- ais523 has quit (Ping timeout: 244 seconds). 13:34:34 -!- zzo38 has joined. 13:34:54 If the wind is sufficiently strong, can you make a hole in zero? 13:41:24 -!- derrik has joined. 13:47:57 -!- Madoka-Kaname has quit (Ping timeout: 260 seconds). 14:09:53 -!- derrik has quit (Ping timeout: 252 seconds). 14:09:57 -!- copumpkin has quit (Quit: Computer has gone to sleep.). 14:16:45 -!- myndzi has joined. 14:21:56 -!- nooga has joined. 14:35:43 -!- copumpkin has joined. 14:46:54 -!- Madoka-Kaname has joined. 14:54:17 zzo38: have you ever taken a portable fan to play mini golf? 14:55:41 -!- ais523_ has quit (Quit: Page closed). 14:56:22 The Astrolog program supports the Tropical and the Sidereal zodiac, but it does not support IAU zodiac (which is more scientifically accurate than either the Tropical or Sidereal; but obviously the predictions of personality and so on are equally nonsensical). 14:56:32 quintopia: No. Can you? 14:57:38 -!- Phantom_Hoover has joined. 14:58:18 -!- ais523 has joined. 15:01:11 But using the IAU zodiac would be much more complicated because it is different for each planet! 15:03:02 -!- sllide has quit (Read error: Connection reset by peer). 15:03:22 (As a system of angular measurement, the Tropical and Sidereal are obviously more convenient; but they do not correspond to the actual constellations (they were somewhat more accurate in the past), but are still usable as a system of angular measurement.) 15:04:44 -!- Ngevd has joined. 15:07:42 Hello! 15:08:04 Thank god, I was worried when you didn't say it. 15:08:18 I got distracted 15:09:34 So, what is happening in the WORLD OF ESOTERIC PROGRAMMING? 15:13:54 I also think that it's theoretically possible to end up with two stations that it's illegal to travel between via any route at all, without a specific exception making it legal to do so <__moz> Possibly Frodsham-Runcorn (as shown on this map). As Frodsham is associated with "Runcorn Group", and Runcorn is "Runcorn Group", the permitted route is the shortest distance from the origin to the destination over which a regular scheduled passenger 15:13:55 train service operates. Unfortunately, none of the trains which use the Halton Curve (the connection from the line from Frodsham to the line to Runcorn) stop in Frodsham. If you ignored Frodsham's association with Runcorn, you could use an indirect route via Liverpool. In the real world, most people would catch a 'bus instead. I believe you're right, you can't get a single ticket Frodsham->Runcorn that is valid for travel. The National Rail 15:13:57 site backs you up, and requires you to get Frodhsam->Liverpool and Liverpool->Runcorn as separate tickets. 15:14:05 this is now officially the most awesome TDWTF sidebar thread ever 15:14:09 it just gets better and better the more you rtead 15:14:10 *read 15:15:13 http://forums.thedailywtf.com/forums/t/25060.aspx 15:15:16 I want to put it in the topic 15:15:21 but I'd probably get shouted at for doing so 15:15:32 http://news.bbc.co.uk/1/hi/programmes/newsnight/9612063.stm 15:16:09 'tis also worth reading http://www.rossrail.co.uk/central/routeqn1.html (linked from that thread) 15:16:25 I suspect this could be made into an esolang moderately easily; it wouldn't be TC, but could still be quite powerful 15:17:11 Ngevd, BRAAAAABEEEN 15:17:31 HUMAN JAWS SHOULD NOT BE THAT LARGE 15:17:42 Also, Braben, a gaming industry leader? 15:17:46 Frontier was in the 90s. 15:17:46 brb 15:18:06 zzo38: it is hard to blow a ball uphill, but it might be effective on the flat holes 15:18:21 RollerCoaster Tycoon 3 does not an industry leader make. 15:19:05 quintopia: OK, but is the use of a fan permitted? Or are you required to use the natural wind? 15:20:30 Back 15:20:59 Braben was the best they could get on that budget 15:20:59 zzo38: it depends on whom you are playing with. i'm sure they might enjoy trying it one time if everyone can use it. 15:30:14 Reading the train document thread 15:30:16 quintopia: OK, but I will count the time as well as the number of strokes. 15:30:16 It is messed up 15:36:41 it is beautifully messed up 15:36:49 incidentally, I've since taken to just using the bus 15:40:13 where the rules used to be really complex, but have since been simplifie 15:40:15 *simplified 15:40:31 If this system actually is this crazy 15:40:36 I may have broken the law 15:40:53 By buying a single ticket from two Northumbrian towns and going via Newcastle 15:46:09 -!- MSleep has changed nick to MDude. 15:46:36 you probably have a decent excuse in that you didn't have a clue what you were doing 15:47:14 was Hexham one of them? 15:47:21 Yes 15:47:35 I suppose if I asked the other, I could work out if it was legal or not 15:47:56 assuming I actually wanted to struggle with the Routeing Guide again 15:47:56 I could have gone Glasgow via Dumfries, then King's Cross via Edinburgh?? 15:48:27 Ngevd: according to ATOC's reply to Rossrail, there's an exception involving Scotland that they didn't tell anyone about 15:48:40 I told you it got increasingly crazy as time went on 15:48:45 ....! 15:49:03 That is so bad my ellipses have bad grammar! 15:50:24 The other was Morpeth, btw 15:51:29 ah, the capital of Northumberland 15:51:34 which has a famously dangerous train corner 15:51:41 (the random things you learn playing BlogNomic…) 15:51:51 Got a friend who LIVES pretty much on that train corner 15:51:56 He has had a train in his back garden 15:52:39 ouch 15:52:51 so, for Hexham, the nearby routing points are Newcastle and Carlisle 15:53:14 and for Morpeth, Newcastle and Edinburgh Group 15:54:40 So, I'd have to use the Newcastle group? 15:54:46 so it's legal to take a /direct/ train from Hexham to Newcastle, followed by a /direct/ train from Newcastle to Hexham 15:54:55 and otherwise, you have to take a route within 3 miles of the shortest route 15:55:06 Okay, so I chose wisely 15:55:15 was it a direct train in each case? 15:55:18 Yes 15:55:30 so yes, there's specific exception letting you do that 15:55:56 err, *followed by a /direct/ train from Newcastle to Morpeth 15:56:02 I thought you meant that 15:56:11 and by direct, I think it means "with no stops in between" 15:56:31 I thought it would mean "with no changes inbetween" 15:57:46 was it within 3 miles of the shortest route? I'm not very good at Northumberlandish geography 15:58:07 By trains, the next shortest route would go through Glasgow 15:58:09 So yes 15:58:45 then you're OK 15:59:03 Hurrah. 15:59:45 If I wanted to go from Hexham to, say, Truro, how devilish would that be 16:02:24 I'll assume "very" 16:03:37 -!- ais523_ has joined. 16:03:50 any comments here since ais523 without the underscore last spoke? 16:04:02 Hurrah. 16:04:03 If I wanted to go from Hexham to, say, Truro, how devilish would that be 16:04:03 I'll assume "very" 16:04:13 presumably 16:05:02 the part of the thread where I pretty much broke down was where I learnt that the document that explained whether you were allowed to break journies or not cost £4000 and wasn't available online 16:05:15 !!! 16:06:23 That's as much as the nicest edition of the OED! 16:06:24 and National Rail's own search recommended I try eBay to get a copy (admittedly, because it was farming the search out to Yahoo!, but still...) 16:06:48 -!- monqy has joined. 16:07:00 20 volume blue leather bound! 16:07:09 And actually useful! 16:07:54 I'm not sure if it's worth £4000 just to find out the answer to one question that would save me less than £4000 over my lifetime, likely 16:07:58 perhaps I'll ask elliott if I should buy it 16:08:12 -!- ais523 has quit (Ping timeout: 260 seconds). 16:08:22 That's probably not the best of ideas 16:09:39 gah, looks like the wireless in my office has gone wrong again 16:21:07 -!- ais523_ has quit (Quit: Page closed). 16:26:35 -!- nooga has quit (Ping timeout: 255 seconds). 16:32:04 Ngevd, yes it is, you just have to do the opposite of what he tells you. 16:32:47 -!- sllide has joined. 16:32:58 Oh, that makes sense 16:33:58 -!- Vorpal has quit (Quit: ZNC - http://znc.sourceforge.net). 16:38:30 -!- Vorpal has joined. 16:40:33 why on earth do I open port 25565 (tcp) on my laptop for access from my desktop. I also open port 22, which I obviously know why. But wtf is 25565. And when did I do that? 16:40:44 Minecraft server 16:40:54 oh right 16:41:10 I used to run that back when I was debugging mcmap and my desktop was too weak to run an mc server 16:41:14 that makes sense 16:41:21 also for mcmap 16:41:26 (duh) 16:43:02 btw is there rsync for windows? As a precompiled binary, Only interested in plain rsync. Don't care for rsync over ssh even in this case. Nor server functionality 16:48:19 -!- pikhq has joined. 16:48:29 -!- pikhq_ has quit (Ping timeout: 258 seconds). 16:49:02 Not as far as I am aware 16:52:01 But then again I have no idea what rsync is 16:52:01 Ngevd, well, there is cygwin 16:52:38 Ngevd, rsync is a wonderful tool to sync directory structures on different computers. It works really well. 16:52:45 Hmm... 16:52:45 really simple too 16:52:59 I don't think I have much of a need for it at the moment 16:53:05 Right now I have a need for dinner 16:53:08 So, bye 16:53:09 -!- Ngevd has quit (Quit: Leaving). 16:53:14 Ngevd, works well over internet as well due to being smart about it. Like sending hashes of chunks to decide which ones has to be transferred 16:57:38 -!- nooga has joined. 17:02:32 -!- Ngevd has joined. 17:05:23 Hello! 17:11:05 -!- CakeProphet has quit (Ping timeout: 255 seconds). 17:16:14 B. 17:16:15 R. 17:16:17 Freakin' 17:16:18 B. 17:16:21 -!- Ngevd has quit (Quit: Leaving). 17:18:02 -!- sllide has quit (Read error: Connection reset by peer). 17:20:09 -!- Ngevd has joined. 17:20:16 -!- Ngevd_ has joined. 17:20:23 Aaah! 17:20:28 Two mes! 17:20:35 -!- Ngevd_ has left. 17:20:43 Better 17:34:12 http://en.wikipedia.org/wiki/Chupacabra good picture 17:36:38 -!- elliott has joined. 17:44:57 Hello elliott 17:46:24 08:53:19: "head -n 219654 | tail -n 1 | od -tx1z" or something. 17:46:24 08:56:07: I'm annoyed that there isn't a more efficient way to do that head|tail, it looks optimizable 17:46:24 elliott: You have 5 new messages. '/msg lambdabot @messages' to read them. 17:46:32 how could you optimise that? 17:52:10 08:56:19: regarding today's xkcd: who/what the fuck is corliss? 17:52:12 Jeb Corliss (born March 25, 1976) is a professional BASE jumper, skydiver, and wingsuit flyer. He has jumped from sites including Paris' Eiffel Tower, Seattle's ... 17:52:43 oh too late 17:52:53 09:00:16: ais523: Possibly "tail -n +219654 | head -n 1" would be better, it wouldn't need to stuff all that data through the pipe. 17:53:00 fizzie: Well with "ideal" pipe streaming semantics it shouldn't matter :-) 17:55:38 09:24:03: wow with a 128-bit word you could represent every ASCII character as a bit. 17:55:38 09:24:16: the entire word itself represents a superposition of ASCII characters. 17:55:38 09:26:09: that's a fairly efficient representation of an "ASCII set" 17:55:38 09:26:39: Maybe you could patent bitsets? 17:55:46 fizzie: I think it might just be too revolutionary for the patent system. 17:55:53 09:19:34: @hoogle Word128 17:55:53 09:19:34: No results found 17:55:54 http://hackage.haskell.org/package/largeword 17:56:42 13:34:54: If the wind is sufficiently strong, can you make a hole in zero? 17:56:42 Yes. 17:57:28 15:13:54: I also think that it's theoretically possible to end up with two stations that it's illegal to travel between via any route at all, without a specific exception making it legal to do so <__moz> Possibly Frodsham-Runcorn (as shown on this map). As Frodsham is associated with "Runcorn Group", and Runcorn is "Runcorn Group", the permitted route is the shortest distance from the origin to the destination over which a regul 17:57:28 ar scheduled passenger 17:57:28 15:13:55: train service operates. Unfortunately, none of the trains which use the Halton Curve (the connection from the line from Frodsham to the line to Runcorn) stop in Frodsham. If you ignored Frodsham's association with Runcorn, you could use an indirect route via Liverpool. In the real world, most people would catch a 'bus instead. I believe you're right, you can't get a single ticket Frodsham->Runcorn that is valid for tra 17:57:31 vel. The National Rail 17:57:33 15:13:57: site backs you up, and requires you to get Frodhsam->Liverpool and Liverpool->Runcorn as separate tickets. 17:57:36 A "'bus"? 18:00:46 elliott, well isn't bus short for omnibus? 18:00:52 though that seems quite weird 18:01:08 "A bus (play /ˈbʌs/; plural "buses" or "busses", /ˈbʌsɨz/), archaically also omnibus, multibus, or autobus)" 18:01:25 argh wikipedia, unbalanced parens 18:02:09 Yes but come on. 18:02:28 Vorpal: fixed parens 18:02:56 LolBot reverted likely spam by some guy who didn't log in to edit "Bus" 18:03:11 elliott, yes I agree that him using it for "omnibus" would not only be archaic but also pretentious. 18:03:23 Gregor, eh? 18:04:00 The best thing about editing WP anonymously is that my IP can change multiple times per day. 18:04:05 Because my router is a piece of shit. 18:04:07 hah 18:04:10 So people keep assuming I'm a vandal based on past vandalism. 18:04:22 "You were a vandal a day ago, you must be one now." 18:04:44 elliott, just link them to [[Dynamic IP]] or such 18:04:55 I once made an account on Wikipedia with the specific intent of getting banned as quickly as possible 18:04:59 17 minutes 18:05:05 heh 18:05:10 Vorpal: I usually just revert them until they give up because they don't want to break the rules. 18:05:17 Viva la revolucion. 18:05:19 -!- sebbu has quit (Read error: Connection reset by peer). 18:05:24 XD 18:05:43 -!- sebbu has joined. 18:05:43 -!- sebbu has quit (Changing host). 18:05:43 -!- sebbu has joined. 18:05:47 15:17:11: Ngevd, BRAAAAABEEEN 18:05:48 15:17:31: HUMAN JAWS SHOULD NOT BE THAT LARGE 18:05:48 Good words. 18:07:06 16:05:02: the part of the thread where I pretty much broke down was where I learnt that the document that explained whether you were allowed to break journies or not cost £4000 and wasn't available online 18:07:07 16:05:15: !!! 18:07:07 16:06:23: That's as much as the nicest edition of the OED! 18:07:11 Ngevd: Is this how you judge all prices. 18:07:25 Yes 18:07:30 I want that OED 18:07:32 elliott, just give a reasonable edit message. Like "fixed unbalanced parentheses" or such. 18:07:37 Ngevd: Let's buy it collectively. 18:07:43 Vorpal: Hey, they're already getting unpaid labour. 18:07:47 16:07:54: I'm not sure if it's worth £4000 just to find out the answer to one question that would save me less than £4000 over my lifetime, likely 18:07:47 16:07:58: perhaps I'll ask elliott if I should buy it 18:07:49 Not only yes, but hell yes. 18:07:54 elliott, I mean, to avoid the spam bot situation 18:08:16 Vorpal: I'm not going to write English that a machine can't understand to satisfy that machine. That's too ridiculous. 18:08:39 elliott, hm I guess it is mostly bots doing that... 18:08:41 16:43:02: btw is there rsync for windows? As a precompiled binary, Only interested in plain rsync. Don't care for rsync over ssh even in this case. Nor server functionality 18:08:41 Yes. 18:08:43 which is kind of silly 18:08:46 elliott, I found it. 18:09:11 17:34:12: http://en.wikipedia.org/wiki/Chupacabra good picture 18:09:11 how did you find me 18:11:51 -!- oerjan has joined. 18:12:09 hi oerjan 18:12:15 hi Vorpal 18:14:39 hi q 18:15:47 lo q 18:16:01 Hi Taneb 18:16:04 -!- Ngevd has changed nick to Taneb. 18:16:08 Hi Ngevd 18:18:29 hi Taneb 18:18:54 I'm going to be Taneb for a while now, I think 18:19:10 The other was Morpeth, btw 18:19:50 i choose to believe that place must have been brought to this world by a freak interdimensional accident 18:23:36 the part of the thread where I pretty much broke down was where I learnt that the document that explained whether you were allowed to break journies or not cost £4000 and wasn't available online 18:24:10 so basically, douglas adams did not really have to make anything up, it's just people outside england who think he did. 18:24:14 check. 18:25:23 People think Adams made shit up? 18:26:05 shocking, i know 18:28:11 -!- zzo38 has quit (Remote host closed the connection). 18:30:00 "I also think that it's theoretically possible to end up with two stations that it's illegal to travel between via any route at all, without a specific exception making it legal to do so (or just relying on the "if it's the shortest route you don't need to use the manual" exemption, which takes all the fun out of things). Also, this would fluctuate based on the train prices, just to make things even more complex; it's possible for it to be legal 18:30:00 one day and illegal another." 18:30:02 god bless britannia 18:38:29 -!- ais523 has joined. 18:40:43 hi ais523 18:41:26 hi elliott 18:41:39 today we learnt: it is indeed possible to go from Hexham to Morpeth via Newcastle 18:41:49 why, did you try it out? 18:42:06 no, too far away 18:42:10 I consulted the routeing tables 18:42:11 heh 18:42:22 this is better than mornington crescent, really 18:42:22 it just requires a small interdimensional detour 18:42:26 -!- Phantom_Hoover has quit (Ping timeout: 248 seconds). 18:42:26 sorry, I've been advertising THE BEST THREAD ON TDWTF because it's so awesome 18:42:34 just play it without telling everyone else about the ATOC guide 18:42:38 elliott: it involves Mornington Crescent, indirectly 18:42:39 and they'll just assume you're making shit up 18:42:52 because the Tube is part of it 18:42:59 ais523: haha 18:43:21 grouped into "London Group", but it's mentioned 18:43:29 in fact, you get a + on the train ticket when it's involved 18:43:40 and the orange train ticket you get for regular train travel then works on the Underground ticket barriers 18:43:49 I actually did this once; it confused Google 18:44:02 or to be precise, their department for handling train travel expenses 18:44:15 ais523: you realize you could make a game based on this which required that 4000 pound tome, and it would be almost like mornington crescent is pretending to be 18:44:24 oerjan: um are you ignoring me 18:44:24 oerjan: indeed! 18:44:27 that's exactly what I said :P 18:44:45 the game would be something like, everyone takes turns to name a potential route, and everyone else has to figure out whether it's valid within a certain amount of time 18:44:48 oerjan: I prefer to interpret "4000 pound tome" as weight not value here 18:44:48 did someone speak? 18:44:55 points are awarded appropriately, and the person who got the correct answer soonest plays next 18:45:04 elliott: looks like mental ignore 18:45:19 ais523: or he just didn't notice :P 18:45:40 a bit like me and Sgeo, then 18:45:43 I don't intend to ignore him 18:45:48 I just don't really manage to focus on anything he says 18:47:17 I'm so glad all our place names are ridiculous, or this would be no fun at all 18:47:33 I've got a book about Northumbrian place names somewhere 18:47:40 It's called Goodwife Hot 18:47:53 ^ul ((Morpeth )S:^):^ 18:47:53 Morpeth Morpeth Morpeth Morpeth Morpeth Morpeth Morpeth Morpeth Morpeth Morpeth Morpeth Morpeth Morpeth Morpeth Morpeth Morpeth Morpeth Morpeth Morpeth Morpeth Morpeth Morpeth Morpeth Morpeth Morpeth Morpeth Morpeth Morpeth Morpeth Morpeth Morpeth Morpeth Morpeth Morpeth Morpeth Morpeth Morpeth Morpeth Morpeth Morpeth Morp ...too much output! 18:48:43 perhaps the whole of northumberland has been dimensionally misplaced 18:49:03 ais523: I wonder if there's a way to get a non-UK country involved in this 18:49:09 ais523: also, what has Google got to do with it? 18:49:13 It was actually ripped out of downtown alternate Helsinki in 24 BC 18:49:18 elliott: they were one end of the train journey 18:49:20 I was giving a talk there 18:49:30 ah, your famous INTERCAL tutoring 18:49:33 services 18:49:40 no, not that 18:49:40 helsunk 18:49:48 although they did put me in charge of CADIE 18:49:55 as they couldn't find anyone else to deal with her 18:50:18 well, technically, they just gave me commit access then stopped editing the repo, but that's much the same thing 18:52:50 -!- Phantom_Hoover has joined. 18:52:52 Whenever I read 'glacial acetic acid' I think of glacé cherries and 18:54:32 I don't really know what to say after that. 18:56:26 Q.11: A permitted route for London to Newcastle is given as ER+MM. Is the following route permitted: London St.Pancras via Settle and Carlisle to Glasgow (map MM) and thence to Edinburgh (map ER). If not, why not ? Do you also accept that travel via Settle, Carlisle, and Hexham is not permitted ? 18:56:29 hey, it mentions Hexham! 18:56:44 I completely missed that there were more pages of "The amazing routeing question" 18:56:45 * ais523 is riveted 18:56:55 Relink me 18:56:55 Edinburgh seems to come up a lot. 18:57:00 -!- sebbu has quit (Read error: Connection reset by peer). 18:57:14 It's because Edinburgh is like a black hole but for trains 18:57:29 -!- sebbu has joined. 18:57:29 -!- sebbu has quit (Changing host). 18:57:29 -!- sebbu has joined. 18:58:21 http://www.rossrail.co.uk/central/routeqn1.html 18:58:33 Almost University Challeng time 18:59:23 challeng 18:59:54 It's like Challege, but with Polytechnics 19:00:36 thanks for the reminder 19:00:44 my grandmother tries to watch it religiously, but keeps forgetting 19:01:28 That's my approach to religion. 19:04:04 "I and others have now carried out a detailed study of the guide and have identified a number of situations where it is not possible to determine whether a route is valid or not because the Guide is either ambiguous or fails to mention the issue." 19:04:13 for bonus points, the person who /wrote/ that is called Mr. Feather 19:04:30 oh dear 19:04:59 Phantom_Hoover: Have you written the terrain generator yet. 19:05:00 -!- Taneb has quit (Ping timeout: 260 seconds). 19:10:40 for bonus points, the person who /wrote/ that is called Mr. Feather <-- mr. head paradox is probably involved in this. 19:11:11 oerjan: told you (re IWC) 19:11:17 universe reboot in 9, 8, ... 19:11:33 * oerjan hits elliott with a lampshade 19:11:36 oerjan: more like shutdown >:) 19:12:10 elliott: i am speaking about the above trainwreck, not the current iwc storyline 19:12:20 oerjan: suuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuure 19:12:23 oer "denial" jan 19:12:40 they _might_ become entwined at this rate, though 19:14:26 People I am disappointed in, a list: Phantom_Hoover. 19:18:20 I really wish the Prelude has a lazy natural type, and that length was genericLength 19:20:21 instance Num [()] where ... 19:20:34 -XFlexibleInstances 19:23:16 oerjan: [Void], more like 19:23:23 Anyway I mean it should be in there by default 19:23:29 Because it lets you compare lengths without doing something stupid like compareLength 19:23:51 (length xs > (9 :: Nat)) 19:23:59 Admittedly it'd be nice if there was defaulting there 19:24:19 While the name is long as genericLength I prefer compareLength 19:24:34 Deewiant: Why, it's gross 19:24:44 Deewiant: You're just inlining compare .: length 19:24:47 On lazy naturals 19:24:58 It's not very composable 19:25:04 No need to find the appropriate lazy naturals package on hackage 19:25:23 Mostly 19:25:28 > sort . tails . replicate 5 () 19:25:28 Couldn't match expected type `[a]' against inferred type `()' 19:25:32 > sort . tails $ replicate 5 () 19:25:34 [[],[()],[(),()],[(),(),()],[(),(),(),()],[(),(),(),(),()]] 19:25:34 Deewiant: Remember the part where I said I wanted it to be in Prelude? 19:26:13 elliott: My "while" there was meant to imply the current situation 19:26:31 > (compare `on` (() <$))) "abc" "abcd" 19:26:31 Oh, I thought you were listing it as a con to compareLength 19:26:32 : parse error on input `)' 19:26:35 (The length of its name) 19:26:39 > (compare `on` (() <$)) "abc" "abcd" 19:26:40 LT 19:27:13 -!- pikhq_ has joined. 19:27:34 -!- pikhq has quit (Ping timeout: 258 seconds). 19:27:56 @hoogle m a -> m b -> m (a, b) 19:27:56 Prelude zip :: [a] -> [b] -> [(a, b)] 19:27:57 Data.List zip :: [a] -> [b] -> [(a, b)] 19:27:57 Language.Haskell.TH strictType :: Q Strict -> TypeQ -> StrictTypeQ 19:28:15 ?ty liftM2 (,) 19:28:15 forall a1 a2 (m :: * -> *). (Monad m) => m a1 -> m a2 -> m (a1, a2) 19:28:20 > sortBy (compare `on` (() <$)) $ words "the quick brown fox jumped over the lazy dog" 19:28:21 ["the","fox","the","dog","over","lazy","quick","brown","jumped"] 19:30:57 -!- tiffany has joined. 19:31:39 Man, Haskell's AST is exhausting 19:31:53 > elem 's' "the quick brown fox jumped over the lazy dog" 19:31:54 False 19:32:07 eek 19:32:11 oerjan: "jumps" 19:32:24 Does any existing Haskell implementation do parsing before resolving imports? 19:32:28 oh well it's a past offense, anyhow 19:36:02 -!- Ngevd has joined. 19:36:23 Hmm, this "one abstract name type per type of name" approach isn't tenable 19:36:33 There's too many situations where anything from the right namespace is okay 19:36:34 Hello 19:36:42 So I guess I just want Name/TyName/ValName 19:36:52 Rather than Name/VarName/FieldName/ConName/OpName/TyName/TyVarName/ClassName/ModName 19:37:09 Especially since I can't guarantee that something in one of those types is actually a valid, in-scope name, since I'm parsing before resolving imports 19:37:13 So it's kind of pointless 19:37:23 oh hmm 19:37:29 oerjan: are module names their own namespace 19:37:31 yes, they are 19:37:37 OK, Name/TyName/ValName/ModName 19:38:24 -!- oerjan has quit (Quit: Good night). 19:42:48 -- | an arbitrary time in the future 19:42:49 endOfTime :: ClockTime 19:42:49 endOfTime = toClockTime $ CalendarTime { ctYear = 2020, ctMonth = January, ctDay = 0, ctHour = 0, ctMin = 0, ctSec = 0, ctTZ = 0, ctPicosec = 0, ctWDay = undefined, ctYDay = undefined, ctTZName = undefined, ctIsDST = undefined} 19:42:58 jhc isn't Y2020-compliant. 19:43:22 hey, it didn't say that endOfTime was the last possible time 19:43:28 just that it's an arbitrary time in the future 19:43:38 Tomorrow lunchtine 19:43:57 That's a terrible "time in the future" 19:44:12 It is a time 19:44:16 And it is in the future 19:44:20 ais523: it won't be in the future in 2020 19:44:22 Now, why is it terrible 19:44:25 so jhc is 2020-incompliant 19:44:34 It is in the future for a terribly short time 19:44:44 That is irrelevant 19:44:45 elliott: it didn't say it would /always/ be in the future 19:44:49 And flexible 19:44:56 well, the documentation will at least be wrong 19:45:00 really, tomorrow lunchtime would be a better impl of that spec 19:45:09 to break programs that misread it sooner rather than later 19:45:37 (that is, calculating tomorrow lunchtime, not hardcoding it) 19:46:06 IIRC one of the spam filters has a year x*10 bug every 10 years, because it uses regexes to detect "emails from a long time in the future" 19:46:15 that are hardcoded 19:46:30 and the solution to the present time matching the regex is to bump it another 10 years 19:50:41 heh 19:51:00 isn't that spamassassin 19:51:21 hmm, jhc remembers the exact type of every name in the Name; I should do that (but still have TyName/ValName as wrappers over Name since that's a relatively sane static decision) 19:52:02 elliott: ISTR you said a DS9K C has to be an interpreter; why? 19:52:39 Deewiant: I don't remember saying that, but I probably just meant it would be far easier as an interpreter 19:52:46 Since you want to change behaviour dynamically to trip programs up 19:52:52 Behaviour and representations 19:53:00 heh 19:53:40 Deewiant: What 19:53:49 Dynamic behaviour changing 19:53:50 | EVar VarName 19:53:50 | EField FieldName 19:53:50 | ECon ConName 19:53:50 Hmm, guess these get unified 19:53:52 Hadn't thought of that 19:54:19 Deewiant: Is there anything forbidding the bunch-of-chars representation of a pointer from changing over time? 19:54:26 Say, every time you dereference it? 19:54:35 Maybe, but maybe not 19:54:58 elliott: you can legally type pun it with a char[], and then dereferencing it would change the value of the char[] which is disallowed 19:55:09 if there wasn't one in scope, it might be legal 19:55:19 ais523: the as-if rule sure does lead to some strange things... 19:55:52 indeed 19:56:01 Hmm, apparently varargs in C are completely undefined? 19:56:34 huh? 19:57:43 §6.5.2.2 "Function calls" ¶6 "If the function is defined with a type that includes a prototype, and either the prototype ends in an ellipsis `(, ...)` or the types of the arguments after promotion are not compatible with the types of the parameters, the behavior is undefined." 19:57:58 Wow 19:58:01 What standard is that? 19:58:06 C1X 19:58:26 Check with C99 :P 19:58:29 This might be only for non-prototyped functions though, I'm not sure how this is meant to be read 19:58:48 Or no wait, that says it has a prototype, right :-P 19:59:29 Okay right yes 19:59:38 So if it's defined as varargs but the prototype says it's not 19:59:43 Never mind 19:59:46 -!- quintopia has quit (Ping timeout: 248 seconds). 20:00:12 | ExportType TyName (Exports ValName) 20:00:12 | ExportClass TyName (Exports ValName) 20:00:12 Huh, wasn't expecting those to come out the same 20:00:38 -!- quintopia has joined. 20:00:49 * elliott wonders if separate VarName/TyVarName types might still not be helpful... 20:01:48 xkcd and IWC used the same joke once. 20:01:49 http://www.irregularwebcomic.net/1463.html 20:01:51 They're separate namespaces so it probably would help clarify things 20:01:52 http://xkcd.com/157/ 20:02:17 * tiffany pokes channel for some scala learning thingies 20:03:12 Deewiant: Um I already have ValName/TyName 20:03:32 Deewiant: Just not variable versions of the above, which are distinguishable by their lowercaseness etc 20:03:33 elliott: But "x" can be either depending on context 20:04:15 Ngevd: Well, they're both obvious parodies of the same source material 20:04:20 Deewiant: Can it 20:04:26 Deewiant: I mean yes depending on context 20:04:34 Deewiant: But "X" can be ValName or TyName depending on context too 20:04:36 Constructor X or type/class X 20:04:46 Oh, right, constructors 20:04:59 But yeah anyway 20:05:01 THEY ARE EXACTLY THE SAME PARODIES 20:05:05 Deewiant: Or variable x vs. type variable x, which still fall under ValName vs. TyName 20:06:31 So what you were actually wondering about adding was separating X (constructor, ValName) and x (non-constructor value, VarName)? Or what? 20:06:50 Deewiant: Well, I have things like 20:06:56 newtype Context = Context [(TyName, TyName)] deriving (Show) 20:07:04 and I think, why not 20:07:08 newtype Context = Context [(TyName, TyVarName)] deriving (Show) 20:07:24 Well sure, why not :-P 20:07:58 Deewiant: Well, because I started out with VarName/ConName/FieldName/TyVarName/ClassName/blahblahblah and ended up with situations where more than one type was valid in a context and also there was no real static guarantees I was getting from it because you can't separate them properly at parse time anyway 20:08:21 (It's no good knowing that you have the name "x" as a FieldName if "x" is actually from FooModule and turns out to be a regular function) 20:08:29 Meh, just stick to the standard as far as reasonable in your implementation 20:08:35 Deewiant: The standard defines no AST 20:08:46 Deewiant: It just defines a grammar, and translation rules into a simpler form 20:09:27 So if the grammar doesn't distinguish, you don't need to either 20:09:43 Deewiant: The grammar distinguishes completely 20:09:54 But it's an all-seeing eye; I'm parsing before processing imports 20:10:01 So I /can't/ tell whether "x" is a VarName or a FieldName 20:10:30 (Also, the grammar can say (aname | bname) without ugly Left/Right constructors cluttering its use :-)) 20:12:17 I guess nobody linked the Deep C (and C++) slides here? http://www.reddit.com/r/cpp/comments/l6xni/deep_c_and_c/ 20:12:53 I'm pretty sure there's an error of omission on slide 16 - implicit declarations were dropped in C99 20:13:41 C: so weird. 20:13:48 Not really 20:14:10 Deewiant: That piece of shit site wants me to log in to download that, sigh 20:14:11 Got a PDF? 20:14:16 elliott: Top comment 20:14:20 Also bugmenot 20:14:22 Oh, heh 20:14:31 (I used the latter before looking at the comments, worked fine) 20:15:03 Wow, how long is this thing 20:15:07 Or is this server just very slow 20:15:09 445 slides 20:15:24 8 megs 20:16:03 Oh, I just had to reload to get it to actually load 20:16:12 Software, so reliable 20:16:15 Using the web viewer works up to a point 20:16:31 Around slide 250-300 it suddenly becomes unusably slow 20:16:50 " but for older versions of C, like ANSI C 20:16:50 and K&R, the exit value from this program will 20:16:50 be some undefined garbage value." 20:16:51 (Maybe 255?) 20:16:55 Filthy, machine-specific, garbage lies 20:17:05 Deewiant: reddit thinks that viewing slide n is O(n) 20:17:09 Due to decompression or whatever 20:17:16 Yeah I noticed 20:17:24 But it was a really noticeable dip at that certain point 20:17:34 " 20:17:34 And talking about C standards... if you want to show 20:17:34 that you care about C programming, you should use 20:17:34 int main(void) as your entry point - since the 20:17:34 standard says so." 20:17:35 Maybe they're in some kind of weird chunks or something 20:17:40 Asshole, that's just pointlessly verbose 20:17:46 No it's not 20:17:46 Shit's not a declaration 20:17:52 Yes it is 20:17:56 int main(void) === int main() in a definition 20:18:06 They're just saying that you should show you ~care~ by doing it for definitions too 20:18:12 RABBLE RABBLE 20:18:27 "It shall be defined with a return type of `int` and with no parameters: `int main(void) { /* … */ }" 20:18:35 s/.$/`"/ 20:19:15 Deewiant: The quoted code is obviously an example 20:19:23 int main() { ... } defines main with return type int and no parameters 20:19:57 These engineers have even worse posture than me 20:20:31 No you idiot, it'll be 0, it's static 20:20:51 No you idiot, it'll be garbage 20:21:12 I don't like this presentation's interleaving of language and implementation details 20:21:26 Yeah it's kinda practical that way 20:21:48 It assumes a non-DS9K x86ish implementation 20:21:55 Or the girl does 20:22:36 "if you compile in debug mode the 20:22:36 runtime might try to be helpful and memset your 20:22:36 stack memory to 0" 20:22:41 Gross, debug mode should try and break your program 20:22:50 I agree :-P 20:22:59 But it's probably true 20:23:09 I wouldn't be surprised if gcc -O0 zero-initialized everything 20:23:30 I wouldn't be surprised if gcc -O0 compiled to Python 20:23:34 It's slow enough 20:23:35 I would be 20:23:43 Well 20:23:51 I'd be surprised but in a good way 20:24:52 Also slide 190 20:25:08 Is #2 really completely undefined? 20:25:51 Eh, how do you go to a certain page in Chrome 20:25:58 Or even find out what page you're on 20:26:00 * elliott opens it in Evince 20:26:01 Beats me 20:26:10 And yeah, it is completely undefined 20:26:11 A floppy disk icon for "save" in this decade, Google? 20:26:28 Deewiant: Yeah, it is 20:26:34 Sequence points, etc. 20:27:07 Not garbage, it's static, god you're thick 20:27:07 Yeah sequence points I know, I just couldn't remember that a++ also restricts other reads from a 20:27:28 Well no it[s not static 20:27:30 But it's file scope 20:27:32 s/[/'/ 20:27:45 Registers 20:27:53 Or hmm 20:27:55 That's without optimisation 20:27:57 Stack reuse, then 20:28:18 Deewiant: Does the C get deeper than this, this is pretty obvious so far 20:28:20 The "garbage" with optimization looks like it might be argv 20:28:37 Not much 20:28:41 Depends on your definition of "deep" 20:28:58 It switches to C++ halfway through 20:29:07 Oh, I only have to read half of it 20:29:11 Nea 20:29:12 t 20:29:39 Slide 389 begins the ending bit 20:30:03 slide 389 :S 20:30:05 "I would never write code like that." 20:30:07 Who cares, you're dumb 20:30:23 that's probably about 380 slides further than I'd bother 20:30:46 "I don’t get a warning when compiling it, 20:30:46 and I do get 42" 20:30:53 olsner: Many of the slides amount to moving an arrow on the previous slide, or some such 20:30:58 You haven't been right in disagreement a single time yet, why do you think this will be your lucky day 20:32:20 Undefined order of printing for b and c calls 20:33:14 Another thing the girl forgot is that %zu doesn't work on MSVCRT so it's typically less portable than %d 20:33:38 Deewiant: That's too practical even for something like this, who gives a fuck about MSVCRT 20:33:56 Well the girl bitches about using %d to print sizeof(int) 20:34:27 And fact is that %d is much more likely to work in the real world than %zu, not everything supports %zu but practically all sizeofs fit in an int :-P 20:34:46 Does that make it any more right 20:34:59 lolwut 20:35:20 No, but since it's all about mixing implementation details with language details I thought that'd be worth a mention 20:35:22 Gregor: What 20:35:29 wutwut 20:35:40 Well the girl bitches about using %d to print sizeof(int) 20:35:47 (int) sizeof(int) PROBLEM SOLVT :P 20:35:49 This line was so funny out of context. 20:36:03 Phantom_Hoover: Yup, that's what I'm lolwutting about. 20:36:09 Hmm, can sizeof(int) actually overflow an int 20:36:21 Why not? 20:36:26 I don't think it possibly can 20:36:32 Let's say char is a bit 20:36:40 And sizeof(int) = one 20:36:42 Hmm 20:36:45 Does signedness fuck that up 20:36:50 I'm pretty sure sizeof(int) can't overflow an int ever 20:37:03 If int is 1 bit then sizeof(int) = negative one 20:37:14 Can int even be one bit 20:37:16 If you have two's complement 20:37:18 That doesn't sound so valid 20:37:27 No, CHAR_BIT >= 8 20:37:33 Right then 20:37:38 Show me how sizeof(int) can overflow an int 20:37:39 And INT_MIN <= -32767, INT_MAX >= 32768 20:37:40 It's all about size_t vs int though. 20:37:49 Who is this girl and why is she bitching about printf format strings. 20:37:56 Phantom_Hoover: http://www.pvv.org/~oma/DeepC_slides_oct2011.pdf 20:38:18 elliott: sizeof is implementation-defined 20:38:27 Well naw. 20:38:29 Deewiant: Like, completely? 20:38:39 elliott: I can have an int with range [-2^16,2^16) and size 4 megabytes 20:38:47 Deewiant: Hmm, right 20:38:51 Pah 20:39:07 elliott: §6.5.3.4 ¶5 "The value of the result of both operators is implementation-defined" (sizeof and _Alignof) 20:39:14 Hmm, can sizeof(int) actually overflow an int 20:39:22 The VALUE, but is the TYPE implementation-defined? 20:39:30 Deewiant: So can sizeof(int) = 0 even though int is sixteen bits in range 20:39:31 ln x < x, so no. 20:39:31 No, the type is size_t. 20:39:37 s/in/of/ 20:39:39 Phantom_Hoover: Yes it can 20:39:42 Phantom_Hoover: Deewiant just proved it 20:40:01 Oh, Deewiant is tricky, isn't he :P 20:40:03 elliott: I think it can actually be zero for everything 20:40:11 As there's nothing that says the size has to correspond in any logical way to the range. 20:40:14 At least this section doesn't appear to exclude that possibility 20:40:19 Deewiant: Even for char? 20:40:24 No, char is 1 20:40:24 char can't be 0 chars, that's just... 20:40:28 Heh 20:40:32 Foiled by standard madness. 20:40:35 Deewiant: Hey, that means C's TCness is more plausible through conventional methods 20:40:38 Other than that, it's the "size (in bytes) of its operand" 20:40:45 I think there's something about everything being representible as a sequence of bytes 20:40:47 (i.e. methods that make a "normal" expanding-tape BF interpreter able to be TC on a hosted system) 20:40:48 *chars 20:40:59 olsner: Does sizeof have to correspond to that 20:40:59 Hmm 20:41:04 I guess that's the only way you can exploit that 20:41:06 But still 20:41:09 Nothing says it has to be useful 20:41:25 §6.2.6.1 ¶2 Except for bit-fields, objects are composed of contiguous sequences of one or more bytes, the number, order, and encoding of which are either explicitly specified or implementation-defined. 20:41:32 So it has to be >= 1 20:41:51 Deewiant: Where is that related to sizeof's result 20:41:58 elliott: 2011-10-10 23:40:36 ( Deewiant) Other than that, it's the "size (in bytes) of its operand" 20:42:05 Ah 20:42:18 Deewiant: I think the committee would probably tell you that "size" has to mean "size" :-) 20:42:18 Anyway, the bigger problem with printf("%d", sizeof(foo)) is that it can fail even on sensible, legitimate systems. Particularly big-endian 64-bit ones. 20:42:20 Wait, is C TC now? 20:42:23 -!- elliott has left ("Leaving"). 20:42:26 -!- elliott has joined. 20:42:27 Sgeo|web: No, it's not. 20:42:33 Deewiant: It might be 20:42:39 Deewiant: Set sizeof(int) = one, make int bignum 20:42:47 CHAR_BIT = 9 20:42:53 Assuming sizeof really can be nonsense 20:42:58 Why 9? 20:42:59 But I think the committee would tell you that you can't have a TARDIS type 20:43:09 i.e. you can't possibly stuff n chars information into < n chars 20:43:11 size 20:43:18 thus partially specifying what "size" means 20:43:19 Phantom_Hoover: I can type 9 20:43:39 ^nr 20:43:48 There's a lot of stuff about bits and bytes in §6.2.6.1 (in general) and §6.2.6.2 (for integer types) that I can't be bothered to read now 20:43:55 It might be sensibly restricted. 20:44:02 Why don't you have all of !@#$%^&*() in the topic? 20:44:07 Except for ( I guess 20:44:12 and ) maybe 20:44:13 Sgeo|web: Too hard to pick shit out of 20:44:29 Deewiant: I really hope the C committee reads this shit some day 20:44:47 Deewiant: Or at least is somehow reeled into a Q&A session with us 20:45:05 §6.2.6.1 ¶4 Values stored in non-bit-field objects of any other object type consist of n × CHAR_BIT bits, where n is the size of an object of that type, in bytes. 20:45:39 Define "consist" 20:46:03 consist (third-person singular simple present consists, present participle consisting, simple past and past participle consisted) 20:46:07 (intransitive, construed with of) To be composed, formed, or made up (of). 20:46:11 Bugger 20:46:14 we have to go deeper: bignum bits 20:46:35 -!- yorick has joined. 20:46:37 elliott: You can still pad them, they explicitly allow for padding bits 20:46:48 So you can have sizeof(int) > (size_t)INT_MAX 20:46:56 Deewiant: Sure, fine 20:47:01 Deewiant: I'm just interested in proving C TC 20:47:03 I mean 20:47:06 I know it is TC standalone 20:47:10 Yeah I doubt that's going to happen 20:47:13 And hosted given a perverse OS 20:47:14 Standalone? 20:47:19 Deewiant: Erm, freestanding 20:47:22 You don't need CHAR_BIT 20:47:26 Bignum chars, sizeof everything is one, job done 20:47:33 Thus infinite pointers 20:47:59 Okay, cool 20:48:02 oh, freestanding C relaxes the limitations on chars? 20:48:41 olsner: it just doesn't have the header with CHAR_BIT 20:51:27 Sequence points are so strange 20:51:44 " 20:51:44 Well of course, because sizeof returns the number of bytes. And in C 20:51:44 int is 32 bits or 4 bytes, char is one byte and when the the size of structs 20:51:44 are always rounded up to multiples of 4" 20:51:56 Does anyone who actually believes this have a good enough understanding of the terminology to articulate it in these words 20:52:14 elliott: Are you sure that this business with consisting of bytes and bits doesn't disallow your bignum chars 20:52:28 Deewiant: Is "byte" not defined as what a char can store 20:52:36 Deewiant: Anyway, as-if rule 20:52:54 There's no way to find out whether a char is "really" composed out of bits in some nebulous metaphysical sense from within a conformant C program 20:52:56 byte - addressable unit of data storage large enough to hold any member of the basic character set of the execution environment 20:52:57 So it doesn't matter 20:53:04 A byte is composed of a contiguous sequence of bits, the number of which is implementationdefined 20:53:09 Deewiant: See above 20:53:10 (Woo, soft hyphen) 20:53:38 elliott: it demonstrates a lack of understanding of the abstract C language, but it's quite possible to develop a good enough understanding of how C works (in a specific environment) to say stuff like that 20:54:28 Deewiant: I guess you could say, detecting whether chars are bignum is a way to detect that they're not composed of bits, since it requires application of this rule 20:54:37 Deewiant: But I'm not sure you can actually detect that in a freestanding environment 20:54:41 They could just be bigger than you ever bother to check for 20:54:49 So I think the as-if rule works OK here 20:55:00 as-if rule? 20:55:22 Sgeo|web: The C standard has a clause saying you can implement it however you want so long as a conformant implementation cannot distinguish it from one implemented as the standard says 20:55:33 conformant program*? 20:55:37 Er right 20:55:41 So e.g. if it says, you must use two's complement, you don't actually have to, as long as no conformant program can detect that you're not 20:55:50 can a program detect bignum chars without invoking undefined behavior? 20:56:06 olsner: Not a freestanding one 20:56:16 elliott: ah, cool 20:56:21 It can keep incrementing an unsigned char in the hopes that it'll overflow but that just proves that char is at least that big 20:56:41 Can it decrement an unsigned char? 20:56:43 From zero? 20:57:06 Deewiant: Hmmm 20:57:19 Deewiant: unsigned char can be smaller than signed char, right? 20:57:22 And char can be signed char 20:57:42 sizeof(unsigned char) = one; it can hold one octet and overflows appropriately, but just has infinitely much padding. 20:57:51 char = signed char; sizeof(signed char) = one; bignum; no overflow 20:57:53 I wonder if you could "switch to a bigger C" when running out of (say) pointers and plug the old program's state into that 20:58:02 olsner: Not if it changes your answer to sizeof and the like 20:58:16 Deewiant: So yeah, all signed types are their minimum possible size but have sizeof one thanks to copious imaginary padding 20:58:18 Erm 20:58:20 Deewiant: Unsigned 20:58:26 All signed types are bignums 20:59:55 Deewiant: And hosted C can be TC with file IO 20:59:57 §6.2.5 ¶9 The range of nonnegative values of a signed integer type is a subrange of the corresponding unsigned integer type, and the representation of the same value in each type is the same. 21:00:04 Since IIRC it's explicitly allowed that file position/sizes might not fit inside the types used to represent them 21:00:09 I think you're meant to use negative one or something in that case 21:00:21 Deewiant: Hmm 21:00:46 Deewiant: Can't you just give the unsigned type a sign bit 21:00:53 i.e. make unsigned char actually signed :-) 21:00:57 Deewiant: but that only applies to non-negative values of signed integer types? 21:01:04 I have just edited TVTropes 21:01:20 * Sgeo|web vaguely hopes he's doing enough in the "not sitting down/lying down so much he gets a blood clot and dies" department 21:01:33 Sgeo|web: Sorry, you're going to die. 21:01:36 sounds like it doesn't exclude unlimited negative values as long as the positive values is a subrange of the unsigned type 21:01:43 Now I will sleep 21:01:46 -!- Ngevd has quit (Quit: what a big quitter he is, eh?). 21:01:48 olsner: omg 21:01:51 Deewiant: what the ols said 21:04:00 I think that works 21:04:10 Someone write a BF interp that stores everything with negative chars :-D 21:05:12 so bignum chars actually work as long as all the extra values are hidden in the negative range? 21:05:22 yep 21:05:34 I can't remember all the other funny rules we had troubles with :P 21:05:51 Sgeo|web, why the |web? 21:05:56 Phantom_Hoover: webchat, presumably. 21:06:15 so what's the thing with the bits? does that only apply for the (positive) range of the unsigned type? 21:07:23 rot13Char :: Char -> Char 21:07:24 rot13Char c 21:07:24 | c >= 'a' && c <= 'm' || c >= 'A' && c <= 'M' = chr $ ord c + 13 21:07:24 | c >= 'n' && c <= 'z' || c >= 'N' && c <= 'Z' = chr $ ord c - 13 21:07:24 | otherwise = c 21:07:26 Why is this in jhc 21:07:28 olsner: as-if rule 21:08:20 I guess a conformant C program can't detect whether it's in an environment that allows for TCness 21:08:55 Sgeo|web: char could just be /big enough/ for all its uses 21:09:55 Deewiant: Guess what the difference is between a (class) context on an instance and a (class) context on a value in standard Haskell 21:09:56 No cheating 21:10:01 Nobody else may participate 21:10:40 Between "instance Foo a => ..." and "foo :: Foo a => ..."? Beats me. 21:11:26 Deewiant: 21:11:31 foo :: Foo (a b) => ... 21:11:32 is OK; 21:11:36 instance Foo (a b) => ... 21:11:37 is not 21:11:47 In an instance decl, the type param to the class must be a tyvar 21:11:50 Erm 21:11:52 In an instance decl's context, the type param to the class must be a tyvar 21:12:00 In a value decl's context, it can be applications of tyvars too 21:12:16 That seems awfully arbitrary. 21:12:27 Deewiant: Yyyyyyyyep 21:12:35 2010 or 98 or both? 21:12:44 Deewiant: 2010, didn't look at 98 21:12:49 Probably both then 21:13:05 The difference is between context (the value/data/newtype decl one) and scontext (the instance/class decl one) 21:14:27 but, hmm... if freestanding programs can be TC because they don't need CHAR_BITS and standard (what's the term, hosted?) programs can do it using file i/o anyway, what was all the hoopla about? 21:14:49 elliott: Oh well, hence FlexibleInstances I suppose :-P 21:14:59 Deewiant: I'm trying to implement totally-standard Haskell at first :P 21:15:04 or are FILE, fopen, etc not actually as standard as I believe? 21:15:12 Deewiant: I'm tempted to use the same data-type here and enforce it arbitrarily somewhere else though 21:15:49 I might not like you if you do that 21:15:57 Deewiant: For which part 21:16:09 Reusing the data type 21:16:28 Deewiant: As opposed to duplicating all the code operating on them? 21:16:34 Yep! 21:16:49 I already have like fifty import types 21:16:50 (N.B.: I'm just saying random crap, I'm tired) 21:17:04 data Exports a 21:17:04 = ExportAll 21:17:04 | ExportOnly [a] 21:17:04 deriving (Show) 21:17:04 data Export 21:17:05 = ExportVar ValName 21:17:07 | ExportType TyName (Exports ValName) 21:17:09 | ExportClass TyName (Exports ValName) 21:17:11 | ExportMod ModName 21:17:13 deriving (Show) 21:17:15 data ImpSpec 21:17:17 = ImportAll 21:17:19 | ImportOnly [Import] 21:17:21 | ImportHiding [Import] 21:17:23 deriving (Show) 21:17:25 data SubImports 21:17:27 = SubImportNone 21:17:29 | SubImportAll 21:17:31 | SubImportOnly [ValName] 21:17:33 deriving (Show) 21:18:41 http://qntm.org/hypertime 21:18:43 BASTARD 21:18:46 -!- Phantom_Hoover has left ("Leaving"). 21:18:50 Ah. 21:18:51 -!- Phantom_Hoover has joined. 21:18:56 I see. 21:19:01 Phantom_Hoover: What. 21:19:01 XChat why do you close tabs so much 21:19:15 Anyway, IDEA-STEALING TELEPATHIC BASTARD 21:19:30 TELEBASTARD 21:19:48 Phantom_Hoover: or maybe you've just been projecting your idea into his mind accidentally 21:21:37 Maybe both 21:26:13 Deewiant: Hmm, I should probably strip out the infix part of my Type ast, since there's only one infix type operator in haskell and it has a fixed fixity 21:26:32 Only one? 21:27:10 Deewiant: (->) 21:27:41 foo :: Arrow (~>) => a ~> a 21:27:55 Deewiant: I don't believe that's standard 21:28:00 I don't know 21:28:33 Phantom_Hoover: Hey, you didn't tell me Hughes was working on another novel. 21:29:41 elliott, it didn't really captivate me. 21:29:45 Not enough physics. 21:29:53 -!- Patashu has joined. 21:30:34 constrs→constr1 | … | constrn (n ≥ 1) 21:30:34 constr→con [!] atype1 … [!] atypek (arity con = k, k ≥ 0) 21:30:34 |(btype | ! atype) conop (btype | ! atype) (infix conop) 21:30:34 |con { fielddecl1 , … , fielddecln } (n ≥ 0) 21:30:34 fielddecl→vars :: (type | ! atype) 21:30:39 I fucking hate Haskell. 21:31:06 elliott: klart som korvspad 21:31:08 The alllowercase abbrs style of the grammar is annoying 21:31:26 Deewiant: I don't give a shit about that, it's at least easy to talk about, what I care about is the complexity :P 21:31:36 I think C's AST is simpler 21:31:42 At least C90 21:34:45 Deewiant: Yeah, I'm pretty sure infix type varsaren't standard: 21:34:49 type→btype [-> type] (function type) 21:34:49 21:34:49 btype→[btype] atype (type application) 21:34:49 21:34:49 atype→gtycon 21:34:50 |tyvar 21:34:52 |( type1 , … , typek ) (tuple type, k ≥ 2) 21:34:54 |[ type ] (list type) 21:34:56 |( type ) (parenthesised constructor) 21:34:58 21:35:00 gtycon→qtycon 21:35:02 |() (unit type) 21:35:04 |[] (list constructor) 21:35:06 |(->) (function constructor) 21:35:08 |(,{,}) (tupling constructors) 21:37:30 21:37:31 decls→{ decl1 ; … ; decln } (n ≥ 0) 21:37:31 decl→gendecl 21:37:31 |(funlhs | pat) rhs 21:37:31 21:37:31 cdecls→{ cdecl1 ; … ; cdecln } (n ≥ 0) 21:37:33 cdecl→gendecl 21:37:35 |(funlhs | var) rhs 21:37:38 Deewiant: Spot the difference between decl and cdecl 21:37:58 pat / var 21:38:03 idecls→{ idecl1 ; … ; idecln } (n ≥ 0) 21:38:04 idecl→(funlhs | var) rhs 21:38:04 | 21:38:05 Deewiant: And again 21:38:33 gendecl / not 21:38:55 Argh, LHSes are such a mess 21:45:24 Deewiant: Semantic or syntactic error?: (top-level declaration:) Just f x = undefined 21:45:46 Syntactic? 21:46:10 Deewiant: Yep 21:46:23 Deewiant: Except, wait 21:46:25 No 21:46:28 Semantic 21:46:31 However... 21:46:37 Deewiant: (Just f) x = undefined 21:46:39 is syntactic. 21:46:41 (error) 21:46:47 Fuckin' Haskell, man 21:46:53 Why is the earlier not syntactic 21:47:07 Is a top-level capital letter ever valid? 21:47:08 Deewiant: It's just passing a wrong number of arguments to Just 21:47:10 Err, yes 21:47:11 Just x = Just 99 21:47:15 Oh, bah 21:47:20 let Just x = f 9 in ... 21:47:26 Deewiant: But (Just f) x isn't ok because basically 21:47:29 Oh hmm it might be 21:47:32 Yeah but nobody does that at toplevel :-P 21:47:33 OK but the point is that an lhs is either pat or funlhs 21:47:35 And eurgh 21:47:39 haha 21:56:55 Deewiant: What does your C AST look like 21:57:01 I want to feel better and/or worse about mien 21:57:02 mien 21:57:03 mine 21:57:22 I don't have an AST yet 21:57:34 I really haven't been spending much time on it at all :-P 21:57:40 I have a mostly implemented preprocessor 21:57:52 (No #pragma and other less important stuff) 21:58:34 (#pragma, #line, #error) 21:58:57 Deewiant: So "unimportant" 21:59:19 #error never needs to be implemented, it always does what it should 21:59:44 #line would require implementing proper error handling, meh 22:00:09 #error never needs to be implemented, it always does what it should 22:00:10 lol 22:00:14 #pragma is annoying because it expands into _Pragma and there might be some trickiness there, plus it's only for some floating point stuff 22:00:25 Uh, and errors, I think 22:01:08 Gregor: Holy shit, you JS fucktards have finally discovered that you can get a compiler to do CPS 22:01:11 Praise the fucking lord 22:01:35 #pragma STDC {FP_CONTRACT,FENV_ACCESS,CX_LIMITED_RANGE} {ON,OFF,DEFAULT} 22:01:40 Or implementation-defined behaviour 22:03:10 Oh and also #if isn't implemented, that was kind of the next thing to do along with adding tokens 22:03:32 I noticed that trifecta only does ByteStrings so I can't use it to parse a list of ADTs :-P 22:03:57 Deewiant: You're meant to layer that on top with parser transformers, I believe 22:04:25 Like how 22:04:35 Deewiant: Dunno, there's one to do layout 22:04:45 I have to restrict myself to Parsec because I want to be able to self-host without any language extensions 22:05:18 Well MonadLayout is a subclass of MonadParser, and MonadParser is very Char/Word8/ByteString 22:05:33 Well you can't accomplish parsing a list of ADTs, sure 22:05:39 But I think you could achieve whatever effect you want otherwise 22:05:59 The effect I want is that I have a list of ADTs and want to parse it :-) 22:06:01 | LFloat Integer Integer (Maybe Integer) 22:06:01 Hmm, I think I followed the grammar a bit too closely there 22:06:04 Should be Rational 22:06:11 Rather than an Integer for the fractional part :P 22:06:12 Or maybe I don't, but I think I do 22:06:21 Deewiant: ~~XY problem~~ 22:06:26 ~~~~ 22:06:29 ~~~~~~~~~~~ 22:06:30 Wut 22:06:42 -!- Phantom_Hoover has quit (Ping timeout: 248 seconds). 22:06:56 Deewiant: The ~s are for deemphasis, or something 22:07:06 What's "XY problem" 22:07:38 http://www.google.co.uk/search?aq=f&gcx=c&sourceid=chrome&ie=UTF-8&q=xy+problem 22:08:01 -!- Phantom_Hoover has joined. 22:08:08 Yeah, pretty much 22:08:28 i.e. Tool is too limited, try something else :-) 22:08:29 But to be fair I'm somewhat esoing the implementation, it being DS9K and all 22:08:40 So I think I'm justified in trying to do it weirdly 22:08:50 I might just depend on both parsec and trifecta 22:08:54 I don't actually believe the XY problem is a good diagnosis 90 percent of the time 22:09:11 It only works if all the people with problems are inexperienced 22:09:31 I guess constantly invoking it ensures that experienced people won't bother, so I guess it works sort of 22:11:07 -!- ais523 has quit (Remote host closed the connection). 22:11:25 http://en.wikipedia.org/wiki/File:Comeflywithme.jpg 22:11:34 Help Frank Sinatra wants to eat my soul. 22:14:35 You weren't aware? 22:17:12 "The grammar is ambiguous regarding the extent of lambda abstractions, let expressions, and conditionals. The ambiguity is resolved by the meta-rule that each of these constructs extends as far to the right as possible." 22:17:19 Deewiant: This is the worst rule in anything ever 22:17:39 C has maximal munch too 22:18:08 More like maximal TERRIBLE STANDARD. 22:18:40 * Phantom_Hoover → sleep 22:18:41 -!- Phantom_Hoover has quit (Quit: Leaving). 22:19:32 Deewiant: http://sprunge.us/CEce Make my AST bearable, thanks 22:21:30 Why is EList nonempty 22:22:06 And ETuple 22:22:20 -!- copumpkin has quit (Quit: Computer has gone to sleep.). 22:22:35 no binary base??? 22:22:40 does anyone still use octasl 22:22:46 chmod does 22:23:02 Deewiant: Because [] and () are constructors, not list/tuple literals 22:23:08 anything besides chmod? 22:23:09 Deewiant: The grammar agrees with me 22:23:12 Deewiant: Well, that's not true 22:23:22 Deewiant: The grammar says that () is a constructor and (a) is a parenthesised expression and (a,b) is a tuple literal 22:23:33 Deewiant: It also says that [] is a list literal and [a] is a list literal and [a,b] is a list literal 22:23:41 But that's ridiculously inconsistent so I'm doing [] as a constructor too 22:23:56 heh 22:24:00 Oh, it also says that [] is a constructor, it's just that that's not what the expression [] means, it's a list literal 22:24:05 :-D 22:24:15 I think in a pattern [] is the constructor, not the list literal 22:24:16 But I could be wrong 22:24:39 What's [a,b] in a pattern then 22:25:03 you know what ascii needs? more funny brackets 22:25:09 [(<{ just ain't enough 22:25:18 Deewiant: A list literal 22:25:19 ASCII needs to not change 22:25:25 I think [] in a pattern actually is a list literal 22:25:28 elliott: So why is [] a constructor there agh 22:25:28 I'm going to change it retroactively 22:25:30 with my time machine 22:25:31 I'm not sure when []-constructor ever helps 22:25:33 As in 22:25:35 Helps = is used 22:25:41 http://www.haskell.org/onlinereport/haskell2010/haskellch3.html 22:25:47 Deewiant: 22:25:48 |( exp1 , … , expk ) (tuple, k ≥ 2) 22:25:48 |[ exp1 , … , expk ] (list, k ≥ 1) 22:25:55 3.2 Variables, Constructors, Operators, and Literals 22:25:55 aexp→qvar (variable) 22:25:55 |gcon (general constructor) 22:25:55 |literal 22:25:55 gcon→() 22:25:56 |[] 22:25:58 |(,{,}) 22:26:00 |qcon 22:26:07 O kay 22:26:32 Deewiant: O erjan? 22:26:39 O no 22:26:47 God, my Core language will be so much nicer than this 22:26:50 De Bruijn, bitches 22:28:28 Deewiant: I don't suppose you have any experience with Parsec's "language" stuff 22:28:39 No 22:38:44 sweet, my kernel can speak (I gave it printf) 22:38:58 what does it speak into? 22:39:27 olsner: you had to go through an assembler bug to get to printf? 22:39:50 elliott: nah, not really, I just happened to do them in that particular order 22:40:03 topdecl→instance [scontext =>] qtycls inst [where idecls] 22:40:03 inst→gtycon 22:40:04 |( gtycon tyvar1 … tyvark ) (k ≥ 0, tyvars distinct) 22:40:04 |( tyvar1 , … , tyvark ) (k ≥ 2, tyvars distinct) 22:40:04 |[ tyvar ] 22:40:04 |( tyvar1 -> tyvar2 ) (tyvar1 and tyvar2 distinct) 22:40:22 I mean, I had a printf in user-mode that used my syscall to print stuff, but it didn't work in kernel mode 22:40:42 Deewiant: I like how it reiterates the entire type syntax just to specify distinctness 22:42:10 I am sleep now --> 22:42:10 and the main symptom of the assembler bug was that the whole thing got misassembled and failed to boot, nothing related to printf 22:46:05 -!- zzo38 has joined. 22:46:39 I have played Dungeons & Dragons game today. Before I type the recording, first please try to guess certain things about the session. 22:47:36 Finally, I just need constructors and foreigns and my AST is done 22:50:30 -!- tiffany has quit (Quit: Leaving). 22:52:31 I predict there were neither dungeons nor dragons. 22:52:49 Correct. During this session there was neither. 22:53:07 It's a pretty safe guess, really. 22:53:53 -!- derdon has quit (Remote host closed the connection). 22:56:42 You have to make different kind of guesses. Such as, amount of money the characters have gained/lost. Number of power points used. Hit points gained/lost. Experience levels. CR of brains consumed. Difference of total XP between mine and my brother's character. 22:57:00 fdecl→import callconv [safety] impent var :: ftype (define variable) 22:57:00 |export callconv expent var :: ftype (expose variable) 22:57:00 callconv→ccall | stdcall | cplusplus (calling convention) 22:57:00 |jvm | dotnet 22:57:00 | system-specific calling conventions 22:57:01 impent→[string] 22:57:03 expent→[string] 22:57:05 safety→unsafe | safe 22:57:07 Ffffffffffff 22:57:08 Whether or not the next town entered (since previous session) contained a library. 22:57:39 Number of broken flasks. 22:57:47 Points of damage taken. 22:57:51 Points of damage dealt. 22:58:04 -!- copumpkin has joined. 23:03:27 And a bonus random variable which I will decide as soon as you guess. 23:03:34 Now try to guess *all* of these events. 23:04:34 (Warning some of these might be trick questions) 23:07:53 (Or maybe all of them are, but guess anyways. There is an answer, even if it is zero or N/A) 23:11:38 -!- calamari has joined. 23:17:34 There's always an answer, even if the answer is that there isn't an answer? (Ok, so that's not what n/a actually stands for, but bluh) 23:20:18 Gregor: have you heard the so-called Homestuck "Showtime" full piano refrain? You might like it. It sounds similar to stuff you've written, except it's about a fifth of the length of your typical piece. 23:20:42 Sgeo|web: Yes. Zero, some, or all of the questions I specified, must be answered with "N/A". 23:23:27 tswett, you dislike lengthy compositions? 23:23:46 Yes, tswett said that. 23:23:51 That is a thing tswett said, definitely. 23:23:53 no not exactly 23:24:01 No, he said exactly that. 23:24:01 besides Gregor's compositions aren't exactly long 23:24:06 like 6 minutes iirc? 23:24:09 He definitely said exactly that. 23:24:12 which is quite short 23:24:15 That is why your interpretation is reasonable. 23:24:16 elliott, just shut up 23:24:35 Oh. I understand now. 23:25:14 tswett: I think there's no full in the name, and the "full" in the credits is just referring to the fact that it wasn't cut off 23:25:50 btw I tried out Rage today. Kind of average game. Average but not excellent at anything. Oh and the texture detail is very uneven, from state of the art to stuff you would expect in NWN1. 23:26:09 A lot of Homestuck songs are altered for the comic 23:26:33 "The recording on the Homestuck album is slightly different to the sheet music version" some person on YouTube (do not go on youtube) 23:26:35 Marshallable foreign types. The argument types ati produced by fatype must be marshallable foreign types; that is, either 23:26:35 a basic foreign type, 23:26:35 a type synonym that expands to a marshallable foreign type, 23:26:35 a type T t′1 … t′n where T is defined by a newtype declaration 23:26:35 newtype T a1 … an = N t 23:26:37 and 23:26:39 the constructor N is visible where T is used, 23:26:41 t[t′1∕a1..t′n∕an] is a marshallable foreign type 23:26:43 Ha ha ha ha ha ha ha. 23:38:10 "Light speed, or 300,000 kilometers a second" --physorg.com 23:38:15 Come on, guys, it has a precise value, there is no excuse. 23:41:49 Swiss Ephemeris definitely seems a far better features than Astrolog. It can compute all the things of Astrolog, but it can also compute sunrise/sunset for civil, nautical, and astronomical twilight; it can take the atmospheric pressure into account; the phase of the moon; eclipses; ability to enter fictitious moons; topocentric, heliocentric, barycentric, and astrometric positions; etc...... 23:42:23 elliott: Maybe they forgot the precise value. Or they don't care about it. But they probably should. 23:46:17 I don't see a good reason not to approximate in a fluff piece, but it would be nice if it said "approx." or something 23:47:08 Sgeo|web: Yes I would agree. 23:47:27 They should put "approx."