←2011-10-09 2011-10-10 2011-10-11→ ↑2011 ↑all
00:00:18 -!- Jafet has quit (Quit: Leaving.).
00:02:45 <CakeProphet> elliott: ...you lost me.
00:04:33 <elliott> CakeProphet: what
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:23:56 <CakeProphet> oh
00:24:00 <CakeProphet> I see.
00:24:13 <CakeProphet> Qhc then. :P
00:24:23 <CakeProphet> like
00:24:25 <CakeProphet> explain
00:24:29 <CakeProphet> what's wrong with that.
00:24:35 <monqy> it's ugly
00:24:39 <monqy> QHC is ugly too
00:24:41 <CakeProphet> okay
00:24:44 <monqy> qhc is ~beautiful~
00:25:07 <CakeProphet> I think Qhc looks nice too.
00:25:07 <elliott> I'll just go with Qhc
00:25:09 <CakeProphet> so there.
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:25:44 <elliott> qhc haskell compiler
00:25:45 <CakeProphet> ah okay. I thought that may be the case.
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:19 <CakeProphet> even if it's not officially.
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:37 <elliott> Time to write a parser
00:27:41 * elliott cracks knuckles, opens http://www.haskell.org/onlinereport/haskell2010/
00:27:48 <monqy> oh dear....
00:27:51 <elliott> monqy: what
00:27:56 <CakeProphet> lol, now that the important stuff is out of the way.
00:27:56 <monqy> parsing haskell
00:28:01 <monqy> im scared
00:28:03 <monqy> is it any fun
00:28:07 <monqy> I'm afraid of parsing
00:28:08 <CakeProphet> can't be as bad as perl.
00:28:08 <elliott> monqy: I'm going to not do layout
00:28:11 <monqy> oh
00:28:14 <elliott> monqy: for now
00:28:15 <monqy> oh
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:25 <monqy> easier
00:28:29 <elliott> it basically results in "if you don't see { after a few keywords, do some freaky shit" :P
00:28:33 <elliott> s/results in/reduces to/
00:29:12 <elliott> monqy: I don't like how you have to keep some comments but not others :(
00:29:16 <elliott> for things like pragmas
00:29:24 <monqy> :(
00:30:04 <elliott> I wonder if GHC maintains all comments in the AST??
00:30:08 <elliott> haddock uses it after all
00:31:03 <CakeProphet> elliott: might as well keep them if you're going to be handling pragmas.
00:31:09 <CakeProphet> makes it easier, I think?
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:17 <elliott> Keeping inline ones?
00:31:19 <elliott> Ugh
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:31:47 <CakeProphet> ignore or check for pragmas.
00:31:50 <CakeProphet> on inline ones.
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:06 <elliott> 9 {- foo -} + 9
00:32:06 <elliott> becomes
00:32:13 <elliott> Add 9 (CommentThen "foo" 9)
00:32:14 <elliott> or whatever
00:32:28 <CakeProphet> lolwat. that's weird.
00:32:38 <CakeProphet> but I guess that is how you'd have to do it.
00:32:44 <CakeProphet> unless you do something weirder
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:00 <CakeProphet> I was thinking about that...
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:22 <CakeProphet> well is there a node for like... a "line"
00:33:26 <CakeProphet> like, a top-level node?
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:42 <CakeProphet> yeah I think.
00:33:46 <elliott> <elliott> 9 {- foo -} + 9
00:33:48 <elliott> where declaration
00:33:50 <CakeProphet> that's kind of bad though.
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:34:49 <CakeProphet> hmmm, okay.
00:34:56 <CakeProphet> er, right, that's what I mean.
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:36:55 <elliott> huh?
00:37:14 <CakeProphet> yeah putting pragmas in the AST sounds pointless actually.
00:37:28 <CakeProphet> ...also
00:37:32 <CakeProphet> many pragmas change syntax
00:37:34 <CakeProphet> so... yeah.
00:37:46 <CakeProphet> you can't process them later, after you parse.
00:37:59 * CakeProphet is thinking aloud.
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:39:56 <elliott> But yeah
00:40:09 <monqy> do any extensions disallow otheriwse valid proramsgs
00:40:30 <CakeProphet> hmmm, none that I can think of.
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:16 <CakeProphet> ! and ~
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:21 <elliott> fair enough
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:46 <elliott> CakeProphet: for what
00:43:50 <elliott> s/for/with/
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:02 <CakeProphet> it's totally a good idea.
00:46:30 <elliott> yes, I absolutely want someone inexperienced let all over my codebase
00:46:45 <CakeProphet> elliott: under your direction of course.
00:46:56 <CakeProphet> it's not like I'm just going to like, go break things.
00:47:07 <elliott> are you sure
00:47:10 <CakeProphet> ..yes
00:47:23 <elliott> are you that good at detecting bugs in the making :P
00:47:32 <CakeProphet> >_> sometimes? lol
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:48:30 <CakeProphet> well, sometimes I do.
00:48:39 <CakeProphet> but I don't write compilers. :P
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:49:56 <elliott> pro tokens
00:49:58 <elliott> hi Sweet
00:49:59 <elliott> `? welcome
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:08 <Sweet> Hi
00:50:51 -!- Sweet has left.
00:50:57 <monqy> bye sweet
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:15 <CakeProphet> maybe Haskell -> C
00:51:34 <monqy> haskell -> haskell best compi;er
00:51:53 <Jafet> GHC has both
00:52:02 <elliott> CakeProphet: haskell → core of some sort → backends
00:52:05 <elliott> probably C will be a backend
00:52:11 <CakeProphet> oh okay.
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:52:36 <CakeProphet> I cannot.
00:52:46 <CakeProphet> I suppose that makes sense.
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:53:38 <CakeProphet> welcome to monqy
00:54:11 <elliott> good place to be
00:54:25 <CakeProphet> intermediate layer should be BF
00:54:40 <CakeProphet> or Unlambda
00:54:50 <monqy> bad ideas
00:55:07 <CakeProphet> monqy: also jokes.
00:55:15 <monqy> bad jokes
00:55:23 <CakeProphet> monqy: okay fine you make a joke.
00:55:30 <monqy> I can't force those things man
00:55:46 <monqy> forcing jokes is bad, for bad people
00:55:52 <CakeProphet> monqy: okay fine make ideas then.
00:56:04 <monqy> forcing ideas is bad, for bad people
00:56:10 <CakeProphet> good idea.
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:56:48 <CakeProphet> best compiler jokes.
00:57:05 -!- Jafet1 has joined.
00:57:23 -!- Jafet has quit (Disconnected by services).
00:57:25 -!- Jafet1 has changed nick to Jafet.
00:59:15 <CakeProphet> elliott: oh oh oh LLVM
00:59:22 <CakeProphet> use that.
00:59:44 <CakeProphet> as backend.
00:59:51 <CakeProphet> back-backend.
01:00:03 <elliott> i can have
01:00:04 <elliott> multiple
01:00:06 <elliott> backacbackbkcbackends
01:00:12 <CakeProphet> elliott: right but that's the best one.
01:00:17 <CakeProphet> use that one by default.
01:00:30 <monqy> the beST?, eh
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:06:57 <elliott> Which it is
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:46 <elliott> monqy: opse
01:09:57 <elliott> CakeProphet: the C backend is deprecated
01:10:03 <CakeProphet> ah.
01:11:00 <CakeProphet> still you get a lot of free optimizations for using LLVM.
01:11:07 <CakeProphet> free stuff in general.
01:11:27 <CakeProphet> granted
01:11:32 <CakeProphet> C does the same thing for you.
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:43 <tswett> MEOW MEOW MEOW.
01:13:49 <elliott> tswett: In-channel?
01:13:53 <elliott> That's the worst way of delivering secerts.
01:13:54 <elliott> secrets.
01:14:02 <tswett> Oh, I... agree.
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:14:28 <elliott> -}
01:14:30 <elliott> groan
01:15:06 <monqy> :(
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:25 <monqy> good secrets
01:16:49 <tswett> Don't pretend you don't understand.
01:16:56 <monqy> oh?
01:17:10 <tswett> Heir of Breath. Seer of Light. Knight of Time. Witch of Space.
01:17:14 <tswett> Got it? Good.
01:17:21 <monqy> is that a homestuck thing
01:17:25 <tswett> No.
01:17:27 <elliott> no tswett has just gone mad
01:17:36 <elliott> i decree it
01:17:40 <monqy> good decree
01:18:03 <elliott> amen
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:14 <elliott> The best kind of America.
01:19:29 <monqy> tswett: I'm not into that sort of thing.
01:19:44 <tswett> monqy: I see.
01:19:48 <tswett> Well, PCHOOOOO.
01:19:55 <monqy> pchoo
01:20:10 <CakeProphet> ah yes he has homestuck psychosis.
01:20:13 <CakeProphet> perfectly normal.
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:51 <CakeProphet> it's... uh
01:20:52 <CakeProphet> no
01:20:54 <CakeProphet> I can't explain it.
01:20:55 -!- invariable has joined.
01:20:56 <elliott> tswett: take it to /msg this channel is pg
01:21:09 <CakeProphet> too many words. too much time.
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:22:00 <CakeProphet> oh... there aren't any.
01:22:31 <CakeProphet> a whole month with no updates.
01:22:46 <CakeProphet> is this the ending?
01:22:48 <CakeProphet> ..
01:22:49 <CakeProphet> no
01:23:29 <tswett> I thought there had been updates, like, a week ago.
01:23:43 <Sgeo|web> CakeProphet: read the news
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:22 <Sgeo|web> There's an EoA meter
01:25:24 <elliott> The news is lower down on the front page, you idiot.
01:25:37 <elliott> Now
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:06 <CakeProphet> elliott: I... know?
01:26:44 <elliott> CakeProphet: http://ompldr.org/vYXFseg
01:27:11 <CakeProphet> elliott: I... know?
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:05 <CakeProphet> now I understand
01:28:06 <CakeProphet> ???
01:28:10 <monqy> ???
01:28:15 <Sgeo|web> ????????
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:28:44 <monqy> bad brain
01:28:46 <CakeProphet> never trust a tswett.
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:31:59 <CakeProphet> monqy: yes
01:32:10 <CakeProphet> so that I can find other HS fans, but mainly because I like the designs.
01:32:58 <CakeProphet> also because I only have one good hoodie
01:33:46 <CakeProphet> and winter fast approaches and I have money to throw away on the overpricedness.
01:33:46 <CakeProphet> all good reasons.
01:34:04 -!- CakeProphet has quit (Quit: Reconnecting).
01:34:18 -!- CakeProphet has joined.
01:34:19 -!- CakeProphet has quit (Changing host).
01:34:19 -!- CakeProphet has joined.
01:41:52 -!- Patashu has quit (Quit: MSN: Patashu@hotmail.com , Gmail: Patashu0@gmail.com , AIM: Patashu0 , YIM: patashu2 .).
01:44:02 <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:00 <coppro> I repeat what I said
01:48:05 <elliott> monqy: OK, time to write Qhc.AST
01:48:10 <elliott> monqy: or should it be Qhc.Ast..........
01:48:18 <monqy> decisions
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:51:46 <monqy> ...........
01:52:15 <elliott> monqy: ................
01:56:06 <CakeProphet> you guys are weird.
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:06:20 <elliott> monqy: im bad at code
02:06:26 <monqy> oops
02:06:30 <monqy> me too
02:07:41 <elliott> what the hell is infixexp
02:08:09 <monqy> infixexp?
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:10:52 <elliott> ah, my enemy.
02:11:03 <monqy> qop
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:11:33 <elliott> rather than
02:11:34 <elliott> crurying
02:11:53 <monqy> do yoU?
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:14:53 <monqy> that
02:19:05 <CakeProphet> elliott: isn't it more efficient to apply arguments all at once instead of currying?
02:19:08 <CakeProphet> I assume that's why they do that.
02:19:25 <elliott> that can be done at a later level dude
02:19:32 <CakeProphet> oh, okay.
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:21:27 <elliott> you are silyl
02:22:07 <monqy> qcon}{
02:22:29 <monqy> ndnibf
02:23:16 <CakeProphet> elliott: dude you don't know about NegativeConstructorLabels?
02:23:50 <elliott> lol
02:26:24 <CakeProphet> Fin from Adventure Time just said hubris.
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:29:30 <CakeProphet> wat
02:34:20 -!- augur has joined.
02:36:07 <CakeProphet> and now they just used macabre
02:37:51 -!- Sgeo|web_ has quit (Ping timeout: 252 seconds).
02:37:53 <monqy> oh no
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:14 <CakeProphet> but maybe America is just dumb.
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:10 <monqy> how
02:43:11 <elliott> lol
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:28 <CakeProphet> s/American kids/Americans/
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:28 <pikhq> :P
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:48:13 <elliott> http://ompldr.org/vYXFuNQ
02:50:14 <monqy> this is a good page
02:51:46 <elliott> monqy: http://sprunge.us/iCaU
02:51:48 <elliott> it is a start...
02:52:30 <monqy> qual
02:52:36 <elliott> qualifier
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:53:56 <elliott> monqy: oh hmmmmmmm
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:08 <elliott> I will Think About It
02:54:15 <elliott> |( exp1 , … , expk ) (tuple, k ≥ 2)
02:54:18 <elliott> that is what the report says you see...
02:54:23 <monqy> aha...
02:54:29 <elliott> gcon→()
02:54:30 <elliott> |[]
02:54:30 <elliott> |(,{,})
02:54:30 <elliott> |qcon
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:54:56 <monqy> haaaaskellllllll
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:29 <elliott> inside
02:55:30 <elliott> to resolve them
02:55:35 <elliott> oh wait hmm no
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:51 <elliott> it has happened
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:01 <elliott> refuse to revert
03:00:19 <monqy> on. ntains, "Eat my dust!" I'll be a monkey's uncle!
03:02:41 <elliott> yes
03:03:03 -!- yorick has quit (Ping timeout: 244 seconds).
03:08:27 <elliott> alt→pat -> exp [where decls]
03:08:27 <elliott> |pat gdpat [where decls]
03:08:28 <elliott> | (empty alternative)
03:08:28 <elliott>
03:08:28 <elliott> gdpat→guards -> exp [ gdpat ]
03:08:28 <elliott> guards→| guard1, …, guardn (n ≥ 1)
03:08:30 <elliott> monqy: comomplicated
03:09:21 <elliott> data Clause = Clause Pat (Either Exp [(NonEmpty Guard, Exp)]) [Decl]
03:09:22 <elliott> monqy: grosse
03:09:26 <monqy> :(
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:12:25 <elliott> monqy: :(
03:12:59 <monqy> :(
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:24:12 <Stelpa> Hi :)
03:25:24 -!- copumpkin has joined.
03:25:35 <pikhq_> Sal'.
03:25:36 <monqy> hi
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:33 <Stelpa> lol, i see :)
03:27:49 <monqy> popular isn't a good thing, in brainfuck's case
03:27:58 <Stelpa> whynot? :s
03:28:38 <monqy> too many people making too many bad derivatives
03:28:41 <monqy> for one
03:28:52 <Stelpa> i see
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:30:58 <monqy> hm
03:31:01 <Stelpa> you probably get these a lot
03:31:12 <monqy> not much, actually
03:31:26 <Stelpa> really? :o
03:31:43 <monqy> at least not when I'm around
03:32:03 <elliott> prolly malbolge
03:32:11 <Stelpa> elliott: nice try >_>
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:32:31 <elliott> i was serious
03:32:45 <elliott> oh
03:32:48 <elliott> least
03:32:51 <elliott> underload
03:33:35 <Stelpa> i see, monqy
03:34:18 -!- Nisstyre has quit (Quit: Leaving).
03:34:57 -!- Nisstyre has joined.
03:40:24 -!- CakeProp1et has joined.
03:40:33 -!- CakeProphet has quit (Ping timeout: 248 seconds).
03:40:33 <CakeProp1et> perl is one of the least punishing esolangs.
03:43:22 <monqy> most punishing
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:06:59 <CakeProp1et> fizzie: have you ever used state?
04:07:07 <CakeProp1et> (state variable declaration in Perl)
04:07:39 <CakeProp1et> I always just use package-level lexical variables instead. But state might actually be clearer sometimes...
04:07:43 <CakeProp1et> I just never think to use it.
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:23 <monqy> ahh
04:11:28 <monqy> yes I do program but I don't like it
04:12:04 <monqy> wait
04:12:08 <monqy> i guess that depends on what you mean by
04:12:09 <monqy> work
04:12:09 <monqy> and
04:12:11 <monqy> projects
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:14:09 <CakeProp1et> go on.
04:15:35 <CakeProp1et> I'm not sure I follow.
04:16:00 -!- Stelpa has left ("Leaving").
04:17:55 <monqy> oh
04:17:56 <monqy> uh
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:21:59 <CakeProp1et> yeah I'm the same way really.
04:22:53 <CakeProp1et> the biggest projects I've done so far are work-related.
04:22:56 <CakeProp1et> so people paid me to finish them.
04:23:19 <monqy> im paid in threats of failure
04:23:26 <CakeProp1et> lolwat
04:23:29 <monqy> or uh
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:24:27 <CakeProp1et> ah because they were school projects.
04:25:00 <monqy> yeah
04:25:28 <CakeProp1et> I plan to finish more big things though.
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:25:56 <CakeProp1et> first step: finish this word generator
04:26:00 <CakeProp1et> then: write out rules to portal chess
04:28:14 <CakeProp1et> 'ti$' => {'\\' => 55}
04:28:16 <CakeProp1et> bah, what the hell.
04:28:27 <CakeProp1et> I have to filter out some of this shit.
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:35 <monqy> :(
04:28:39 <monqy> what does that even do
04:28:40 <CakeProp1et> monqy: what are they?
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:29:09 <CakeProp1et> such as that.
04:29:21 <CakeProp1et> though they're very unlikely I suppose.
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:20 <CakeProp1et> ah okay.
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:05 <CakeProp1et> yes that's a bit of hurdle.
04:31:17 <monqy> the problem with the roguelike is that ugh implementation
04:31:29 <CakeProp1et> what about it?
04:31:30 <monqy> the problem with nebulous secret mystery project is nebulous secret mystery project
04:31:36 <monqy> the ugh implementation?
04:31:39 <CakeProp1et> yes.
04:32:04 * CakeProp1et has a little bit of experiencing with programming MUDs, though that's quite a bit different than a roguelike.
04:32:10 <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:37 <CakeProp1et> monqy: maybe I could help?
04:33:50 <monqy> how would you help? it might be helpful to have help......
04:34:00 <CakeProp1et> yeah, pretty much.
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:34:34 <CakeProp1et> ...in theory.
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:35:55 <elliott> vty?
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:12 <elliott> monqy: or: don't console
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:49 <elliott> monqy: or: don't console
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:37:53 <CakeProphet> monqy: ncurses!!! :>
04:37:59 <monqy> elliott: i know
04:38:10 <elliott> monqy: see df
04:38:20 <monqy> i'd hate myself forever if i did it like df
04:38:38 <CakeProphet> df uses OpenGL right?
04:38:42 <elliott> monqy: why
04:38:43 <monqy> sdl i thought
04:39:09 <monqy> elliott: i dunno there's just something i like about console that isn't there in other things
04:39:20 <elliott> monqy: fuck that
04:39:22 <monqy> :(
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:46 <CakeProphet> monqy is weird.
04:40:49 <monqy> CakeProphet: the haskell "ncurses" library and "hscurses" both had problems when i looked at them
04:40:51 <CakeProphet> just use some console thing then.
04:40:55 <elliott> monqy: selectable font
04:40:59 <CakeProphet> like whatever elliott said to use.
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:41:50 <elliott> monqy: selectable font
04:41:59 <elliott> ie any
04:42:01 <monqy> oh i see what you said there
04:42:04 <monqy> hm
04:42:08 <monqy> (tempting)
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:36 <CakeProphet> monqy: weirdo
04:45:42 <elliott> eh?
04:45:50 <elliott> i never suggested those
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:46:32 <elliott> saving space
04:46:32 <monqy> hm
04:46:54 <monqy> I could do that
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:16 <CakeProphet> maybe?
04:48:29 -!- copumpkin has changed nick to imsaguy4.
04:48:41 <monqy> hm?
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:16 <CakeProphet> I'll try this one.
04:49:23 <monqy> oh
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:49:57 <CakeProphet> but I don't know how.
04:50:05 <monqy> ah
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:03 <CakeProphet> correct.
04:51:17 <CakeProphet> currently my regex is \P{Number}
04:51:29 <CakeProphet> but that leaves stuff that contains $ and _ and \
04:51:32 <CakeProphet> which are apparently like...
04:51:35 <CakeProphet> things in books, for some reason.
05:01:30 -!- Vorpal has joined.
05:18:41 <elliott> back
05:20:43 <elliott> monqy: RIP http://en.wikipedia.org/wiki/Simon_meets_alvin
05:20:52 <monqy> yeah i sawe :(
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:51 <elliott> Ed Nelson"
05:26:53 -!- CakeProphet has joined.
05:26:53 -!- CakeProphet has quit (Changing host).
05:26:53 -!- CakeProphet has joined.
05:26:53 <elliott> rip claim
05:31:51 <elliott> monqy: mourn
05:32:05 <monqy> rip
05:39:00 <elliott> http://www.haskell.org/onlinereport/haskell2010/haskellch4.html
05:39:01 <elliott> oh no
05:41:27 <CakeProphet> weeeeeeeee
05:42:23 <elliott> monqy: re language project: @
05:43:07 <monqy> mm
05:49:33 <pikhq_> It really irritates me when a textbook makes a claim that I know to be *very* wrong.
05:49:47 <elliott> what is the claim
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:00 <augur> ok
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:18 <monqy> with more commas
06:07:22 <elliott> monqy: yes that's nicer
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:34 <augur> monqy: yeah ;)
06:07:37 <elliott> this is a funny joke laugh
06:08:31 <pikhq_> Yeah, "will" makes it a bit strange.
06:08:48 <augur> hooray for me
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:30 <augur> lol
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:26 <Madoka-Kaname> (Too bad he is the only speaker)
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:29 <CakeProphet> zzo is the best thing about #esoteric.
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:10 <elliott> not much left............
06:16:10 <Ngevd> Morning!
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:45 <monqy> :(
06:16:45 * augur runs away crying
06:16:50 <Madoka-Kaname> lambdabot is the best thing about #esoteric
06:16:51 <elliott> augur: a clear misjudgement
06:17:01 <augur> ahahaha
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:29 <elliott> shachaf: Yep.
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:49 <augur> but
06:17:50 <augur> but
06:17:52 <pikhq_> Madoka-Kaname++
06:17:52 <CakeProphet> elliott: I understand zzo.
06:17:55 <Madoka-Kaname> monqy, you should implement Haskell
06:17:58 <elliott> CakeProphet: Lies and folly.
06:17:58 <CakeProphet> because I have magic powers.
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:14 <CakeProphet> lol "noone"
06:18:29 <pikhq_> Would you prefer noöne?
06:18:31 <monqy> he's zzo he can do anything
06:18:35 <CakeProphet> pikhq_: yes that's better
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:14 <elliott> who's kyle johnson
06:19:15 <CakeProphet> no one is preferred actually.
06:19:23 <elliott> CakeProphet: "nobody"
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 <CakeProphet> elliott: a nobody is fine too.
06:19:35 <pikhq_> I also delight in "thou".
06:19:39 <elliott> no-one is kind of gross though
06:19:44 <elliott> s/entertains/entities/
06:19:48 <CakeProphet> augur: yes those are words.
06:19:51 <Ngevd> Now I am even less sure what is going on
06:19:53 <augur> CakeProphet: so is noone
06:19:56 <CakeProphet> noone is like noon with an e at the end.
06:19:57 <pikhq_> And that's a bit more than mildly archaic, really.
06:20:01 <elliott> Ngevd: hi
06:20:04 <elliott> Ngevd: what is... up
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:21 <elliott> monqy: not yet...
06:21:25 <elliott> anti-rip...
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:06 <elliott> |{ impdecls }
06:22:07 <elliott> |{ topdecls }
06:22:09 <elliott> WHAT THE FUCK IS IMPDECL YOU PIECE OF SHIT
06:22:17 <elliott> oh imports
06:22:21 <CakeProphet> lol
06:22:22 <augur> lolololol
06:22:26 <CakeProphet> ..
06:27:27 <CakeProphet> so I watched two entire seasons of Adventure Time today.
06:27:35 <CakeProphet> that's a bit much.
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:33:23 <oerjan> "
06:34:00 <oerjan> so, the entire run of star trek, with one to five divorces.
06:34:16 <elliott> hi
06:34:24 <oerjan> the ho
06:34:29 <elliott> rip ho
06:34:50 <oerjan> yo ho ho
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:27 <CakeProphet> but now I've figured it out.
06:57:31 <CakeProphet> I think.
06:57:39 <CakeProphet> a new output will determine if I'm correct.
07:10:23 <CakeProphet> I really just....
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:16:56 <CakeProphet> oh
07:17:04 <CakeProphet> `run perl -e '%t=(); $x = \$t{a}; $$a = 2; print %t'
07:17:07 <HackEgo> a
07:17:14 <CakeProphet> `run perl -e '%t=(); $x = \$t{a}; $$a = 2; print values %t'
07:17:17 <HackEgo> No output.
07:17:23 <CakeProphet> oh. hmmm
07:17:32 <CakeProphet> `run perl -e '%t=(); $x = \$t{a}; $$x = 2; print values %t'
07:17:35 <HackEgo> 2
07:17:38 <CakeProphet> okay cool.
07:18:31 <CakeProphet> GetOptions (
07:18:32 <CakeProphet> d => \$debug_mode,
07:18:32 <CakeProphet> 'h|help' => \$help_mode,
07:18:32 <CakeProphet> N => \$dont_normalize,
07:18:33 <CakeProphet> 'o=s' => \$target_offset,
07:18:36 <CakeProphet> map {$_, \$datasets{$_}} keys %$Acro::Data::data
07:18:42 <CakeProphet> ); # best option handling, now better.
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:47:37 <CakeProphet> ....... >_<
08:48:08 <CakeProphet> maybe it's something wrong with Perl?
08:49:21 <fizzie> I don't know what line 20 is doing, or what's on line 219654 of your file.
08:49:52 <CakeProphet> line 20 is
08:49:55 -!- ais523 has joined.
08:49:56 <CakeProphet> while(<$f>)
08:50:12 <fizzie> Heh, well; it's just reading.
08:50:20 <CakeProphet> .....yes I'm aware. :P
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:47 <CakeProphet> 0000020 0a >.<
08:56:47 <CakeProphet> 0000021
08:56:51 <CakeProphet> I have no clue what that means.
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:16 <oerjan> fizzie: ah
08:57:35 <fizzie> That line looks just fine, I don't see any EEs there.
08:57:43 <oerjan> thanks
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:00:29 <CakeProphet> I'm doing a different line
09:00:31 <CakeProphet> 809
09:00:39 <CakeProphet> do I type 808 or 809 for head?
09:00:53 <CakeProphet> I am not concerned about milliseconds.
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:02:14 <CakeProphet> decipher plz
09:02:16 <CakeProphet> 0000020 0a >.<
09:02:19 <CakeProphet> 0000021
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:06:42 <CakeProphet> ..latin-1?
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:07 <lambdabot> "$0.13\t1961\t5\t5\t5"
09:11:13 <CakeProphet> I have no clue what it was reading...
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:12:11 <lambdabot> "06450\t1974\t2\t2\t2"
09:12:26 <oerjan> duh :P
09:12:47 <CakeProphet> man I'm so good at debugging.
09:12:48 <CakeProphet> the best.
09:12:56 <oerjan> *d'oh
09:18:21 <oerjan> > maxBound :: Char
09:18:22 <lambdabot> '\1114111'
09:18:44 <oerjan> > showHex 2097151 ""
09:18:45 <lambdabot> "1fffff"
09:18:46 <CakeProphet> > maxBound :: Bool
09:18:47 <lambdabot> True
09:18:50 <CakeProphet> woah.
09:19:10 <oerjan> > showHex 1114111 ""
09:19:11 <CakeProphet> > maxBound :: Word128
09:19:11 <lambdabot> "10ffff"
09:19:12 <lambdabot> Not in scope: type constructor or class `Word128'
09:19:16 <CakeProphet> :(
09:19:34 <oerjan> @hoogle Word128
09:19:34 <lambdabot> No results found
09:19:39 <oerjan> @hoogle Word64
09:19:39 <lambdabot> Data.Word data Word64
09:19:46 <oerjan> alas
09:22:03 <fizzie> > True > False
09:22:03 <lambdabot> True
09:22:23 <fizzie> You could deduce some sort of "truth is greater than falsehood" philosophy out of that.
09:23:25 <fizzie> > GT > LT
09:23:26 <lambdabot> True
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:26:49 <CakeProphet> ....I doubt it.
09:26:54 <CakeProphet> someone has thought of this I'm sure
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:27:56 <CakeProphet> well... maybe it is
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:39:44 <oerjan> indeed they do.
09:40:09 -!- oerjan has quit (Quit: Later).
09:42:24 -!- ais523 has quit (Ping timeout: 258 seconds).
09:45:34 -!- Phantom_Hoover has quit (Quit: Leaving).
09:55:33 -!- ais523 has joined.
10:39:06 -!- sllide has joined.
10:39:56 -!- Patashu has joined.
10:44:20 -!- sebbu has quit (Read error: Connection reset by peer).
10:45:18 -!- sebbu has joined.
10:51:32 -!- asiekierka has quit (Read error: Operation timed out).
11:21:28 -!- derdon has joined.
11:36:28 -!- Jafet has joined.
11:36:32 -!- Sgeo|web has joined.
11:36:58 <Sgeo|web> elliott (log-reading) CakeProphet Phantom_Hoover (does he logread?): Homestuck news update.
11:37:05 <Sgeo|web> EoA5 will go up on 10/25
11:37:24 <Patashu> 15 days away?
11:37:30 <Patashu> Better be really good
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:07:42 <Ngevd> Hello!
15:08:04 <Phantom_Hoover> Thank god, I was worried when you didn't say it.
15:08:18 <Ngevd> I got distracted
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:14:10 <ais523> *read
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:17:11 <Phantom_Hoover> Ngevd, BRAAAAABEEEN
15:17:31 <Phantom_Hoover> HUMAN JAWS SHOULD NOT BE THAT LARGE
15:17:42 <Phantom_Hoover> Also, Braben, a gaming industry leader?
15:17:46 <Phantom_Hoover> Frontier was in the 90s.
15:17:46 <Ngevd> brb
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:30 <Ngevd> Back
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:30:16 <Ngevd> It is messed up
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:15 <ais523> *simplified
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:21 <Ngevd> Yes
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:48:45 <Ngevd> ....!
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:39 <ais523> ouch
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:18 <Ngevd> Yes
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:58:09 <Ngevd> So yes
15:58:45 <ais523> then you're OK
15:59:03 <Ngevd> Hurrah.
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:02 <Ngevd> <Ngevd> Hurrah.
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:04:13 <ais523_> presumably
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:05:15 <Ngevd> !!!
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:40:44 <Ngevd> Minecraft server
16:40:54 <Vorpal> oh right
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:41:14 <Vorpal> that makes sense
16:41:21 <Vorpal> also for mcmap
16:41:26 <Vorpal> (duh)
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:45 <Ngevd> Hmm...
16:52:45 <Vorpal> really simple too
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:08 <Ngevd> So, bye
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:05:23 <Ngevd> Hello!
17:11:05 -!- CakeProphet has quit (Ping timeout: 255 seconds).
17:16:14 <Ngevd> B.
17:16:15 <Ngevd> R.
17:16:17 <Ngevd> Freakin'
17:16:18 <Ngevd> B.
17:16:21 -!- Ngevd has quit (Quit: Leaving).
17:18:02 -!- sllide has quit (Read error: Connection reset by peer).
17:20:09 -!- Ngevd has joined.
17:20:16 -!- Ngevd_ has joined.
17:20:23 <Ngevd> Aaah!
17:20:28 <Ngevd> Two mes!
17:20:35 -!- Ngevd_ has left.
17:20:43 <Ngevd> Better
17:34:12 <monqy> http://en.wikipedia.org/wiki/Chupacabra good picture
17:36:38 -!- elliott has joined.
17:44:57 <Ngevd> Hello elliott
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:43 <elliott> oh too late
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:56:42 <elliott> Yes.
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> ar scheduled passenger
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:31 <elliott> vel. The National Rail
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.
17:57:36 <elliott> A "'bus"?
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:09 <elliott> Yes but come on.
18:02:28 <elliott> Vorpal: fixed 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:03:23 <Vorpal> Gregor, eh?
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:07 <Vorpal> hah
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:04:59 <Ngevd> 17 minutes
18:05:05 <Vorpal> heh
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:17 <elliott> Viva la revolucion.
18:05:19 -!- sebbu has quit (Read error: Connection reset by peer).
18:05:24 <Vorpal> XD
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:05:48 <elliott> Good words.
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:05:15: <Ngevd> !!!
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:25 <Ngevd> Yes
18:07:30 <Ngevd> I want that OED
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:41 <elliott> Yes.
18:08:43 <Vorpal> which is kind of silly
18:08:46 <Vorpal> elliott, I found it.
18:09:11 <elliott> 17:34:12: <monqy> http://en.wikipedia.org/wiki/Chupacabra good picture
18:09:11 <elliott> how did you find me
18:11:51 -!- oerjan has joined.
18:12:09 <Vorpal> hi oerjan
18:12:15 <oerjan> hi Vorpal
18:14:39 <elliott> hi q
18:15:47 <oerjan> lo q
18:16:01 <Ngevd> Hi Taneb
18:16:04 -!- Ngevd has changed nick to Taneb.
18:16:08 <Taneb> Hi Ngevd
18:18:29 <elliott> hi 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:24:14 <oerjan> check.
18:25:23 <elliott> People think Adams made shit up?
18:26:05 <oerjan> shocking, i know
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:30:02 <elliott> god bless britannia
18:38:29 -!- ais523 has joined.
18:40:43 <elliott> hi ais523
18:41:26 <ais523> hi elliott
18:41:39 <ais523> today we learnt: it is indeed possible to go from Hexham to Morpeth via Newcastle
18:41:49 <elliott> why, did you try it out?
18:42:06 <ais523> no, too far away
18:42:10 <ais523> I consulted the routeing tables
18:42:11 <elliott> heh
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:42:59 <elliott> ais523: haha
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:24 <ais523> oerjan: indeed!
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:48 <oerjan> did someone speak?
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 <oerjan> ^ul ((Morpeth )S:^):^
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:33 <elliott> services
18:49:40 <ais523> no, not that
18:49:40 <oerjan> helsunk
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:54:32 <Phantom_Hoover> I don't really know what to say after that.
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:56:45 * ais523 is riveted
18:56:55 <Taneb> Relink me
18:56:55 <Phantom_Hoover> Edinburgh seems to come up a lot.
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:23 <elliott> challeng
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:30 <elliott> oh dear
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:11 <elliott> oerjan: told you (re IWC)
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:23 <elliott> oer "denial" jan
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:20:34 <Deewiant> -XFlexibleInstances
19:23:16 <elliott> oerjan: [Void], more like
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:51 <elliott> (length xs > (9 :: Nat))
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:34 <elliott> Deewiant: Why, it's gross
19:24:44 <elliott> Deewiant: You're just inlining compare .: length
19:24:47 <elliott> On lazy naturals
19:24:58 <elliott> It's not very composable
19:25:04 <Deewiant> No need to find the appropriate lazy naturals package on hackage
19:25:23 <Deewiant> Mostly
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:35 <elliott> (The length of its name)
19:26:39 <oerjan> > (compare `on` (() <$)) "abc" "abcd"
19:26:40 <lambdabot> LT
19:27:13 -!- pikhq_ has joined.
19:27:34 -!- pikhq has quit (Ping timeout: 258 seconds).
19:27:56 <Madoka-Kaname> @hoogle m a -> m b -> m (a, b)
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 <Deewiant> ?ty liftM2 (,)
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:31:54 <lambdabot> False
19:32:07 <oerjan> eek
19:32:11 <elliott> oerjan: "jumps"
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:34 <Ngevd> Hello
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:13 <elliott> So it's kind of pointless
19:37:23 <elliott> oh hmm
19:37:29 <elliott> oerjan: are module names their own namespace
19:37:31 <elliott> yes, they are
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 :: ClockTime
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:12 <Ngevd> It is a time
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:49 <Ngevd> And flexible
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:15 <ais523> that are hardcoded
19:46:30 <ais523> and the solution to the present time matching the regex is to bump it another 10 years
19:50:41 <elliott> heh
19:51:00 <elliott> isn't that spamassassin
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:00 <Deewiant> heh
19:53:40 <elliott> Deewiant: What
19:53:49 <Deewiant> Dynamic behaviour changing
19:53:50 <elliott> | EVar VarName
19:53:50 <elliott> | EField FieldName
19:53:50 <elliott> | ECon ConName
19:53:50 <elliott> Hmm, guess these get unified
19:53:52 <Deewiant> Hadn't thought of that
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:35 <Deewiant> Maybe, but maybe not
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:55:52 <ais523> indeed
19:56:01 <Deewiant> Hmm, apparently varargs in C are completely undefined?
19:56:34 <elliott> huh?
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:57:58 <elliott> Wow
19:58:01 <elliott> What standard is that?
19:58:06 <Deewiant> C1X
19:58:26 <elliott> Check with C99 :P
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:29 <Deewiant> Okay right yes
19:59:38 <Deewiant> So if it's defined as varargs but the prototype says it's not
19:59:43 <Deewiant> Never mind
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:20 <elliott> Deewiant: Can it
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:04:46 <Deewiant> Oh, right, constructors
20:04:59 <Deewiant> But yeah anyway
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:04 <elliott> and I think, why not
20:07:08 <elliott> newtype Context = Context [(TyName, TyVarName)] deriving (Show)
20:07:24 <Deewiant> Well sure, why not :-P
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:13:41 <elliott> C: so weird.
20:13:48 <Deewiant> Not really
20:14:10 <elliott> Deewiant: That piece of shit site wants me to log in to download that, sigh
20:14:11 <elliott> Got a PDF?
20:14:16 <Deewiant> elliott: Top comment
20:14:20 <Deewiant> Also bugmenot
20:14:22 <elliott> Oh, heh
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:15:09 <Deewiant> 445 slides
20:15:24 <Deewiant> 8 megs
20:16:03 <elliott> Oh, I just had to reload to get it to actually load
20:16:12 <elliott> Software, so reliable
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:51 <Deewiant> (Maybe 255?)
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:16 <Deewiant> Yeah I noticed
20:17:24 <Deewiant> But it was a really noticeable dip at that certain point
20:17:34 <elliott> "
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:34 <elliott> standard says so."
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:46 <Deewiant> No it's not
20:17:46 <elliott> Shit's not a declaration
20:17:52 <elliott> Yes it is
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:12 <elliott> RABBLE RABBLE
20:18:27 <Deewiant> "It shall be defined with a return type of `int` and with no parameters: `int main(void) { /* … */ }"
20:18:35 <Deewiant> s/.$/`"/
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:21:55 <Deewiant> Or the girl does
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:36 <elliott> stack memory to 0"
20:22:41 <elliott> Gross, debug mode should try and break your program
20:22:50 <Deewiant> I agree :-P
20:22:59 <Deewiant> But it's probably true
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:34 <elliott> It's slow enough
20:23:35 <Deewiant> I would be
20:23:43 <elliott> Well
20:23:51 <elliott> I'd be surprised but in a good way
20:24:52 <Deewiant> Also slide 190
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:00 * elliott opens it in Evince
20:26:01 <Deewiant> Beats me
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:26:28 <elliott> Deewiant: Yeah, it is
20:26:34 <elliott> Sequence points, etc.
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:28 <elliott> Well no it[s not static
20:27:30 <elliott> But it's file scope
20:27:32 <elliott> s/[/'/
20:27:45 <elliott> Registers
20:27:53 <elliott> Or hmm
20:27:55 <elliott> That's without optimisation
20:27:57 <elliott> Stack reuse, then
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:37 <Deewiant> Not much
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:11 <elliott> Nea
20:29:12 <elliott> t
20:29:39 <Deewiant> Slide 389 begins the ending bit
20:30:03 <olsner> slide 389 :S
20:30:05 <elliott> "I would never write code like that."
20:30:07 <elliott> Who cares, you're dumb
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:46 <elliott> and I do get 42"
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:34:59 <Gregor> lolwut
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:22 <elliott> Gregor: What
20:35:29 <Deewiant> wutwut
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:35:49 <Phantom_Hoover> This line was so funny out of context.
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:21 <Deewiant> Why not?
20:36:26 <elliott> I don't think it possibly can
20:36:32 <elliott> Let's say char is a bit
20:36:40 <elliott> And sizeof(int) = one
20:36:42 <elliott> Hmm
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:14 <elliott> Can int even be one bit
20:37:16 <Deewiant> If you have two's complement
20:37:18 <elliott> That doesn't sound so valid
20:37:27 <Deewiant> No, CHAR_BIT >= 8
20:37:33 <elliott> Right then
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:27 <Phantom_Hoover> Well naw.
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:38:47 <elliott> Deewiant: Hmm, right
20:38:51 <elliott> Pah
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:31 <Phantom_Hoover> ln x < x, so no.
20:39:31 <Deewiant> No, the type is size_t.
20:39:37 <elliott> s/in/of/
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:19 <elliott> Deewiant: Even for char?
20:40:24 <Deewiant> No, char is 1
20:40:24 <elliott> char can't be 0 chars, that's just...
20:40:28 <elliott> Heh
20:40:32 <Phantom_Hoover> Foiled by standard madness.
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:48 <olsner> *chars
20:40:59 <elliott> olsner: Does sizeof have to correspond to that
20:40:59 <elliott> Hmm
20:41:04 <elliott> I guess that's the only way you can exploit that
20:41:06 <elliott> But still
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:32 <Deewiant> So it has to be >= 1
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:05 <elliott> Ah
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:20 <Sgeo|web> Wait, is C TC now?
20:42:23 -!- elliott has left ("Leaving").
20:42:26 -!- elliott has joined.
20:42:27 <Deewiant> Sgeo|web: No, it's not.
20:42:33 <elliott> Deewiant: It might be
20:42:39 <elliott> Deewiant: Set sizeof(int) = one, make int bignum
20:42:47 <elliott> CHAR_BIT = 9
20:42:53 <elliott> Assuming sizeof really can be nonsense
20:42:58 <Phantom_Hoover> Why 9?
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:11 <elliott> size
20:43:18 <elliott> thus partially specifying what "size" means
20:43:19 <elliott> Phantom_Hoover: I can type 9
20:43:39 <Sgeo|web> ^nr
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:07 <Sgeo|web> Except for ( I guess
20:44:12 <Sgeo|web> and ) maybe
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:45:39 <elliott> Define "consist"
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:11 <elliott> Bugger
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:46:56 <elliott> Deewiant: Sure, fine
20:47:01 <elliott> Deewiant: I'm just interested in proving C TC
20:47:03 <elliott> I mean
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:14 <Deewiant> Standalone?
20:47:19 <elliott> Deewiant: Erm, freestanding
20:47:22 <elliott> You don't need CHAR_BIT
20:47:26 <elliott> Bignum chars, sizeof everything is one, job done
20:47:33 <elliott> Thus infinite pointers
20:47:59 <Deewiant> Okay, cool
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> "
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:52:57 <elliott> So it doesn't matter
20:53:04 <Deewiant> A byte is composed of a contiguous sequence of bits, the number of which is implementationdefined
20:53:09 <elliott> Deewiant: See above
20:53:10 <Deewiant> (Woo, soft hyphen)
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:00 <Sgeo|web> as-if rule?
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:33 <Deewiant> conformant program*?
20:55:37 <elliott> Er right
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:16 <Sgeo|web> elliott: ah, cool
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:56:43 <Deewiant> From zero?
20:57:06 <elliott> Deewiant: Hmmm
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:18 <elliott> Erm
20:58:20 <elliott> Deewiant: Unsigned
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:21 <elliott> Deewiant: Hmm
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:43 <Ngevd> Now I will sleep
21:01:46 -!- Ngevd has quit (Quit: what a big quitter he is, eh?).
21:01:48 <elliott> olsner: omg
21:01:51 <elliott> Deewiant: what the ols said
21:04:00 <Deewiant> I think that works
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:22 <elliott> yep
21:05:34 <olsner> I can't remember all the other funny rules we had troubles with :P
21:05:51 <Phantom_Hoover> Sgeo|web, why the |web?
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:23 <elliott> rot13Char :: Char -> Char
21:07:24 <elliott> rot13Char c
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:07:24 <elliott> | otherwise = c
21:07:26 <elliott> Why is this in jhc
21:07:28 <elliott> olsner: as-if rule
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:09:56 <elliott> No cheating
21:10:01 <elliott> Nobody else may participate
21:10:40 <Deewiant> Between "instance Foo a => ..." and "foo :: Foo a => ..."? Beats me.
21:11:26 <elliott> Deewiant:
21:11:31 <elliott> foo :: Foo (a b) => ...
21:11:32 <elliott> is OK;
21:11:36 <elliott> instance Foo (a b) => ...
21:11:37 <elliott> is not
21:11:47 <elliott> In an instance decl, the type param to the class must be a tyvar
21:11:50 <elliott> Erm
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:16 <Deewiant> That seems awfully arbitrary.
21:12:27 <elliott> Deewiant: Yyyyyyyyep
21:12:35 <Deewiant> 2010 or 98 or both?
21:12:44 <elliott> Deewiant: 2010, didn't look at 98
21:12:49 <Deewiant> Probably both then
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:15:57 <elliott> Deewiant: For which part
21:16:09 <Deewiant> Reusing the data type
21:16:28 <elliott> Deewiant: As opposed to duplicating all the code operating on them?
21:16:34 <Deewiant> Yep!
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:04 <elliott> data Exports a
21:17:04 <elliott> = ExportAll
21:17:04 <elliott> | ExportOnly [a]
21:17:04 <elliott> deriving (Show)
21:17:04 <elliott> data Export
21:17:05 <elliott> = ExportVar ValName
21:17:07 <elliott> | ExportType TyName (Exports ValName)
21:17:09 <elliott> | ExportClass TyName (Exports ValName)
21:17:11 <elliott> | ExportMod ModName
21:17:13 <elliott> deriving (Show)
21:17:15 <elliott> data ImpSpec
21:17:17 <elliott> = ImportAll
21:17:19 <elliott> | ImportOnly [Import]
21:17:21 <elliott> | ImportHiding [Import]
21:17:23 <elliott> deriving (Show)
21:17:25 <elliott> data SubImports
21:17:27 <elliott> = SubImportNone
21:17:29 <elliott> | SubImportAll
21:17:31 <elliott> | SubImportOnly [ValName]
21:17:33 <elliott> deriving (Show)
21:18:41 <Phantom_Hoover> http://qntm.org/hypertime
21:18:43 <Phantom_Hoover> BASTARD
21:18:46 -!- Phantom_Hoover has left ("Leaving").
21:18:50 <elliott> Ah.
21:18:51 -!- Phantom_Hoover has joined.
21:18:56 <elliott> I see.
21:19:01 <elliott> Phantom_Hoover: What.
21:19:01 <Phantom_Hoover> XChat why do you close tabs so much
21:19:15 <Phantom_Hoover> Anyway, IDEA-STEALING TELEPATHIC BASTARD
21:19:30 <Phantom_Hoover> TELEBASTARD
21:19:48 <olsner> Phantom_Hoover: or maybe you've just been projecting your idea into his mind accidentally
21:21:37 <Deewiant> Maybe both
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:26:32 <Deewiant> Only one?
21:27:10 <elliott> Deewiant: (->)
21:27:41 <Deewiant> foo :: Arrow (~>) => a ~> a
21:27:55 <elliott> Deewiant: I don't believe that's standard
21:28:00 <Deewiant> I don't know
21:28:33 <elliott> Phantom_Hoover: Hey, you didn't tell me Hughes was working on another novel.
21:29:41 <Phantom_Hoover> elliott, it didn't really captivate me.
21:29:45 <Phantom_Hoover> Not enough physics.
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:30:39 <elliott> I fucking hate Haskell.
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:31:42 <elliott> At least C90
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>
21:34:49 <elliott> btype→[btype] atype (type application)
21:34:49 <elliott>
21:34:49 <elliott> atype→gtycon
21:34:50 <elliott> |tyvar
21:34:52 <elliott> |( type1 , … , typek ) (tuple type, k ≥ 2)
21:34:54 <elliott> |[ type ] (list type)
21:34:56 <elliott> |( type ) (parenthesised constructor)
21:34:58 <elliott>
21:35:00 <elliott> gtycon→qtycon
21:35:02 <elliott> |() (unit type)
21:35:04 <elliott> |[] (list constructor)
21:35:06 <elliott> |(->) (function constructor)
21:35:08 <elliott> |(,{,}) (tupling constructors)
21:37:30 <elliott>
21:37:31 <elliott> decls→{ decl1 ; … ; decln } (n ≥ 0)
21:37:31 <elliott> decl→gendecl
21:37:31 <elliott> |(funlhs | pat) rhs
21:37:31 <elliott>
21:37:31 <elliott> cdecls→{ cdecl1 ; … ; cdecln } (n ≥ 0)
21:37:33 <elliott> cdecl→gendecl
21:37:35 <elliott> |(funlhs | var) rhs
21:37:38 <elliott> Deewiant: Spot the difference between decl and cdecl
21:37:58 <Deewiant> pat / var
21:38:03 <elliott> idecls→{ idecl1 ; … ; idecln } (n ≥ 0)
21:38:04 <elliott> idecl→(funlhs | var) rhs
21:38:04 <elliott> |
21:38:05 <elliott> Deewiant: And again
21:38:33 <Deewiant> gendecl / not
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:45:46 <Deewiant> Syntactic?
21:46:10 <elliott> Deewiant: Yep
21:46:23 <elliott> Deewiant: Except, wait
21:46:25 <elliott> No
21:46:28 <elliott> Semantic
21:46:31 <elliott> However...
21:46:37 <elliott> Deewiant: (Just f) x = undefined
21:46:39 <elliott> is syntactic.
21:46:41 <elliott> (error)
21:46:47 <elliott> Fuckin' Haskell, man
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:10 <elliott> Err, yes
21:47:11 <elliott> Just x = Just 99
21:47:15 <Deewiant> Oh, bah
21:47:20 <elliott> let Just x = f 9 in ...
21:47:26 <elliott> Deewiant: But (Just f) x isn't ok because basically
21:47:29 <elliott> Oh hmm it might be
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:47:35 <elliott> And eurgh
21:47:39 <coppro> haha
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:02 <elliott> mien
21:57:03 <elliott> mine
21:57:22 <Deewiant> I don't have an AST yet
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:34 <Deewiant> (#pragma, #line, #error)
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:10 <elliott> lol
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:00:25 <elliott> Uh, and errors, I think
22:01:08 <elliott> Gregor: Holy shit, you JS fucktards have finally discovered that you can get a compiler to do CPS
22:01:11 <elliott> Praise the fucking lord
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:25 <Deewiant> Like how
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:04 <elliott> Should be Rational
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:21 <elliott> Deewiant: ~~XY problem~~
22:06:26 <elliott> ~~~~
22:06:29 <Deewiant> ~~~~~~~~~~~
22:06:30 <Deewiant> Wut
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:06 <Deewiant> What's "XY problem"
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:08 <Deewiant> Yeah, pretty much
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:11:25 <Phantom_Hoover> http://en.wikipedia.org/wiki/File:Comeflywithme.jpg
22:11:34 <Phantom_Hoover> Help Frank Sinatra wants to eat my soul.
22:14:35 <elliott> You weren't aware?
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:17:39 <Deewiant> C has maximal munch too
22:18:08 <elliott> More like maximal TERRIBLE STANDARD.
22:18:40 * Phantom_Hoover → sleep
22:18:41 -!- Phantom_Hoover has quit (Quit: Leaving).
22:19:32 <elliott> Deewiant: http://sprunge.us/CEce Make my AST bearable, thanks
22:21:30 <Deewiant> Why is EList nonempty
22:22:06 <Deewiant> And ETuple
22:22:20 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
22:22:35 <Patashu> no binary base???
22:22:40 <Patashu> does anyone still use octasl
22:22:46 <Deewiant> chmod does
22:23:02 <elliott> Deewiant: Because [] and () are constructors, not list/tuple literals
22:23:08 <Patashu> anything besides chmod?
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:23:56 <Deewiant> heh
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:05 <Deewiant> :-D
22:24:15 <elliott> I think in a pattern [] is the constructor, not the list literal
22:24:16 <elliott> But I could be wrong
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:09 <Patashu> [(<{ just ain't enough
22:25:18 <elliott> Deewiant: A list literal
22:25:19 <Deewiant> ASCII needs to not change
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:30 <Patashu> with my time machine
22:25:31 <elliott> I'm not sure when []-constructor ever helps
22:25:33 <elliott> As in
22:25:35 <elliott> Helps = is used
22:25:41 <elliott> http://www.haskell.org/onlinereport/haskell2010/haskellch3.html
22:25:47 <elliott> Deewiant:
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> aexp→qvar (variable)
22:25:55 <elliott> |gcon (general constructor)
22:25:55 <elliott> |literal
22:25:55 <elliott> gcon→()
22:25:56 <elliott> |[]
22:25:58 <elliott> |(,{,})
22:26:00 <elliott> |qcon
22:26:07 <Deewiant> O kay
22:26:32 <elliott> Deewiant: O erjan?
22:26:39 <Deewiant> O no
22:26:47 <elliott> God, my Core language will be so much nicer than this
22:26:50 <elliott> De Bruijn, bitches
22:28:28 <elliott> Deewiant: I don't suppose you have any experience with Parsec's "language" stuff
22:28:39 <Deewiant> No
22:38:44 <olsner> sweet, my kernel can speak (I gave it printf)
22:38:58 <Patashu> what does it speak into?
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:03 <elliott> inst→gtycon
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> |[ tyvar ]
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 <Deewiant> I am sleep now -->
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> |jvm | dotnet
22:57:00 <elliott> | system-specific calling conventions
22:57:01 <elliott> impent→[string]
22:57:03 <elliott> expent→[string]
22:57:05 <elliott> safety→unsafe | safe
22:57:07 <elliott> Ffffffffffff
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:46 <elliott> Yes, tswett said that.
23:23:51 <elliott> That is a thing tswett said, definitely.
23:23:53 <Vorpal> no not exactly
23:24:01 <elliott> No, he said exactly that.
23:24:01 <Vorpal> besides Gregor's compositions aren't exactly long
23:24:06 <Vorpal> like 6 minutes iirc?
23:24:09 <elliott> He definitely said exactly that.
23:24:12 <Vorpal> which is quite short
23:24:15 <elliott> That is why your interpretation is reasonable.
23:24:16 <Vorpal> elliott, just shut up
23:24:35 <elliott> Oh. I understand now.
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 basic foreign type,
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:35 <elliott> newtype T a1 … an = N t
23:26:37 <elliott> and
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:26:43 <elliott> Ha ha ha ha ha ha ha.
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."
←2011-10-09 2011-10-10 2011-10-11→ ↑2011 ↑all