00:00:18 -!- Jafet has quit (Quit: Leaving.).
00:07:04 -!- Jafet has joined.
00:23:40 <CakeProphet> elliott: so you're basically saying you've decided to name it qhc?
00:23:53 <elliott> CakeProphet: Yes, and I need deciding between Qhc and QHC for the module name
00:23:54 <CakeProphet> just a few minutes before you were asking which to name it.
00:24:44 <monqy> qhc is ~beautiful~
00:25:34 <CakeProphet> do you have an expansion for the name yet?
00:25:35 <elliott> 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 <elliott> CakeProphet: there is no expansion
00:26:11 <CakeProphet> ...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 <monqy> q haskell compiler
00:26:21 <monqy> the q stands for q
00:26:49 <elliott> monqy: but then the q on its own looks lonely.
00:26:59 <monqy> the q stands for ~q~
00:27:04 <CakeProphet> I think recursive is nice because it's almost the same as not expanding it.
00:27:27 <elliott> I mean obviously the hc part stands for haskell compiler
00:27:41 * elliott cracks knuckles, opens http://www.haskell.org/onlinereport/haskell2010/
00:27:56 <CakeProphet> lol, now that the important stuff is out of the way.
00:28:07 <monqy> I'm afraid of parsing
00:28:08 <elliott> monqy: I'm going to not do layout
00:28:19 <elliott> monqy: since it's easy enough to add it in later
00:28:22 <monqy> I guess that makes it
00:28:29 <elliott> it basically results in "if you don't see { after a few keywords, do some freaky shit" :P
00:29:12 <elliott> monqy: I don't like how you have to keep some comments but not others :(
00:30:04 <elliott> I wonder if GHC maintains all comments in the AST??
00:31:03 <CakeProphet> elliott: might as well keep them if you're going to be handling pragmas.
00:31:11 <elliott> Yeah, but keeping all of them is a Pain for processing the AST
00:31:14 <elliott> Keeping declaration-level ones, maybe
00:31:29 <CakeProphet> a pain? don't you just have to... ignore them?
00:31:36 <CakeProphet> probably the least painful thing to process. :P
00:32:00 <elliott> Hmm, GHC's idle GC time is every 0.3s
00:32:03 <elliott> CakeProphet: Because even something like
00:32:13 <elliott> Add 9 (CommentThen "foo" 9)
00:32:38 <CakeProphet> but I guess that is how you'd have to do it.
00:32:47 <monqy> keep onyl pargmas? is there any restriction on where they can appeare?
00:32:54 <elliott> CakeProphet: How else would you do it
00:33:02 <elliott> monqy: but then whence haddock...
00:33:12 <monqy> oh you'll be having a haddock in youre qhc?
00:33:18 <monqy> then thats problems....
00:33:30 <elliott> monqy: well I dunno I just
00:33:33 <elliott> don't like to rule things out.....
00:33:34 <CakeProphet> you could stick all the comments there. or something. :P
00:33:38 <elliott> CakeProphet: do you mean declaration
00:33:50 <monqy> 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 <CakeProphet> are you sure that haddoc even needs the compiler to do that shit?
00:34:35 <elliott> CakeProphet: Haddock uses GHC, so yes
00:34:41 <elliott> and things fail if the code doesn't typecheck etc.
00:34:47 <elliott> I don't know whether it does it to find the comments, though
00:35:07 <elliott> 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 <CakeProphet> does it parse them and put them in the AST or process directly?
00:36:36 <CakeProphet> second option sounds kind of easier maybe. depending on whether or not you're using state.
00:37:14 <CakeProphet> yeah putting pragmas in the AST sounds pointless actually.
00:37:46 <CakeProphet> you can't process them later, after you parse.
00:38:59 <CakeProphet> so I guess you would just update a state record whenever you encounter a pragmas in the right place.
00:39:41 <elliott> Well, you can just parse all extensions and the like
00:39:51 <elliott> And mark that they were used
00:39:54 <elliott> And then complain later if it's not OK
00:40:09 <monqy> do any extensions disallow otheriwse valid proramsgs
00:41:08 <CakeProphet> 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:51 <monqy> oh right: template haskell ruins $ in some cases, and if mdo is still a thing i think it can ruins stuff too
00:42:27 <CakeProphet> so yeah I think you'd want to parse different based on extensions rather than doing it later.
00:43:27 <CakeProphet> elliott: can I help you or am I banned forever?
00:43:50 <Jafet> http://www.haskell.org/ghc/docs/latest/html/users_guide/syntax-extns.html#syntax-stolen
00:43:58 <CakeProphet> elliott: with this compiler, what do you think.
00:44:21 <elliott> dunno, you could implement ConstraintKinds
00:44:36 -!- derdon has quit (Remote host closed the connection).
00:44:47 <monqy> ew, -XArrows steals a lot of very nice things
00:45:46 <CakeProphet> elliott: but could I help with actually coding stuff so I can learn about compilers. :D :D :D
00:46:30 <elliott> yes, I absolutely want someone inexperienced let all over my codebase
00:46:56 <CakeProphet> it's not like I'm just going to like, go break things.
00:47:23 <elliott> are you that good at detecting bugs in the making :P
00:47:55 <elliott> anyway I don't need to handle extensions yet
00:48:01 <elliott> i'm implementing pure haskell(tm)
00:48:09 <CakeProphet> I catch a lot of bugs when I review my own code, of course.
00:48:20 <CakeProphet> but no, I don't magically make programs that run correctly first run.
00:49:53 -!- Sweet has joined.
00:49:54 <elliott> '{-# INLINE' { L _ (ITinline_prag _ _) }
00:49:55 <elliott> '{-# SPECIALISE' { L _ ITspec_prag }
00:49:55 <elliott> '{-# SPECIALISE_INLINE' { L _ (ITspec_inline_prag _) }
00:49:55 <elliott> '{-# SOURCE' { L _ ITsource_prag }
00:49:55 <elliott> '{-# RULES' { L _ ITrules_prag }
00:50:05 <HackEgo> 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:51 -!- Sweet has left.
00:51:00 <CakeProphet> elliott: I'm guessing you're not going to go through 4 million intermediate representations right from the start.
00:51:34 <monqy> haskell -> haskell best compi;er
00:52:02 <elliott> CakeProphet: haskell → core of some sort → backends
00:52:05 <elliott> probably C will be a backend
00:52:12 <elliott> I might have an intermediate language before that for simplicity
00:52:20 <elliott> that simplifies things, not complicates them
00:52:25 <elliott> unless you can think of an obvious mapping of haskell directly to C
00:53:04 <CakeProphet> I was thinking the extra layers would require more effort, but it actually just makes it conceptually simpler.
00:53:20 <monqy> welcome to compilers
00:55:30 <monqy> I can't force those things man
00:55:46 <monqy> forcing jokes is bad, for bad people
00:56:04 <monqy> forcing ideas is bad, for bad people
00:56:26 <monqy> jokes and ideas must flow naturally as that is the way of things
00:56:40 <CakeProphet> my jokes flow naturally and are also the shiznizzle.
00:57:05 -!- Jafet1 has joined.
00:57:23 -!- Jafet has quit (Disconnected by services).
00:57:25 -!- Jafet1 has changed nick to Jafet.
01:00:46 <monqy> that didn't turn out quite how I Wanted it...oops?"
01:03:35 <elliott> monqy: is it a pun on ST...
01:04:03 <CakeProphet> I recall reading about programs compiled with GHC being faster when LLVM was the backend.
01:06:56 <elliott> That just says that the LLVM backend is faster than the asm one
01:07:27 <CakeProphet> which probably says something about LLVM being a good choice for backend.... (....?)
01:07:38 <elliott> or that the asm backend is bad
01:07:56 -!- sllide has joined.
01:07:56 <CakeProphet> actually it was comparing it to the C and asm backend.
01:09:09 <CakeProphet> http://blog.llvm.org/2010/05/glasgow-haskell-compiler-and-llvm.html
01:09:41 <monqy> elliott: actually it was me messing up with my keyboard sometimes i accidentally shift (it is a ba d acdient)
01:09:41 <CakeProphet> 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:57 <elliott> CakeProphet: the C backend is deprecated
01:11:00 <CakeProphet> still you get a lot of free optimizations for using LLVM.
01:12:30 -!- sllide has quit (Ping timeout: 252 seconds).
01:13:40 <tswett> elliott: psst. I've got a secret to tell you.
01:13:53 <elliott> That's the worst way of delivering secerts.
01:14:10 <monqy> are you ashamed yet
01:14:14 <tswett> But yeah. Secret secret secret.
01:14:23 <elliott> {- Note [Declaration/signature overlap]
01:14:24 <elliott> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
01:14:24 <elliott> There's an awkward overlap with a type signature. Consider
01:14:24 <elliott> f :: Int -> Int = ...rhs...
01:14:24 <elliott> Then we can't tell whether it's a type signature or a value
01:14:24 <elliott> definition with a result signature until we see the '='.
01:14:26 <elliott> So we have to inline enough to postpone reductions until we know.
01:16:02 <monqy> so what sort of parser will yours be will it be able to handle this in a claener maner??
01:16:16 <tswett> elliott: oh, and, uh... PCHOOOOO. And... uh...
01:16:49 <tswett> Don't pretend you don't understand.
01:17:10 <tswett> Heir of Breath. Seer of Light. Knight of Time. Witch of Space.
01:17:21 <monqy> is that a homestuck thing
01:17:27 <elliott> no tswett has just gone mad
01:18:13 -!- variable has quit (Excess Flood).
01:18:52 <monqy> god bless tswett gone mad america
01:19:12 <tswett> monqy: what is this Homestuck thing?
01:19:29 <monqy> tswett: I'm not into that sort of thing.
01:20:20 <elliott> <monqy> tswett: I'm not into that sort of thing.
01:20:23 <elliott> monqy "not a sexual deviant" monqy
01:20:40 <tswett> CakeProphet: perhaps you could explain to me this Homestuck thing.
01:20:55 -!- invariable has joined.
01:20:56 <elliott> tswett: take it to /msg this channel is pg
01:21:36 * tswett has stopped pestering #esoteric.
01:21:48 <CakeProphet> speaking of which I need to catch up on the new pages.
01:23:29 <tswett> I thought there had been updates, like, a week ago.
01:24:12 <elliott> Would you stop filling the channel with this filth? There are children here. Like Sgeo.
01:24:47 <CakeProphet> the news just takes me to an RSS feed whose last update is also the 6th of september.
01:25:24 <elliott> The news is lower down on the front page, you idiot.
01:25:45 <elliott> monqy: looks like ghc strips out non-pragma comments at the lexer level
01:25:49 <elliott> because there's no production for them
01:25:56 <monqy> a reasonable thing to do
01:26:44 <elliott> CakeProphet: http://ompldr.org/vYXFseg
01:27:46 <elliott> You're being dense on purpose, right?
01:27:55 <CakeProphet> I thought Sgeo was saying there was more updates I just had to go to the news
01:28:16 <elliott> ???, the noise of understanding.
01:28:26 <CakeProphet> 21:23 < tswett> I thought there had been updates, like, a week ago.
01:28:26 <CakeProphet> 21:23 < Sgeo|web> CakeProphet: read the news
01:28:37 <CakeProphet> my brain: "oh Sgeo is pointing me to the updates"
01:30:20 <CakeProphet> also I totally need to spend money on one of these overpriced hoodies.
01:31:39 <monqy> so you can wear it in public or what
01:31:43 -!- invariable has changed nick to variable.
01:32:10 <CakeProphet> so that I can find other HS fans, but mainly because I like the designs.
01:33:46 <CakeProphet> and winter fast approaches and I have money to throw away on the overpricedness.
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 <coppro> http://www.orchestra.uwaterloo.ca/img/keysig.jpg
01:44:36 <Jafet> That's just G flat minor, you pussy
01:45:34 <Jafet> Wait till you get C flat
01:47:08 <coppro> I like that there's a natural and a flat on the same line
01:47:22 <Jafet> The natural is an annotation; it's pretty common
01:48:05 <elliott> monqy: OK, time to write Qhc.AST
01:48:10 <elliott> monqy: or should it be Qhc.Ast..........
01:48:25 <monqy> Abstract syntax tree
01:48:42 <monqy> I'd go AST because I don't want syntax and tree to feel left out
01:48:42 <Jafet> It probably cancels out a previous C# F# signature
01:48:58 <Jafet> I guess that's not common, but some typesetters do it
01:49:43 <coppro> of course, the true genius is the instruction on how to play it
01:50:38 <Jafet> Yeah, violinists are prima donnas
01:51:04 <elliott> monqy: yes but ... consistency with Qhc......................
01:56:15 -!- Jafet has quit (Quit: Leaving.).
01:57:07 <elliott> 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:08:23 <monqy> is this a haskellreport thing or a ghc thing
02:10:47 <elliott> http://www.haskell.org/onlinereport/haskell2010/haskellch3.html#x8-220003
02:10:50 <elliott> |- infixexp (prefix negation)
02:11:27 <elliott> fexp→[fexp] aexp (function application)
02:11:32 <elliott> oh no, do I have to maintain a list of applied arguments
02:12:01 <monqy> 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 <elliott> monqy: wow lambdas cannot have guards...
02:14:37 <monqy> they can't even have mutliple caluses,,,
02:14:53 <monqy> things which make moqny sad:
02:19:05 <CakeProphet> elliott: isn't it more efficient to apply arguments all at once instead of currying?
02:19:25 <elliott> that can be done at a later level dude
02:21:18 <elliott> |qcon { fbind1 , … , fbindn } (labeled construction, n ≥ 0)
02:21:24 <elliott> haskell there is literally no way n could be < 0 here
02:23:16 <CakeProphet> elliott: dude you don't know about NegativeConstructorLabels?
02:26:31 <CakeProphet> I wonder how many kids would actually know what that means.
02:26:51 <elliott> "kids dont know words" -cakepropehtepth
02:28:47 <monqy> "whats a hubris" - kids
02:28:59 <monqy> "in your fac,e liot" - cakeprohplhet
02:34:20 -!- augur has joined.
02:37:51 -!- Sgeo|web_ has quit (Ping timeout: 252 seconds).
02:38:53 <elliott> EInfix [] (whatevermyliteralthingis 9) (LeftSection thenamefor-)
02:39:02 <elliott> monqy: finally -99 is as ugly in expression trees as it is in reality
02:39:10 <elliott> CakeProphet: macabre is not an uncommon word....
02:39:54 <elliott> "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 <elliott> monqy: it's like they're trying to avoid suggesting a concrete parse strategy
02:42:08 <CakeProphet> 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:23 <elliott> i'm pretty sure most kids know what macabre is
02:42:29 <elliott> maybe you just don't talk to many kids
02:43:01 <CakeProphet> monqy: help me prove to elliott that American kids is dumb.
02:43:21 <monqy> I don't have much experience with kids either
02:44:38 <pikhq> In my experience, American kids are less literate in English than I am in Japanese.
02:44:55 <pikhq> Heck, I may well be more literate in Mandarin than some American kids are in English.
02:45:01 <pikhq> And I know maybe 2 words of Mandarin.
02:45:30 <monqy> do some american kids know less than 2 words of english (are babies kids)
02:45:40 <CakeProphet> my parents certainly don't know what hubris or macabre means.
02:45:45 <pikhq> monqy: I specified "literate" for a reason.
02:45:49 <monqy> also: people who don't speek enlgiush??
02:46:03 <pikhq> I can kinda-sorta parse meaning out of simple written Mandarin, but don't speak the language.
02:47:02 <CakeProphet> monqy: I believe he meant that he can only speak two words of Mandarin.
02:47:10 <CakeProphet> but it wasn't obvious that's what he meant.
02:47:26 <pikhq> I can basically pull off "ni hao".
02:47:36 <elliott> (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 <elliott> http://en.wikipedia.org/wiki/Simon_meets_alvin
02:47:42 <elliott> Thank god for Recentchanges.
02:50:14 <monqy> this is a good page
02:51:46 <elliott> monqy: http://sprunge.us/iCaU
02:53:38 <CakeProphet> monqy: also with more accents that's a spanish question word.
02:53:40 <monqy> hm, what handles ()? considering it's special syntax and all
02:54:00 <elliott> monqy: that might be a constructor I think?
02:54:03 <elliott> just like (,,) and the like are constructors
02:54:15 <elliott> |( exp1 , … , expk ) (tuple, k ≥ 2)
02:54:18 <elliott> that is what the report says you see...
02:54:37 <elliott> hmm that means lists should use NonEmpty too
02:54:56 <elliott> or maybe they should both use [], it's not like I don't have redundancy elsewhere
02:55:08 <elliott> monqy: oh i just realised I don't actually support /resolved/ infix expressions
02:55:13 <elliott> monqy: the infix thing there is lifted from a ghc proposal
02:55:27 <elliott> 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:38 <elliott> I don't need parens to resolve it, all is well
02:58:25 -!- Jafet has quit (Quit: Leaving.).
02:59:29 <monqy> oh dear, it looks like one of the spambots was clever enough to find the main page
02:59:55 <monqy> it seems to have problems with the beginnings of its sentences
02:59:58 <elliott> oh wow this is better than our current main page
03:00:19 <monqy> on. ntains, "Eat my dust!" I'll be a monkey's uncle!
03:03:03 -!- yorick has quit (Ping timeout: 244 seconds).
03:08:27 <elliott> alt→pat -> exp [where decls]
03:08:28 <elliott> gdpat→guards -> exp [ gdpat ]
03:08:28 <elliott> guards→| guard1, …, guardn (n ≥ 1)
03:09:21 <elliott> data Clause = Clause Pat (Either Exp [(NonEmpty Guard, Exp)]) [Decl]
03:10:55 <elliott> A note about parsing. The expression
03:10:55 <elliott> case x of { (a,_) | let b = not a in b :: Bool -> a }
03:10:55 <elliott> is tricky to parse correctly. It has a single unambiguous parse, namely
03:10:55 <elliott> case x of { (a,_) | (let b = not a in b :: Bool) -> a }
03:10:55 <elliott> 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:15:29 -!- pikhq_ has joined.
03:16:02 -!- pikhq has quit (Ping timeout: 276 seconds).
03:16:04 <CakeProphet> elliott: parsers with limited lookahead are for chumps.
03:24:03 -!- Stelpa has joined.
03:25:24 -!- copumpkin has joined.
03:27:14 <Stelpa> I am really new to esoteric programming languages, and i am wondering, which is the most popular? :s
03:27:27 <pikhq_> *Popular*? Probably Brainfuck.
03:27:29 <Stelpa> brainfuck is the first one i heard of, and it is the one that interests me the most sofar :s
03:27:49 <monqy> popular isn't a good thing, in brainfuck's case
03:28:38 <monqy> too many people making too many bad derivatives
03:29:15 <Stelpa> well, i promise not to do that, lol
03:30:35 <Stelpa> what esoteric language is the least punishing, monqy?
03:30:42 <Stelpa> in terms of coding in it
03:30:54 <Stelpa> sorry for asking annoying questions, btw :x
03:31:01 <Stelpa> you probably get these a lot
03:31:12 <monqy> not much, actually
03:31:43 <monqy> at least not when I'm around
03:32:22 <Stelpa> i've been reading up on them :P
03:32:27 <monqy> least punishing esoteric language to program in probably depends on your abilities, what you consider esoteric, and what you consider programming
03:32:30 <Stelpa> i know at least about malbolge >_>
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 <CakeProp1et> perl is one of the least punishing esolangs.
03:47:22 -!- tiffany has quit (Quit: Leaving).
04:02:27 <CakeProp1et> monqy: you should learn Perl just so you can bitch about it legitimately.
04:03:02 <monqy> this is a good reason
04:03:26 <CakeProp1et> yep that's right. I get to bitch about Perl because I use it for Serious Shit.
04:03:28 <monqy> 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 <monqy> 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 <CakeProp1et> I'm not entirely sure how I learned Perl actually.
04:04:33 <CakeProp1et> 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 <CakeProp1et> but there was never just a point where I was like "okay I'm going to learn Perl"
04:07:39 <CakeProp1et> I always just use package-level lexical variables instead. But state might actually be clearer sometimes...
04:10:19 <CakeProp1et> monqy: I'm sure this is a dumb question but do you ever program?
04:10:29 <monqy> I get asked that a lot
04:10:38 <monqy> (giggling right now)
04:10:44 <monqy> what do you mean by program
04:11:15 <CakeProp1et> well I mean I never see you talking about programming. So I just wonder if you ever work on any projects.
04:11:28 <monqy> yes I do program but I don't like it
04:12:08 <monqy> i guess that depends on what you mean by
04:12:41 <monqy> because yes I do work, and I do have projects, but you might not say I ever work on the projects
04:16:00 -!- Stelpa has left ("Leaving").
04:18:19 <CakeProp1et> so you have ideas for projects but don't finish them?
04:20:15 <monqy> 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 <monqy> where by big I mean in all of complexity, importance, being interesting, and friends
04:21:57 <monqy> 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:22:53 <CakeProp1et> the biggest projects I've done so far are work-related.
04:23:19 <monqy> im paid in threats of failure
04:23:44 <monqy> im bad at saying things ;_;
04:24:07 <monqy> but the only reason I finished a lot of the things I finished is because I really had to finish them
04:24:27 <monqy> they were painful and uninteresting and if I had a choice I would have abandoned them
04:25:33 <CakeProp1et> now that I'm more comfortable organizing larger projects.
04:25:47 <monqy> i have big plans but i'm not making any progress and am suddenly busy because of school
04:28:32 <monqy> 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:39 <monqy> what does that even do
04:28:53 <CakeProp1et> that's part of the markov model my perl script generated.
04:29:07 <CakeProp1et> I was commenting on the fact that there are lot of non-word things in it.
04:30:05 <monqy> 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:43 <CakeProp1et> well, I've always been interested in creating a text-based game. Not necessarily a rogue-like.
04:30:53 <monqy> 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:17 <monqy> the problem with the roguelike is that ugh implementation
04:31:30 <monqy> the problem with nebulous secret mystery project is nebulous secret mystery project
04:31:36 <monqy> the ugh implementation?
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 <CakeProp1et> probably the best way is to have a domain-specific language.
04:32:18 <CakeProp1et> to code all of the puzzles/monsters/items/etc
04:32:38 <monqy> right now i'm stuck in two places
04:32:46 <monqy> one is a good place and one is the ugh implementation
04:33:24 <monqy> 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:50 <monqy> how would you help? it might be helpful to have help......
04:34:09 <CakeProp1et> two people working on a project would increase the odds of it being finished.
04:34:22 <CakeProp1et> and really what you'll probably end up with is a nice codebase to write many different games.
04:35:08 -!- CakeProp1et has changed nick to CakeProphet.
04:35:39 <monqy> the thing i got frustrated about is that i couldn't find a good console ui or whatever it's called library
04:36:06 <CakeProphet> yeah see I'm used to a MUD which is pretty much linemode so I don't know anything about those.
04:36:33 <monqy> 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:56 <monqy> my problem with not consoleing is ew
04:37:14 <monqy> i have to have a console interface or i will hate myself forever
04:37:39 <elliott> monqy: not cconsoling =/= not text based
04:38:20 <monqy> i'd hate myself forever if i did it like df
04:39:09 <monqy> elliott: i dunno there's just something i like about console that isn't there in other things
04:40:10 <monqy> like my font, being able to select things, the ~charm~
04:40:20 <monqy> it is a horrible concern but i don't know what i'd do without it ;_;
04:40:49 <monqy> CakeProphet: the haskell "ncurses" library and "hscurses" both had problems when i looked at them
04:41:30 <monqy> but it won't be the font i like will it :(
04:41:41 <monqy> good thing i like horrible fonts
04:42:01 <monqy> oh i see what you said there
04:43:04 <monqy> that way i also wouldn't also have to make another frontend for windows people, at least
04:44:13 <elliott> also you can do things like draw status bars without crappy block drawing characters
04:44:39 <elliott> better control over colours, too :P
04:45:06 <monqy> but i prefer crappy characters :( really thick lines and blocks and stuff look ugly to me
04:45:55 <CakeProphet> bah I don't know what filter regex to use...
04:46:24 <elliott> consider using half-height lines to draw hp and [stat] bars on the same line
04:47:32 <monqy> my previous plan was to use = signs because i couldn't think of any better symbol
04:48:15 <CakeProphet> [\p{Alphabetic}\p{Dash_Punctuation}\p{Connector_Punctuation}']
04:48:29 -!- copumpkin has changed nick to imsaguy4.
04:48:48 -!- imsaguy4 has changed nick to copumpkin.
04:49:10 <CakeProphet> 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:30 <monqy> why all the \p in there
04:49:51 <CakeProphet> that's how you specify Unicode properties. Though there may be a way to specify multiple ones in one \p thingy
04:50:35 <monqy> and ' isn't in any of those categories?
04:50:52 <monqy> also i hope those are the symbols you want in your dataset not out of it?
04:51:29 <CakeProphet> but that leaves stuff that contains $ and _ and \
05:01:30 -!- Vorpal has joined.
05:20:43 <elliott> monqy: RIP http://en.wikipedia.org/wiki/Simon_meets_alvin
05:21:11 <monqy> 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 <elliott> "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 <elliott> My thanks to Tao and Tausk for spotting this. I withdraw my claim.
05:26:51 <elliott> The consistency of P remains an open problem.
05:26:53 -!- CakeProphet has joined.
05:26:53 -!- CakeProphet has quit (Changing host).
05:26:53 -!- CakeProphet has joined.
05:39:00 <elliott> http://www.haskell.org/onlinereport/haskell2010/haskellch4.html
05:42:23 <elliott> monqy: re language project: @
05:49:33 <pikhq_> It really irritates me when a textbook makes a claim that I know to be *very* wrong.
05:50:10 <pikhq_> 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 <pikhq_> 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 <pikhq_> Aaaand if that were true, Japanese and Korean would be a lot more similar.
05:52:49 <pikhq_> 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 <augur> 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 <monqy> that's pretty awkward
06:07:11 <elliott> i say things like that sometimes but yeah that is awkward
06:07:16 <monqy> I'd word it more like "John will speak with the boys and Susan the girls"
06:07:16 <elliott> i think susan should speak with the boys instead imho
06:07:31 <elliott> although i'd just duplicate it there really
06:07:34 <elliott> <elliott> i think susan should speak with the boys instead imho
06:07:37 <elliott> this is a funny joke laugh
06:08:31 <pikhq_> Yeah, "will" makes it a bit strange.
06:08:49 <Deewiant> 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 <pikhq_> 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 <pikhq_> There's probably a few other comma placements that make it reasonable.
06:09:12 -!- oerjan has joined.
06:09:30 <pikhq_> Deewiant: Sounds right.
06:09:57 <monqy> "and susan speak with the girls" sounds awkward to me
06:10:01 -!- BeholdMyGlory has joined.
06:10:05 <augur> im not worried about comma placement
06:10:19 <augur> thats orthography that indicates structure, so thats ok
06:10:26 <augur> mess with commas as much as you want
06:10:28 -!- CakeProphet has quit (Ping timeout: 255 seconds).
06:10:49 <pikhq_> Yeah, commas are merely hints at structuring.
06:11:04 <pikhq_> 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 <pikhq_> Also, you may wish to qualify your requests with "do any native English speakers here *except zzo38* [...]"
06:12:20 <pikhq_> I have a sneaking suspicion he will throw a spanner in the works.
06:12:49 <shachaf> zzo38 is a native English speaker?
06:12:56 <pikhq_> shachaf: Surprisingly, yes.
06:13:05 <Madoka-Kaname> zzo is a native speaker of the zzo38 dialect of English.
06:13:13 <monqy> i like zzo english
06:13:48 * shachaf doesn't quite understand zzo38's motivations.
06:14:16 <augur> Madoka-Kaname: we are all the only speakers of our own idiolects
06:14:55 <augur> i wouldnt go that far
06:15:48 -!- Ngevd has joined.
06:16:08 <elliott> monqy: http://sprunge.us/UiMF
06:16:15 <shachaf> CakeProphet: I suppose that, now that I take the channel name into consideration...
06:16:23 <elliott> augur: If you wouldn't go that far, that just proves that you're one of the inferior ones.
06:16:40 <augur> elliott: i was going to say you're the best thing about #esoteric :(
06:16:51 <elliott> augur: a clear misjudgement
06:17:04 <augur> Madoka-Kaname is correct
06:17:06 <elliott> * shachaf doesn't quite understand zzo38's motivations.
06:17:11 <elliott> shachaf: I think that /is/ zzo's motivations.
06:17:18 <Ngevd> I am not too sure what's going on here
06:17:21 <shachaf> elliott: Being misunderstood?
06:17:22 <elliott> Or at least as close to an externally-digestible form as one can get.
06:17:25 <monqy> elliott: so much ast
06:17:32 <augur> elliott: but then... surely his motivation has lead to folly
06:17:36 <augur> since we now understand his motivation!
06:17:41 <Madoka-Kaname> zzo is clearly an agent of the Intelligent Data Entity
06:17:43 <elliott> augur: Do you? I sure don't.
06:17:44 <monqy> im glad im not implementing haskell....
06:17:58 <elliott> CakeProphet: Lies and folly.
06:18:01 <augur> how can his motivation be for noone to understand his motivation
06:18:05 <augur> and still be successful!
06:18:08 <augur> this is not possible D:
06:18:29 <pikhq_> Would you prefer noöne?
06:18:31 <monqy> he's zzo he can do anything
06:18:45 <augur> oh god, CakeProphet is a diaresist
06:18:52 <pikhq_> Hooray, mild archaicisms!
06:18:52 <augur> kyle johnson is a fucking diaresist
06:19:01 <augur> "coördination" everywhere
06:19:04 <CakeProphet> no I just prefer it to silly things like noone
06:19:10 <pikhq_> augur: I use it sometimes as well, but only because I delight in archaicisms.
06:19:24 <augur> elliott: a linguist
06:19:31 <augur> CakeProphet: someone
06:19:34 <elliott> hmm, I guess that's kind of unfair to disembodied entertains
06:19:34 <augur> CakeProphet: everyone
06:19:35 <pikhq_> I also delight in "thou".
06:19:39 <elliott> no-one is kind of gross though
06:19:51 <Ngevd> Now I am even less sure what is going on
06:19:53 <augur> CakeProphet: so is noone
06:19:57 <pikhq_> And that's a bit more than mildly archaic, really.
06:20:16 <augur> CakeProphet: heaven forbid
06:20:30 <Ngevd> A cardinal direction not available in 2 dimensions
06:20:32 <elliott> monqy: oh no i have to support datatype contexts
06:20:36 <pikhq_> CakeProphet: When you say it like that, it looks like a Middle English "noon".
06:20:46 <elliott> monqy: "haskel tweotheotusnadtand ten lots of horors"
06:20:53 <CakeProphet> yes it just looks like a weird way to spell noon to me.
06:20:58 <augur> Ngevd: what if your dimension is the vertical axis
06:21:05 <augur> CakeProphet: well you suck
06:21:15 <Ngevd> Then it is left right forward backwards, but rotated
06:21:16 <monqy> elliott: datatype contexts aren't dead?
06:21:35 <monqy> diaf datatype contexts.....
06:21:36 <CakeProphet> augur: I'm fine with concluding this "debate" on that note.
06:21:45 <Ngevd> Well, North South East West
06:21:56 <augur> CakeProphet: me too
06:22:06 <elliott> body→{ impdecls ; topdecls }
06:22:09 <elliott> WHAT THE FUCK IS IMPDECL YOU PIECE OF SHIT
06:27:27 <CakeProphet> so I watched two entire seasons of Adventure Time today.
06:30:27 <CakeProphet> ...I... I don't really know what to do now.
06:30:46 <Ngevd> Watch the entire run of Star Trek
06:30:56 <Ngevd> In reverse Watsonian Chronological order
06:32:40 <Ngevd> I will now have a shower
06:32:44 <Ngevd> To become clean again
06:32:46 -!- Ngevd has quit (Quit: Leaving).
06:33:15 <oerjan> "Noted Sherlockian authorities have credited him with from one to five wives in an effort to reconcile discrepancies in the Watsonian chronology, although ...
06:34:00 <oerjan> so, the entire run of star trek, with one to five divorces.
06:38:41 -!- elliott has quit (Ping timeout: 248 seconds).
06:42:37 <CakeProphet> ...I have no clue what is causing this bug.
06:43:03 <CakeProphet> monqy: okay so maybe Perl is pretty punishing when you debug it. :P
06:54:09 -!- monqy has quit (Quit: hello).
06:56:40 <fizzie> What, it's got a debugger and all.
06:57:15 <CakeProphet> I'm bad at debuggers. :P also a debugger wouldn't really help here.
06:57:24 <CakeProphet> it was a case where I knew exactly where the bug was but not why
06:57:39 <CakeProphet> a new output will determine if I'm correct.
07:10:33 <CakeProphet> don't understand object oriented programming anymore.
07:10:50 <oerjan> haskell... it beckons you...
07:12:26 <CakeProphet> the weirdest thing ever is object-oriented Perl.
07:16:38 <CakeProphet> `run perl -e "%t=(); $x = \$t{a}; $$a = 2; print %t"
07:16:44 <HackEgo> 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:17:04 <CakeProphet> `run perl -e '%t=(); $x = \$t{a}; $$a = 2; print %t'
07:17:14 <CakeProphet> `run perl -e '%t=(); $x = \$t{a}; $$a = 2; print values %t'
07:17:32 <CakeProphet> `run perl -e '%t=(); $x = \$t{a}; $$x = 2; print values %t'
07:18:36 <CakeProphet> map {$_, \$datasets{$_}} keys %$Acro::Data::data
07:18:54 <CakeProphet> (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 <CakeProphet> fizzie: er wait... what encoding is this google ngram data in?
08:39:40 <fizzie> All the interwebs data is in valid UTF-8; I don't really know about the book stuff.
08:40:58 <CakeProphet> I think "the book stuff" is what I'm using.
08:41:23 <fizzie> Yes, well. UTF-8 is what a reasonable person would assume, but you never know.
08:42:19 <CakeProphet> I was just wondering because Perl keeps giving me:
08:42:36 <CakeProphet> utf8 "\xEE" does not map to Unicode at ./construct_grams.pl line 20, <$f> line 219654.
08:47:16 <fizzie> Hrm. Well, it's true enough that a plain \xEE is not a complete UTF-8 sequence.
08:47:29 <fizzie> Could be just a bug in the datta.
08:49:21 <fizzie> I don't know what line 20 is doing, or what's on line 219654 of your file.
08:49:55 -!- ais523 has joined.
08:50:12 <fizzie> Heh, well; it's just reading.
08:52:28 <CakeProphet> 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 <fizzie> Well, how about the data, then?
08:53:19 <fizzie> "head -n 219654 | tail -n 1 | od -tx1z" or something.
08:53:38 <fizzie> I wouldn't be too surprised if there was just some broken UTF-8 in there.
08:54:11 <fizzie> (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 <ais523> I'm annoyed that there isn't a more efficient way to do that head|tail, it looks optimizable
08:56:19 <oerjan> regarding today's xkcd: who/what the fuck is corliss?
08:56:46 <CakeProphet> 0000000 30 36 34 35 30 09 31 39 37 34 09 32 09 32 09 32 >06450.1974.2.2.2<
08:56:58 <CakeProphet> also I don't even know if that's the right file
08:57:07 <fizzie> oerjan: "Jeb Corliss (born March 25, 1976) is a professional BASE jumper, skydiver, and wingsuit flyer"?
08:57:11 <CakeProphet> since perl spams far too many Unicode errors for me to know which file it's on.
08:57:35 <fizzie> That line looks just fine, I don't see any EEs there.
08:59:46 <CakeProphet> fizzie: so for the head command I do line-1?
09:00:16 <fizzie> ais523: Possibly "tail -n +219654 | head -n 1" would be better, it wouldn't need to stuff all that data through the pipe.
09:01:23 <fizzie> 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 <fizzie> (Since "head -n 1 | tail -n 1" will give the first line.)
09:01:58 <CakeProphet> utf8 "\xE9" does not map to Unicode at ./construct_grams.pl line 20, <$f> line 809
09:02:10 <CakeProphet> ~$ cat /media/Elements/googledata/googlebooks-eng-1M-1gram-20090715-0.csv | head -n 809 | tail -n 1 | od -tx1z
09:02:13 <CakeProphet> 0000000 24 30 2e 31 33 09 31 39 36 31 09 35 09 35 09 35 >$0.13.1961.5.5.5<
09:03:25 <fizzie> 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 <CakeProphet> I stopped it immediately so it's the right one.
09:06:10 <fizzie> E9 does sound latin-1ish, since it's é.
09:07:00 <fizzie> But it sounds unlikely all of it would be in latin-1.
09:07:09 <CakeProphet> 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 <CakeProphet> oh nevermind it was just something weird happening.
09:11:06 <oerjan> > map (chr . read . ("0x"++)) $ words "24 30 2e 31 33 09 31 39 36 31 09 35 09 35 09 35"
09:11:07 <CakeProphet> because I forgot to supply it with the directory to the right files.
09:11:19 <CakeProphet> but now I'm not getting four-billion errors.
09:11:59 <fizzie> oerjan: The text version is right there on the right side, you know.
09:12:10 <oerjan> > map (chr . read . ("0x"++)) $ words "30 36 34 35 30 09 31 39 37 34 09 32 09 32 09 32"
09:19:12 <lambdabot> Not in scope: type constructor or class `Word128'
09:22:23 <fizzie> You could deduce some sort of "truth is greater than falsehood" philosophy out of that.
09:23:29 <fizzie> Also "bigger is better".
09:24:03 <CakeProphet> wow with a 128-bit word you could represent every ASCII character as a bit.
09:24:16 <CakeProphet> the entire word itself represents a superposition of ASCII characters.
09:26:09 <CakeProphet> that's a fairly efficient representation of an "ASCII set"
09:26:39 <fizzie> Maybe you could patent bitsets?
09:26:39 <CakeProphet> as many of the set operations can be computed with bitwise operators.
09:27:16 <fizzie> Well, uh, java.util.BitSet and all the bitset-based STL specializations of std::vector<bool>...
09:27:54 <CakeProphet> I don't think vector<bool> is what I'm talking about.
09:28:41 <fizzie> It is commonly implemented by stuffing sizeof(unsigned)*CHAR_BIT or so bits into each machine word.
09:29:43 <fizzie> 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 <fizzie> In Java-land it's a separate class.
09:31:49 <fizzie> Also because it's hard to point to a single bit.
09:32:10 <fizzie> "Note that vector<bool> 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 <Phantom_Hoover> http://www.reddit.com/r/math/comments/l6qa3/i_know_this_is_really_basic_to_a_lot_of_people/c2q8vwt
09:33:10 <lambdabot> Phantom_Hoover: You have 1 new message. '/msg lambdabot @messages' to read it.
09:33:19 <Phantom_Hoover> I don't like this person and I don't even feel guilty about it.
09:33:48 <oerjan> i think haskell's unboxed Bool arrays also pack.
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 <Sgeo|web> elliott (log-reading) CakeProphet Phantom_Hoover (does he logread?): Homestuck news update.
11:56:19 <Sgeo|web> If it drops during class I'm going to watch it in class
11:56:32 <Sgeo|web> (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 <zzo38> 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 <quintopia> zzo38: have you ever taken a portable fan to play mini golf?
14:55:41 -!- ais523_ has quit (Quit: Page closed).
14:56:22 <zzo38> 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 <zzo38> quintopia: No. Can you?
14:57:38 -!- Phantom_Hoover has joined.
14:58:18 -!- ais523 has joined.
15:01:11 <zzo38> 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 <zzo38> (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:09:34 <Ngevd> So, what is happening in the WORLD OF ESOTERIC PROGRAMMING?
15:13:54 <ais523> <ais523> 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 <ais523> 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. <amorya> 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 <ais523> site backs you up, and requires you to get Frodhsam->Liverpool and Liverpool->Runcorn as separate tickets.
15:14:05 <ais523> this is now officially the most awesome TDWTF sidebar thread ever
15:14:09 <ais523> it just gets better and better the more you rtead
15:15:13 <ais523> http://forums.thedailywtf.com/forums/t/25060.aspx
15:15:16 <ais523> I want to put it in the topic
15:15:21 <ais523> but I'd probably get shouted at for doing so
15:15:32 <Ngevd> http://news.bbc.co.uk/1/hi/programmes/newsnight/9612063.stm
15:16:09 <ais523> 'tis also worth reading http://www.rossrail.co.uk/central/routeqn1.html (linked from that thread)
15:16:25 <ais523> I suspect this could be made into an esolang moderately easily; it wouldn't be TC, but could still be quite powerful
15:18:06 <quintopia> zzo38: it is hard to blow a ball uphill, but it might be effective on the flat holes
15:18:21 <Phantom_Hoover> RollerCoaster Tycoon 3 does not an industry leader make.
15:19:05 <zzo38> quintopia: OK, but is the use of a fan permitted? Or are you required to use the natural wind?
15:20:59 <Ngevd> Braben was the best they could get on that budget
15:20:59 <quintopia> 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 <Ngevd> Reading the train document thread
15:30:16 <zzo38> quintopia: OK, but I will count the time as well as the number of strokes.
15:36:41 <ais523> it is beautifully messed up
15:36:49 <ais523> incidentally, I've since taken to just using the bus
15:40:13 <ais523> where the rules used to be really complex, but have since been simplifie
15:40:31 <Ngevd> If this system actually is this crazy
15:40:36 <Ngevd> I may have broken the law
15:40:53 <Ngevd> 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 <ais523> you probably have a decent excuse in that you didn't have a clue what you were doing
15:47:14 <ais523> was Hexham one of them?
15:47:35 <ais523> I suppose if I asked the other, I could work out if it was legal or not
15:47:56 <ais523> assuming I actually wanted to struggle with the Routeing Guide again
15:47:56 <Ngevd> I could have gone Glasgow via Dumfries, then King's Cross via Edinburgh??
15:48:27 <ais523> Ngevd: according to ATOC's reply to Rossrail, there's an exception involving Scotland that they didn't tell anyone about
15:48:40 <ais523> I told you it got increasingly crazy as time went on
15:49:03 <Ngevd> That is so bad my ellipses have bad grammar!
15:50:24 <Ngevd> The other was Morpeth, btw
15:51:29 <ais523> ah, the capital of Northumberland
15:51:34 <ais523> which has a famously dangerous train corner
15:51:41 <ais523> (the random things you learn playing BlogNomic…)
15:51:51 <Ngevd> Got a friend who LIVES pretty much on that train corner
15:51:56 <Ngevd> He has had a train in his back garden
15:52:51 <ais523> so, for Hexham, the nearby routing points are Newcastle and Carlisle
15:53:14 <ais523> and for Morpeth, Newcastle and Edinburgh Group
15:54:40 <Ngevd> So, I'd have to use the Newcastle group?
15:54:46 <ais523> 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 <ais523> and otherwise, you have to take a route within 3 miles of the shortest route
15:55:06 <Ngevd> Okay, so I chose wisely
15:55:15 <ais523> was it a direct train in each case?
15:55:30 <ais523> so yes, there's specific exception letting you do that
15:55:56 <ais523> err, *followed by a /direct/ train from Newcastle to Morpeth
15:56:02 <Ngevd> I thought you meant that
15:56:11 <ais523> and by direct, I think it means "with no stops in between"
15:56:31 <Ngevd> I thought it would mean "with no changes inbetween"
15:57:46 <ais523> was it within 3 miles of the shortest route? I'm not very good at Northumberlandish geography
15:58:07 <Ngevd> By trains, the next shortest route would go through Glasgow
15:59:45 <Ngevd> If I wanted to go from Hexham to, say, Truro, how devilish would that be
16:02:24 <Ngevd> I'll assume "very"
16:03:37 -!- ais523_ has joined.
16:03:50 <ais523_> any comments here since ais523 without the underscore last spoke?
16:04:03 <Ngevd> <Ngevd> If I wanted to go from Hexham to, say, Truro, how devilish would that be
16:04:03 <Ngevd> <Ngevd> I'll assume "very"
16:05:02 <ais523_> 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:06:23 <Ngevd> That's as much as the nicest edition of the OED!
16:06:24 <ais523_> 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 <Ngevd> 20 volume blue leather bound!
16:07:09 <Ngevd> And actually useful!
16:07:54 <ais523_> 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 <ais523_> perhaps I'll ask elliott if I should buy it
16:08:12 -!- ais523 has quit (Ping timeout: 260 seconds).
16:08:22 <Ngevd> That's probably not the best of ideas
16:09:39 <ais523_> 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 <Phantom_Hoover> 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 <Ngevd> 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 <Vorpal> 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:41:10 <Vorpal> I used to run that back when I was debugging mcmap and my desktop was too weak to run an mc server
16:43:02 <Vorpal> 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 <Ngevd> Not as far as I am aware
16:52:01 <Ngevd> But then again I have no idea what rsync is
16:52:01 <Vorpal> Ngevd, well, there is cygwin
16:52:38 <Vorpal> Ngevd, rsync is a wonderful tool to sync directory structures on different computers. It works really well.
16:52:59 <Ngevd> I don't think I have much of a need for it at the moment
16:53:05 <Ngevd> Right now I have a need for dinner
16:53:09 -!- Ngevd has quit (Quit: Leaving).
16:53:14 <Vorpal> 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:11:05 -!- CakeProphet has quit (Ping timeout: 255 seconds).
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:35 -!- Ngevd_ has left.
17:34:12 <monqy> http://en.wikipedia.org/wiki/Chupacabra good picture
17:36:38 -!- elliott has joined.
17:46:24 <elliott> 08:53:19: <fizzie> "head -n 219654 | tail -n 1 | od -tx1z" or something.
17:46:24 <elliott> 08:56:07: <ais523> I'm annoyed that there isn't a more efficient way to do that head|tail, it looks optimizable
17:46:24 <lambdabot> elliott: You have 5 new messages. '/msg lambdabot @messages' to read them.
17:46:32 <elliott> how could you optimise that?
17:52:10 <elliott> 08:56:19: <oerjan> regarding today's xkcd: who/what the fuck is corliss?
17:52:12 <elliott> 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:53 <elliott> 09:00:16: <fizzie> 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 <elliott> fizzie: Well with "ideal" pipe streaming semantics it shouldn't matter :-)
17:55:38 <elliott> 09:24:03: <CakeProphet> wow with a 128-bit word you could represent every ASCII character as a bit.
17:55:38 <elliott> 09:24:16: <CakeProphet> the entire word itself represents a superposition of ASCII characters.
17:55:38 <elliott> 09:26:09: <CakeProphet> that's a fairly efficient representation of an "ASCII set"
17:55:38 <elliott> 09:26:39: <fizzie> Maybe you could patent bitsets?
17:55:46 <elliott> fizzie: I think it might just be too revolutionary for the patent system.
17:55:53 <elliott> 09:19:34: <oerjan> @hoogle Word128
17:55:53 <elliott> 09:19:34: <lambdabot> No results found
17:55:54 <elliott> http://hackage.haskell.org/package/largeword
17:56:42 <elliott> 13:34:54: <zzo38> If the wind is sufficiently strong, can you make a hole in zero?
17:57:28 <elliott> 15:13:54: <ais523> <ais523> 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 <elliott> 15:13:55: <ais523> 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. <amorya> I believe you're right, you can't get a single ticket Frodsham->Runcorn that is valid for tra
17:57:33 <elliott> 15:13:57: <ais523> site backs you up, and requires you to get Frodhsam->Liverpool and Liverpool->Runcorn as separate tickets.
18:00:46 <Vorpal> elliott, well isn't bus short for omnibus?
18:00:52 <Vorpal> though that seems quite weird
18:01:08 <Vorpal> "A bus (play /ˈbʌs/; plural "buses" or "busses", /ˈbʌsɨz/), archaically also omnibus, multibus, or autobus)"
18:01:25 <Vorpal> argh wikipedia, unbalanced parens
18:02:56 <Gregor> LolBot reverted likely spam by some guy who didn't log in to edit "Bus"
18:03:11 <Vorpal> elliott, yes I agree that him using it for "omnibus" would not only be archaic but also pretentious.
18:04:00 <elliott> The best thing about editing WP anonymously is that my IP can change multiple times per day.
18:04:05 <elliott> Because my router is a piece of shit.
18:04:10 <elliott> So people keep assuming I'm a vandal based on past vandalism.
18:04:22 <elliott> "You were a vandal a day ago, you must be one now."
18:04:44 <Vorpal> elliott, just link them to [[Dynamic IP]] or such
18:04:55 <Ngevd> I once made an account on Wikipedia with the specific intent of getting banned as quickly as possible
18:05:10 <elliott> Vorpal: I usually just revert them until they give up because they don't want to break the rules.
18:05:19 -!- sebbu has quit (Read error: Connection reset by peer).
18:05:43 -!- sebbu has joined.
18:05:43 -!- sebbu has quit (Changing host).
18:05:43 -!- sebbu has joined.
18:05:47 <elliott> 15:17:11: <Phantom_Hoover> Ngevd, BRAAAAABEEEN
18:05:48 <elliott> 15:17:31: <Phantom_Hoover> HUMAN JAWS SHOULD NOT BE THAT LARGE
18:07:06 <elliott> 16:05:02: <ais523_> 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 <elliott> 16:06:23: <Ngevd> That's as much as the nicest edition of the OED!
18:07:11 <elliott> Ngevd: Is this how you judge all prices.
18:07:32 <Vorpal> elliott, just give a reasonable edit message. Like "fixed unbalanced parentheses" or such.
18:07:37 <elliott> Ngevd: Let's buy it collectively.
18:07:43 <elliott> Vorpal: Hey, they're already getting unpaid labour.
18:07:47 <elliott> 16:07:54: <ais523_> 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 <elliott> 16:07:58: <ais523_> perhaps I'll ask elliott if I should buy it
18:07:49 <elliott> Not only yes, but hell yes.
18:07:54 <Vorpal> elliott, I mean, to avoid the spam bot situation
18:08:16 <elliott> 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 <Vorpal> elliott, hm I guess it is mostly bots doing that...
18:08:41 <elliott> 16:43:02: <Vorpal> 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:43 <Vorpal> which is kind of silly
18:09:11 <elliott> 17:34:12: <monqy> http://en.wikipedia.org/wiki/Chupacabra good picture
18:11:51 -!- oerjan has joined.
18:16:04 -!- Ngevd has changed nick to Taneb.
18:18:54 <Taneb> I'm going to be Taneb for a while now, I think
18:19:10 <oerjan> <Ngevd> The other was Morpeth, btw
18:19:50 <oerjan> i choose to believe that place must have been brought to this world by a freak interdimensional accident
18:23:36 <oerjan> <ais523_> 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 <oerjan> so basically, douglas adams did not really have to make anything up, it's just people outside england who think he did.
18:25:23 <elliott> People think Adams made shit up?
18:28:11 -!- zzo38 has quit (Remote host closed the connection).
18:30:00 <elliott> "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 <elliott> one day and illegal another."
18:38:29 -!- ais523 has joined.
18:41:39 <ais523> today we learnt: it is indeed possible to go from Hexham to Morpeth via Newcastle
18:42:10 <ais523> I consulted the routeing tables
18:42:22 <elliott> this is better than mornington crescent, really
18:42:22 <oerjan> it just requires a small interdimensional detour
18:42:26 -!- Phantom_Hoover has quit (Ping timeout: 248 seconds).
18:42:26 <ais523> sorry, I've been advertising THE BEST THREAD ON TDWTF because it's so awesome
18:42:34 <elliott> just play it without telling everyone else about the ATOC guide
18:42:38 <ais523> elliott: it involves Mornington Crescent, indirectly
18:42:39 <elliott> and they'll just assume you're making shit up
18:42:52 <ais523> because the Tube is part of it
18:43:21 <ais523> grouped into "London Group", but it's mentioned
18:43:29 <ais523> in fact, you get a + on the train ticket when it's involved
18:43:40 <ais523> and the orange train ticket you get for regular train travel then works on the Underground ticket barriers
18:43:49 <ais523> I actually did this once; it confused Google
18:44:02 <ais523> or to be precise, their department for handling train travel expenses
18:44:15 <oerjan> 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 <elliott> oerjan: um are you ignoring me
18:44:27 <elliott> that's exactly what I said :P
18:44:45 <elliott> 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 <ais523> oerjan: I prefer to interpret "4000 pound tome" as weight not value here
18:44:55 <elliott> points are awarded appropriately, and the person who got the correct answer soonest plays next
18:45:04 <ais523> elliott: looks like mental ignore
18:45:19 <elliott> ais523: or he just didn't notice :P
18:45:40 <ais523> a bit like me and Sgeo, then
18:45:43 <ais523> I don't intend to ignore him
18:45:48 <ais523> I just don't really manage to focus on anything he says
18:47:17 <elliott> I'm so glad all our place names are ridiculous, or this would be no fun at all
18:47:33 <Taneb> I've got a book about Northumbrian place names somewhere
18:47:40 <Taneb> It's called Goodwife Hot
18:47:53 <fungot> 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 <oerjan> perhaps the whole of northumberland has been dimensionally misplaced
18:49:03 <elliott> ais523: I wonder if there's a way to get a non-UK country involved in this
18:49:09 <elliott> ais523: also, what has Google got to do with it?
18:49:13 <Taneb> It was actually ripped out of downtown alternate Helsinki in 24 BC
18:49:18 <ais523> elliott: they were one end of the train journey
18:49:20 <ais523> I was giving a talk there
18:49:30 <elliott> ah, your famous INTERCAL tutoring
18:49:48 <ais523> although they did put me in charge of CADIE
18:49:55 <ais523> as they couldn't find anyone else to deal with her
18:50:18 <ais523> 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 <Phantom_Hoover> Whenever I read 'glacial acetic acid' I think of glacé cherries and
18:56:26 <ais523> 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 <ais523> hey, it mentions Hexham!
18:56:44 <ais523> I completely missed that there were more pages of "The amazing routeing question"
18:57:00 -!- sebbu has quit (Read error: Connection reset by peer).
18:57:14 <Taneb> 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 <ais523> http://www.rossrail.co.uk/central/routeqn1.html
18:58:33 <Taneb> Almost University Challeng time
18:59:54 <Taneb> It's like Challege, but with Polytechnics
19:00:36 <ais523> thanks for the reminder
19:00:44 <ais523> my grandmother tries to watch it religiously, but keeps forgetting
19:01:28 <elliott> That's my approach to religion.
19:04:04 <ais523> "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 <ais523> for bonus points, the person who /wrote/ that is called Mr. Feather
19:04:59 <elliott> Phantom_Hoover: Have you written the terrain generator yet.
19:05:00 -!- Taneb has quit (Ping timeout: 260 seconds).
19:10:40 <oerjan> <ais523> for bonus points, the person who /wrote/ that is called Mr. Feather <-- mr. head paradox is probably involved in this.
19:11:17 <oerjan> universe reboot in 9, 8, ...
19:11:33 * oerjan hits elliott with a lampshade
19:11:36 <elliott> oerjan: more like shutdown >:)
19:12:10 <oerjan> elliott: i am speaking about the above trainwreck, not the current iwc storyline
19:12:20 <elliott> oerjan: suuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuure
19:12:40 <oerjan> they _might_ become entwined at this rate, though
19:14:26 <elliott> People I am disappointed in, a list: Phantom_Hoover.
19:18:20 <elliott> I really wish the Prelude has a lazy natural type, and that length was genericLength
19:20:21 <oerjan> instance Num [()] where ...
19:23:23 <elliott> Anyway I mean it should be in there by default
19:23:29 <elliott> Because it lets you compare lengths without doing something stupid like compareLength
19:23:59 <elliott> Admittedly it'd be nice if there was defaulting there
19:24:19 <Deewiant> While the name is long as genericLength I prefer compareLength
19:24:44 <elliott> Deewiant: You're just inlining compare .: length
19:25:04 <Deewiant> No need to find the appropriate lazy naturals package on hackage
19:25:28 <oerjan> > sort . tails . replicate 5 ()
19:25:28 <lambdabot> Couldn't match expected type `[a]' against inferred type `()'
19:25:32 <oerjan> > sort . tails $ replicate 5 ()
19:25:34 <lambdabot> [[],[()],[(),()],[(),(),()],[(),(),(),()],[(),(),(),(),()]]
19:25:34 <elliott> Deewiant: Remember the part where I said I wanted it to be in Prelude?
19:26:13 <Deewiant> elliott: My "while" there was meant to imply the current situation
19:26:31 <oerjan> > (compare `on` (() <$))) "abc" "abcd"
19:26:31 <elliott> Oh, I thought you were listing it as a con to compareLength
19:26:32 <lambdabot> <no location info>: parse error on input `)'
19:26:39 <oerjan> > (compare `on` (() <$)) "abc" "abcd"
19:27:13 -!- pikhq_ has joined.
19:27:34 -!- pikhq has quit (Ping timeout: 258 seconds).
19:27:56 <lambdabot> Prelude zip :: [a] -> [b] -> [(a, b)]
19:27:57 <lambdabot> Data.List zip :: [a] -> [b] -> [(a, b)]
19:27:57 <lambdabot> Language.Haskell.TH strictType :: Q Strict -> TypeQ -> StrictTypeQ
19:28:15 <lambdabot> forall a1 a2 (m :: * -> *). (Monad m) => m a1 -> m a2 -> m (a1, a2)
19:28:20 <oerjan> > sortBy (compare `on` (() <$)) $ words "the quick brown fox jumped over the lazy dog"
19:28:21 <lambdabot> ["the","fox","the","dog","over","lazy","quick","brown","jumped"]
19:30:57 -!- tiffany has joined.
19:31:39 <elliott> Man, Haskell's AST is exhausting
19:31:53 <shachaf> > elem 's' "the quick brown fox jumped over the lazy dog"
19:32:24 <elliott> Does any existing Haskell implementation do parsing before resolving imports?
19:32:28 <oerjan> oh well it's a past offense, anyhow
19:36:02 -!- Ngevd has joined.
19:36:23 <elliott> Hmm, this "one abstract name type per type of name" approach isn't tenable
19:36:33 <elliott> There's too many situations where anything from the right namespace is okay
19:36:42 <elliott> So I guess I just want Name/TyName/ValName
19:36:52 <elliott> Rather than Name/VarName/FieldName/ConName/OpName/TyName/TyVarName/ClassName/ModName
19:37:09 <elliott> 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:29 <elliott> oerjan: are module names their own namespace
19:37:37 <elliott> OK, Name/TyName/ValName/ModName
19:38:24 -!- oerjan has quit (Quit: Good night).
19:42:48 <elliott> -- | an arbitrary time in the future
19:42:49 <elliott> 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 <elliott> jhc isn't Y2020-compliant.
19:43:22 <ais523> hey, it didn't say that endOfTime was the last possible time
19:43:28 <ais523> just that it's an arbitrary time in the future
19:43:38 <Ngevd> Tomorrow lunchtine
19:43:57 <Deewiant> That's a terrible "time in the future"
19:44:16 <Ngevd> And it is in the future
19:44:20 <elliott> ais523: it won't be in the future in 2020
19:44:22 <Ngevd> Now, why is it terrible
19:44:25 <elliott> so jhc is 2020-incompliant
19:44:34 <Deewiant> It is in the future for a terribly short time
19:44:44 <Ngevd> That is irrelevant
19:44:45 <ais523> elliott: it didn't say it would /always/ be in the future
19:44:56 <elliott> well, the documentation will at least be wrong
19:45:00 <ais523> really, tomorrow lunchtime would be a better impl of that spec
19:45:09 <ais523> to break programs that misread it sooner rather than later
19:45:37 <ais523> (that is, calculating tomorrow lunchtime, not hardcoding it)
19:46:06 <ais523> 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:30 <ais523> and the solution to the present time matching the regex is to bump it another 10 years
19:51:21 <elliott> 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 <Deewiant> elliott: ISTR you said a DS9K C has to be an interpreter; why?
19:52:39 <elliott> Deewiant: I don't remember saying that, but I probably just meant it would be far easier as an interpreter
19:52:46 <elliott> Since you want to change behaviour dynamically to trip programs up
19:52:52 <elliott> Behaviour and representations
19:53:50 <elliott> Hmm, guess these get unified
19:54:19 <elliott> Deewiant: Is there anything forbidding the bunch-of-chars representation of a pointer from changing over time?
19:54:26 <elliott> Say, every time you dereference it?
19:54:58 <ais523> 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 <ais523> if there wasn't one in scope, it might be legal
19:55:19 <elliott> ais523: the as-if rule sure does lead to some strange things...
19:56:01 <Deewiant> Hmm, apparently varargs in C are completely undefined?
19:57:43 <Deewiant> §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:58:29 <Deewiant> This might be only for non-prototyped functions though, I'm not sure how this is meant to be read
19:58:48 <Deewiant> Or no wait, that says it has a prototype, right :-P
19:59:38 <Deewiant> So if it's defined as varargs but the prototype says it's not
19:59:46 -!- quintopia has quit (Ping timeout: 248 seconds).
20:00:12 <elliott> | ExportType TyName (Exports ValName)
20:00:12 <elliott> | ExportClass TyName (Exports ValName)
20:00:12 <elliott> 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 <Ngevd> xkcd and IWC used the same joke once.
20:01:49 <Ngevd> http://www.irregularwebcomic.net/1463.html
20:01:51 <Deewiant> They're separate namespaces so it probably would help clarify things
20:01:52 <Ngevd> http://xkcd.com/157/
20:02:17 * tiffany pokes channel for some scala learning thingies
20:03:12 <elliott> Deewiant: Um I already have ValName/TyName
20:03:32 <elliott> Deewiant: Just not variable versions of the above, which are distinguishable by their lowercaseness etc
20:03:33 <Deewiant> elliott: But "x" can be either depending on context
20:04:15 <elliott> Ngevd: Well, they're both obvious parodies of the same source material
20:04:26 <elliott> Deewiant: I mean yes depending on context
20:04:34 <elliott> Deewiant: But "X" can be ValName or TyName depending on context too
20:04:36 <elliott> Constructor X or type/class X
20:05:01 <Ngevd> THEY ARE EXACTLY THE SAME PARODIES
20:05:05 <elliott> Deewiant: Or variable x vs. type variable x, which still fall under ValName vs. TyName
20:06:31 <Deewiant> So what you were actually wondering about adding was separating X (constructor, ValName) and x (non-constructor value, VarName)? Or what?
20:06:50 <elliott> Deewiant: Well, I have things like
20:06:56 <elliott> newtype Context = Context [(TyName, TyName)] deriving (Show)
20:07:08 <elliott> newtype Context = Context [(TyName, TyVarName)] deriving (Show)
20:07:58 <elliott> 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 <elliott> (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 <Deewiant> Meh, just stick to the standard as far as reasonable in your implementation
20:08:35 <elliott> Deewiant: The standard defines no AST
20:08:46 <elliott> Deewiant: It just defines a grammar, and translation rules into a simpler form
20:09:27 <Deewiant> So if the grammar doesn't distinguish, you don't need to either
20:09:43 <elliott> Deewiant: The grammar distinguishes completely
20:09:54 <elliott> But it's an all-seeing eye; I'm parsing before processing imports
20:10:01 <elliott> So I /can't/ tell whether "x" is a VarName or a FieldName
20:10:30 <elliott> (Also, the grammar can say (aname | bname) without ugly Left/Right constructors cluttering its use :-))
20:12:17 <Deewiant> 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 <Deewiant> I'm pretty sure there's an error of omission on slide 16 - implicit declarations were dropped in C99
20:14:10 <elliott> Deewiant: That piece of shit site wants me to log in to download that, sigh
20:14:31 <Deewiant> (I used the latter before looking at the comments, worked fine)
20:15:03 <elliott> Wow, how long is this thing
20:15:07 <elliott> Or is this server just very slow
20:16:03 <elliott> Oh, I just had to reload to get it to actually load
20:16:15 <Deewiant> Using the web viewer works up to a point
20:16:31 <Deewiant> Around slide 250-300 it suddenly becomes unusably slow
20:16:50 <elliott> " but for older versions of C, like ANSI C
20:16:50 <elliott> and K&R, the exit value from this program will
20:16:50 <elliott> be some undefined garbage value."
20:16:55 <elliott> Filthy, machine-specific, garbage lies
20:17:05 <elliott> Deewiant: reddit thinks that viewing slide n is O(n)
20:17:09 <elliott> Due to decompression or whatever
20:17:24 <Deewiant> But it was a really noticeable dip at that certain point
20:17:34 <elliott> And talking about C standards... if you want to show
20:17:34 <elliott> that you care about C programming, you should use
20:17:34 <elliott> int main(void) as your entry point - since the
20:17:35 <Deewiant> Maybe they're in some kind of weird chunks or something
20:17:40 <elliott> Asshole, that's just pointlessly verbose
20:17:56 <elliott> int main(void) === int main() in a definition
20:18:06 <elliott> They're just saying that you should show you ~care~ by doing it for definitions too
20:18:27 <Deewiant> "It shall be defined with a return type of `int` and with no parameters: `int main(void) { /* … */ }"
20:19:15 <elliott> Deewiant: The quoted code is obviously an example
20:19:23 <elliott> int main() { ... } defines main with return type int and no parameters
20:19:57 <elliott> These engineers have even worse posture than me
20:20:31 <elliott> No you idiot, it'll be 0, it's static
20:20:51 <elliott> No you idiot, it'll be garbage
20:21:12 <elliott> I don't like this presentation's interleaving of language and implementation details
20:21:26 <Deewiant> Yeah it's kinda practical that way
20:21:48 <Deewiant> It assumes a non-DS9K x86ish implementation
20:22:36 <elliott> "if you compile in debug mode the
20:22:36 <elliott> runtime might try to be helpful and memset your
20:22:41 <elliott> Gross, debug mode should try and break your program
20:23:09 <Deewiant> I wouldn't be surprised if gcc -O0 zero-initialized everything
20:23:30 <elliott> I wouldn't be surprised if gcc -O0 compiled to Python
20:23:51 <elliott> I'd be surprised but in a good way
20:25:08 <Deewiant> Is #2 really completely undefined?
20:25:51 <elliott> Eh, how do you go to a certain page in Chrome
20:25:58 <elliott> Or even find out what page you're on
20:26:10 <Deewiant> And yeah, it is completely undefined
20:26:11 <elliott> A floppy disk icon for "save" in this decade, Google?
20:27:07 <elliott> Not garbage, it's static, god you're thick
20:27:07 <Deewiant> Yeah sequence points I know, I just couldn't remember that a++ also restricts other reads from a
20:27:55 <elliott> That's without optimisation
20:28:18 <elliott> Deewiant: Does the C get deeper than this, this is pretty obvious so far
20:28:20 <Deewiant> The "garbage" with optimization looks like it might be argv
20:28:41 <Deewiant> Depends on your definition of "deep"
20:28:58 <Deewiant> It switches to C++ halfway through
20:29:07 <elliott> Oh, I only have to read half of it
20:29:39 <Deewiant> Slide 389 begins the ending bit
20:30:05 <elliott> "I would never write code like that."
20:30:23 <olsner> that's probably about 380 slides further than I'd bother
20:30:46 <elliott> "I don’t get a warning when compiling it,
20:30:53 <Deewiant> olsner: Many of the slides amount to moving an arrow on the previous slide, or some such
20:30:58 <elliott> You haven't been right in disagreement a single time yet, why do you think this will be your lucky day
20:32:20 <elliott> Undefined order of printing for b and c calls
20:33:14 <Deewiant> Another thing the girl forgot is that %zu doesn't work on MSVCRT so it's typically less portable than %d
20:33:38 <elliott> Deewiant: That's too practical even for something like this, who gives a fuck about MSVCRT
20:33:56 <Deewiant> Well the girl bitches about using %d to print sizeof(int)
20:34:27 <Deewiant> 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 <elliott> Does that make it any more right
20:35:20 <Deewiant> No, but since it's all about mixing implementation details with language details I thought that'd be worth a mention
20:35:40 <Phantom_Hoover> <Deewiant> Well the girl bitches about using %d to print sizeof(int)
20:35:47 <Gregor> (int) sizeof(int) PROBLEM SOLVT :P
20:36:03 <Gregor> Phantom_Hoover: Yup, that's what I'm lolwutting about.
20:36:09 <elliott> Hmm, can sizeof(int) actually overflow an int
20:36:26 <elliott> I don't think it possibly can
20:36:45 <elliott> Does signedness fuck that up
20:36:50 <elliott> I'm pretty sure sizeof(int) can't overflow an int ever
20:37:03 <Deewiant> If int is 1 bit then sizeof(int) = negative one
20:37:18 <elliott> That doesn't sound so valid
20:37:38 <elliott> Show me how sizeof(int) can overflow an int
20:37:39 <Deewiant> And INT_MIN <= -32767, INT_MAX >= 32768
20:37:40 <Gregor> It's all about size_t vs int though.
20:37:49 <Phantom_Hoover> Who is this girl and why is she bitching about printf format strings.
20:37:56 <elliott> Phantom_Hoover: http://www.pvv.org/~oma/DeepC_slides_oct2011.pdf
20:38:18 <Deewiant> elliott: sizeof is implementation-defined
20:38:29 <elliott> Deewiant: Like, completely?
20:38:39 <Deewiant> elliott: I can have an int with range [-2^16,2^16) and size 4 megabytes
20:39:07 <Deewiant> elliott: §6.5.3.4 ¶5 "The value of the result of both operators is implementation-defined" (sizeof and _Alignof)
20:39:14 <Phantom_Hoover> <elliott> Hmm, can sizeof(int) actually overflow an int
20:39:22 <Gregor> The VALUE, but is the TYPE implementation-defined?
20:39:30 <elliott> Deewiant: So can sizeof(int) = 0 even though int is sixteen bits in range
20:39:39 <elliott> Phantom_Hoover: Yes it can
20:39:42 <elliott> Phantom_Hoover: Deewiant just proved it
20:40:01 <Gregor> Oh, Deewiant is tricky, isn't he :P
20:40:03 <Deewiant> elliott: I think it can actually be zero for everything
20:40:11 <Gregor> As there's nothing that says the size has to correspond in any logical way to the range.
20:40:14 <Deewiant> At least this section doesn't appear to exclude that possibility
20:40:24 <elliott> char can't be 0 chars, that's just...
20:40:35 <elliott> Deewiant: Hey, that means C's TCness is more plausible through conventional methods
20:40:38 <Deewiant> Other than that, it's the "size (in bytes) of its operand"
20:40:45 <olsner> I think there's something about everything being representible as a sequence of bytes
20:40:47 <elliott> (i.e. methods that make a "normal" expanding-tape BF interpreter able to be TC on a hosted system)
20:40:59 <elliott> olsner: Does sizeof have to correspond to that
20:41:04 <elliott> I guess that's the only way you can exploit that
20:41:09 <elliott> Nothing says it has to be useful
20:41:25 <Deewiant> §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:51 <elliott> Deewiant: Where is that related to sizeof's result
20:41:58 <Deewiant> elliott: 2011-10-10 23:40:36 ( Deewiant) Other than that, it's the "size (in bytes) of its operand"
20:42:18 <elliott> Deewiant: I think the committee would probably tell you that "size" has to mean "size" :-)
20:42:18 <Gregor> 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:23 -!- elliott has left ("Leaving").
20:42:26 -!- elliott has joined.
20:42:39 <elliott> Deewiant: Set sizeof(int) = one, make int bignum
20:42:53 <elliott> Assuming sizeof really can be nonsense
20:42:59 <elliott> But I think the committee would tell you that you can't have a TARDIS type
20:43:09 <elliott> i.e. you can't possibly stuff n chars information into < n chars
20:43:18 <elliott> thus partially specifying what "size" means
20:43:19 <elliott> Phantom_Hoover: I can type 9
20:43:48 <Deewiant> 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 <Deewiant> It might be sensibly restricted.
20:44:02 <Sgeo|web> Why don't you have all of !@#$%^&*() in the topic?
20:44:13 <elliott> Sgeo|web: Too hard to pick shit out of
20:44:29 <elliott> Deewiant: I really hope the C committee reads this shit some day
20:44:47 <elliott> Deewiant: Or at least is somehow reeled into a Q&A session with us
20:45:05 <Deewiant> §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:46:03 <Deewiant> consist (third-person singular simple present consists, present participle consisting, simple past and past participle consisted)
20:46:07 <Deewiant> (intransitive, construed with of) To be composed, formed, or made up (of).
20:46:14 <olsner> we have to go deeper: bignum bits
20:46:35 -!- yorick has joined.
20:46:37 <Deewiant> elliott: You can still pad them, they explicitly allow for padding bits
20:46:48 <Deewiant> So you can have sizeof(int) > (size_t)INT_MAX
20:47:01 <elliott> Deewiant: I'm just interested in proving C TC
20:47:06 <elliott> I know it is TC standalone
20:47:10 <Deewiant> Yeah I doubt that's going to happen
20:47:13 <elliott> And hosted given a perverse OS
20:47:19 <elliott> Deewiant: Erm, freestanding
20:47:26 <elliott> Bignum chars, sizeof everything is one, job done
20:48:02 <olsner> oh, freestanding C relaxes the limitations on chars?
20:48:41 <elliott> olsner: it just doesn't have the header with CHAR_BIT
20:51:27 <elliott> Sequence points are so strange
20:51:44 <elliott> Well of course, because sizeof returns the number of bytes. And in C
20:51:44 <elliott> int is 32 bits or 4 bytes, char is one byte and when the the size of structs
20:51:44 <elliott> are always rounded up to multiples of 4"
20:51:56 <elliott> Does anyone who actually believes this have a good enough understanding of the terminology to articulate it in these words
20:52:14 <Deewiant> elliott: Are you sure that this business with consisting of bytes and bits doesn't disallow your bignum chars
20:52:28 <elliott> Deewiant: Is "byte" not defined as what a char can store
20:52:36 <elliott> Deewiant: Anyway, as-if rule
20:52:54 <elliott> 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 <Deewiant> byte - addressable unit of data storage large enough to hold any member of the basic character set of the execution environment
20:53:04 <Deewiant> A byte is composed of a contiguous sequence of bits, the number of which is implementationdefined
20:53:38 <olsner> 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 <elliott> 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 <elliott> Deewiant: But I'm not sure you can actually detect that in a freestanding environment
20:54:41 <elliott> They could just be bigger than you ever bother to check for
20:54:49 <elliott> So I think the as-if rule works OK here
20:55:22 <elliott> 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:41 <elliott> 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 <olsner> can a program detect bignum chars without invoking undefined behavior?
20:56:06 <elliott> olsner: Not a freestanding one
20:56:21 <elliott> 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 <Deewiant> Can it decrement an unsigned char?
20:57:19 <elliott> Deewiant: unsigned char can be smaller than signed char, right?
20:57:22 <elliott> And char can be signed char
20:57:42 <elliott> sizeof(unsigned char) = one; it can hold one octet and overflows appropriately, but just has infinitely much padding.
20:57:51 <elliott> char = signed char; sizeof(signed char) = one; bignum; no overflow
20:57:53 <olsner> 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 <elliott> olsner: Not if it changes your answer to sizeof and the like
20:58:16 <elliott> Deewiant: So yeah, all signed types are their minimum possible size but have sizeof one thanks to copious imaginary padding
20:58:26 <elliott> All signed types are bignums
20:59:55 <elliott> Deewiant: And hosted C can be TC with file IO
20:59:57 <Deewiant> §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 <elliott> Since IIRC it's explicitly allowed that file position/sizes might not fit inside the types used to represent them
21:00:09 <elliott> I think you're meant to use negative one or something in that case
21:00:46 <elliott> Deewiant: Can't you just give the unsigned type a sign bit
21:00:53 <elliott> i.e. make unsigned char actually signed :-)
21:00:57 <olsner> Deewiant: but that only applies to non-negative values of signed integer types?
21:01:04 <Ngevd> 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 <elliott> Sgeo|web: Sorry, you're going to die.
21:01:36 <olsner> sounds like it doesn't exclude unlimited negative values as long as the positive values is a subrange of the unsigned type
21:01:46 -!- Ngevd has quit (Quit: what a big quitter he is, eh?).
21:01:51 <elliott> Deewiant: what the ols said
21:04:10 <elliott> Someone write a BF interp that stores everything with negative chars :-D
21:05:12 <olsner> so bignum chars actually work as long as all the extra values are hidden in the negative range?
21:05:34 <olsner> I can't remember all the other funny rules we had troubles with :P
21:05:56 <elliott> Phantom_Hoover: webchat, presumably.
21:06:15 <olsner> so what's the thing with the bits? does that only apply for the (positive) range of the unsigned type?
21:07:24 <elliott> | c >= 'a' && c <= 'm' || c >= 'A' && c <= 'M' = chr $ ord c + 13
21:07:24 <elliott> | c >= 'n' && c <= 'z' || c >= 'N' && c <= 'Z' = chr $ ord c - 13
21:08:20 <Sgeo|web> I guess a conformant C program can't detect whether it's in an environment that allows for TCness
21:08:55 <elliott> Sgeo|web: char could just be /big enough/ for all its uses
21:09:55 <elliott> Deewiant: Guess what the difference is between a (class) context on an instance and a (class) context on a value in standard Haskell
21:10:01 <elliott> Nobody else may participate
21:10:40 <Deewiant> Between "instance Foo a => ..." and "foo :: Foo a => ..."? Beats me.
21:11:47 <elliott> In an instance decl, the type param to the class must be a tyvar
21:11:52 <elliott> In an instance decl's context, the type param to the class must be a tyvar
21:12:00 <elliott> In a value decl's context, it can be applications of tyvars too
21:12:44 <elliott> Deewiant: 2010, didn't look at 98
21:13:05 <elliott> The difference is between context (the value/data/newtype decl one) and scontext (the instance/class decl one)
21:14:27 <olsner> 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 <Deewiant> elliott: Oh well, hence FlexibleInstances I suppose :-P
21:14:59 <elliott> Deewiant: I'm trying to implement totally-standard Haskell at first :P
21:15:04 <olsner> or are FILE, fopen, etc not actually as standard as I believe?
21:15:12 <elliott> Deewiant: I'm tempted to use the same data-type here and enforce it arbitrarily somewhere else though
21:15:49 <Deewiant> I might not like you if you do that
21:16:28 <elliott> Deewiant: As opposed to duplicating all the code operating on them?
21:16:49 <elliott> I already have like fifty import types
21:16:50 <Deewiant> (N.B.: I'm just saying random crap, I'm tired)
21:17:07 <elliott> | ExportType TyName (Exports ValName)
21:17:09 <elliott> | ExportClass TyName (Exports ValName)
21:18:46 -!- Phantom_Hoover has left ("Leaving").
21:18:51 -!- Phantom_Hoover has joined.
21:19:48 <olsner> Phantom_Hoover: or maybe you've just been projecting your idea into his mind accidentally
21:26:13 <elliott> 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:27:55 <elliott> Deewiant: I don't believe that's standard
21:28:33 <elliott> Phantom_Hoover: Hey, you didn't tell me Hughes was working on another novel.
21:29:53 -!- Patashu has joined.
21:30:34 <elliott> constrs→constr1 | … | constrn (n ≥ 1)
21:30:34 <elliott> constr→con [!] atype1 … [!] atypek (arity con = k, k ≥ 0)
21:30:34 <elliott> |(btype | ! atype) conop (btype | ! atype) (infix conop)
21:30:34 <elliott> |con { fielddecl1 , … , fielddecln } (n ≥ 0)
21:30:34 <elliott> fielddecl→vars :: (type | ! atype)
21:31:06 <olsner> elliott: klart som korvspad
21:31:08 <Deewiant> The alllowercase abbrs style of the grammar is annoying
21:31:26 <elliott> 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 <elliott> I think C's AST is simpler
21:34:45 <elliott> Deewiant: Yeah, I'm pretty sure infix type varsaren't standard:
21:34:49 <elliott> type→btype [-> type] (function type)
21:34:49 <elliott> btype→[btype] atype (type application)
21:34:52 <elliott> |( type1 , … , typek ) (tuple type, k ≥ 2)
21:34:56 <elliott> |( type ) (parenthesised constructor)
21:35:06 <elliott> |(->) (function constructor)
21:35:08 <elliott> |(,{,}) (tupling constructors)
21:37:31 <elliott> decls→{ decl1 ; … ; decln } (n ≥ 0)
21:37:31 <elliott> cdecls→{ cdecl1 ; … ; cdecln } (n ≥ 0)
21:37:38 <elliott> Deewiant: Spot the difference between decl and cdecl
21:38:03 <elliott> idecls→{ idecl1 ; … ; idecln } (n ≥ 0)
21:38:55 <elliott> Argh, LHSes are such a mess
21:45:24 <elliott> Deewiant: Semantic or syntactic error?: (top-level declaration:) Just f x = undefined
21:46:37 <elliott> Deewiant: (Just f) x = undefined
21:46:53 <Deewiant> Why is the earlier not syntactic
21:47:07 <Deewiant> Is a top-level capital letter ever valid?
21:47:08 <elliott> Deewiant: It's just passing a wrong number of arguments to Just
21:47:26 <elliott> Deewiant: But (Just f) x isn't ok because basically
21:47:32 <Deewiant> Yeah but nobody does that at toplevel :-P
21:47:33 <elliott> OK but the point is that an lhs is either pat or funlhs
21:56:55 <elliott> Deewiant: What does your C AST look like
21:57:01 <elliott> I want to feel better and/or worse about mien
21:57:34 <Deewiant> I really haven't been spending much time on it at all :-P
21:57:40 <Deewiant> I have a mostly implemented preprocessor
21:57:52 <Deewiant> (No #pragma and other less important stuff)
21:58:57 <elliott> Deewiant: So "unimportant"
21:59:19 <Deewiant> #error never needs to be implemented, it always does what it should
21:59:44 <Deewiant> #line would require implementing proper error handling, meh
22:00:09 <elliott> <Deewiant> #error never needs to be implemented, it always does what it should
22:00:14 <Deewiant> #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:01:08 <elliott> Gregor: Holy shit, you JS fucktards have finally discovered that you can get a compiler to do CPS
22:01:35 <Deewiant> #pragma STDC {FP_CONTRACT,FENV_ACCESS,CX_LIMITED_RANGE} {ON,OFF,DEFAULT}
22:01:40 <Deewiant> Or implementation-defined behaviour
22:03:10 <Deewiant> Oh and also #if isn't implemented, that was kind of the next thing to do along with adding tokens
22:03:32 <Deewiant> I noticed that trifecta only does ByteStrings so I can't use it to parse a list of ADTs :-P
22:03:57 <elliott> Deewiant: You're meant to layer that on top with parser transformers, I believe
22:04:35 <elliott> Deewiant: Dunno, there's one to do layout
22:04:45 <elliott> I have to restrict myself to Parsec because I want to be able to self-host without any language extensions
22:05:18 <Deewiant> Well MonadLayout is a subclass of MonadParser, and MonadParser is very Char/Word8/ByteString
22:05:33 <elliott> Well you can't accomplish parsing a list of ADTs, sure
22:05:39 <elliott> But I think you could achieve whatever effect you want otherwise
22:05:59 <Deewiant> The effect I want is that I have a list of ADTs and want to parse it :-)
22:06:01 <elliott> | LFloat Integer Integer (Maybe Integer)
22:06:01 <elliott> Hmm, I think I followed the grammar a bit too closely there
22:06:11 <elliott> Rather than an Integer for the fractional part :P
22:06:12 <Deewiant> Or maybe I don't, but I think I do
22:06:42 -!- Phantom_Hoover has quit (Ping timeout: 248 seconds).
22:06:56 <elliott> Deewiant: The ~s are for deemphasis, or something
22:07:38 <elliott> 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:28 <elliott> i.e. Tool is too limited, try something else :-)
22:08:29 <Deewiant> But to be fair I'm somewhat esoing the implementation, it being DS9K and all
22:08:40 <Deewiant> So I think I'm justified in trying to do it weirdly
22:08:50 <Deewiant> I might just depend on both parsec and trifecta
22:08:54 <elliott> I don't actually believe the XY problem is a good diagnosis 90 percent of the time
22:09:11 <elliott> It only works if all the people with problems are inexperienced
22:09:31 <elliott> 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:17:12 <elliott> "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 <elliott> Deewiant: This is the worst rule in anything ever
22:18:08 <elliott> More like maximal TERRIBLE STANDARD.
22:18:41 -!- Phantom_Hoover has quit (Quit: Leaving).
22:19:32 <elliott> Deewiant: http://sprunge.us/CEce Make my AST bearable, thanks
22:22:20 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
22:22:40 <Patashu> does anyone still use octasl
22:23:02 <elliott> Deewiant: Because [] and () are constructors, not list/tuple literals
22:23:09 <elliott> Deewiant: The grammar agrees with me
22:23:12 <elliott> Deewiant: Well, that's not true
22:23:22 <elliott> Deewiant: The grammar says that () is a constructor and (a) is a parenthesised expression and (a,b) is a tuple literal
22:23:33 <elliott> 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 <elliott> But that's ridiculously inconsistent so I'm doing [] as a constructor too
22:24:00 <elliott> 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:15 <elliott> I think in a pattern [] is the constructor, not the list literal
22:24:39 <Deewiant> What's [a,b] in a pattern then
22:25:03 <Patashu> you know what ascii needs? more funny brackets
22:25:25 <elliott> I think [] in a pattern actually is a list literal
22:25:28 <Deewiant> elliott: So why is [] a constructor there agh
22:25:28 <Patashu> I'm going to change it retroactively
22:25:31 <elliott> I'm not sure when []-constructor ever helps
22:25:41 <elliott> http://www.haskell.org/onlinereport/haskell2010/haskellch3.html
22:25:48 <elliott> |( exp1 , … , expk ) (tuple, k ≥ 2)
22:25:48 <elliott> |[ exp1 , … , expk ] (list, k ≥ 1)
22:25:55 <elliott> 3.2 Variables, Constructors, Operators, and Literals
22:25:55 <elliott> |gcon (general constructor)
22:26:47 <elliott> God, my Core language will be so much nicer than this
22:28:28 <elliott> Deewiant: I don't suppose you have any experience with Parsec's "language" stuff
22:38:44 <olsner> sweet, my kernel can speak (I gave it printf)
22:39:27 <elliott> olsner: you had to go through an assembler bug to get to printf?
22:39:50 <olsner> elliott: nah, not really, I just happened to do them in that particular order
22:40:03 <elliott> topdecl→instance [scontext =>] qtycls inst [where idecls]
22:40:04 <elliott> |( gtycon tyvar1 … tyvark ) (k ≥ 0, tyvars distinct)
22:40:04 <elliott> |( tyvar1 , … , tyvark ) (k ≥ 2, tyvars distinct)
22:40:04 <elliott> |( tyvar1 -> tyvar2 ) (tyvar1 and tyvar2 distinct)
22:40:22 <olsner> 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 <elliott> Deewiant: I like how it reiterates the entire type syntax just to specify distinctness
22:42:10 <olsner> 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 <zzo38> 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 <elliott> Finally, I just need constructors and foreigns and my AST is done
22:50:30 -!- tiffany has quit (Quit: Leaving).
22:52:31 <pikhq_> I predict there were neither dungeons nor dragons.
22:52:49 <zzo38> Correct. During this session there was neither.
22:53:07 <pikhq_> It's a pretty safe guess, really.
22:53:53 -!- derdon has quit (Remote host closed the connection).
22:56:42 <zzo38> 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 <elliott> fdecl→import callconv [safety] impent var :: ftype (define variable)
22:57:00 <elliott> |export callconv expent var :: ftype (expose variable)
22:57:00 <elliott> callconv→ccall | stdcall | cplusplus (calling convention)
22:57:00 <elliott> | system-specific calling conventions
22:57:08 <zzo38> Whether or not the next town entered (since previous session) contained a library.
22:57:39 <zzo38> Number of broken flasks.
22:57:47 <zzo38> Points of damage taken.
22:57:51 <zzo38> Points of damage dealt.
22:58:04 -!- copumpkin has joined.
23:03:27 <zzo38> And a bonus random variable which I will decide as soon as you guess.
23:03:34 <zzo38> Now try to guess *all* of these events.
23:04:34 <zzo38> (Warning some of these might be trick questions)
23:07:53 <zzo38> (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 <Sgeo|web> 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 <tswett> 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 <zzo38> Sgeo|web: Yes. Zero, some, or all of the questions I specified, must be answered with "N/A".
23:23:27 <Vorpal> tswett, you dislike lengthy compositions?
23:23:51 <elliott> That is a thing tswett said, definitely.
23:24:01 <Vorpal> besides Gregor's compositions aren't exactly long
23:24:09 <elliott> He definitely said exactly that.
23:24:15 <elliott> That is why your interpretation is reasonable.
23:25:14 <Sgeo|web> 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 <Vorpal> 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 <Sgeo|web> A lot of Homestuck songs are altered for the comic
23:26:33 <Sgeo|web> "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 <elliott> Marshallable foreign types. The argument types ati produced by fatype must be marshallable foreign types; that is, either
23:26:35 <elliott> a type synonym that expands to a marshallable foreign type,
23:26:35 <elliott> a type T t′1 … t′n where T is defined by a newtype declaration
23:26:39 <elliott> the constructor N is visible where T is used,
23:26:41 <elliott> t[t′1∕a1..t′n∕an] is a marshallable foreign type
23:38:10 <elliott> "Light speed, or 300,000 kilometers a second" --physorg.com
23:38:15 <elliott> Come on, guys, it has a precise value, there is no excuse.
23:41:49 <zzo38> 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 <zzo38> elliott: Maybe they forgot the precise value. Or they don't care about it. But they probably should.
23:46:17 <Sgeo|web> 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 <zzo38> Sgeo|web: Yes I would agree.
23:47:27 <zzo38> They should put "approx."