←2011-07-27 2011-07-28 2011-07-29→ ↑2011 ↑all
00:01:04 <elliott> oerjan: g or uppercase or C, which
00:01:08 <elliott> (notuppercase)
00:01:59 <oerjan> wat
00:02:22 -!- Sgeo_ has joined.
00:02:34 <elliott> oerjan: yes?
00:02:38 <oerjan> maybe.
00:03:18 -!- Patashu has joined.
00:05:14 -!- Sgeo has quit (Ping timeout: 255 seconds).
00:10:51 <elliott> "The natural progression is 1) fear the type system, it barfs at me and I don't get it; 2) respect the type system, it seems to catch a lot of stupid stuff; 3) use the type system, if I think about it a little I can harness it to catch pretty non-trivial bugs in my code; 4) abuse the type system, use fundeps and undecidable instances to create possibly very complex type-level hackery to check invariants at compile time."
00:10:55 <elliott> awesome, i am a level four haskell programmer
00:13:11 -!- copumpkin has changed nick to c0pumpk1n.
00:15:43 <pikhq> 5) Oleg.
00:19:38 <zzo38> Does Haskell allow you to have incomplete type declarations that you can add stuff on many times later on?
00:20:23 <elliott> depends what you mean
00:20:33 <elliott> typeclasses are a version of that
00:20:39 -!- iamcal has quit (Remote host closed the connection).
00:20:49 <elliott> so, yes
00:22:06 -!- itidus21 has joined.
00:22:11 <elliott> oerjan: i mean if I make it g
00:22:13 <elliott> how g do i make it
00:22:50 <zzo38> Can you make a union that adds later things it can be later on, or a record type that can add more fields later on?
00:23:07 <elliott> zzo38: Haskell doesn't really have those as separate concepts, but yes and no
00:23:18 <elliott> You cannot extend a "data" type (ADT) for various important reasons, but you can achieve the same effect
00:23:24 <elliott> (arguably it should be easier, but yes, it is possible)
00:23:25 -!- c0pumpk1n has changed nick to copumpkin.
00:24:43 -!- itidus20 has quit (Ping timeout: 252 seconds).
00:25:38 <elliott> zzo38: here's an example: http://sprunge.us/RYUY
00:26:05 <elliott> the standard Control.Exception module is a much more advanced and flexible version of this, http://haskell.org/ghc/docs/latest/html/libraries/base/Control-Exception.html
00:26:57 <oerjan> elliott: not too much. "a constant 16 g for a minute, however, may be deadly."
00:27:21 <elliott> oerjan: so would i make loop index g?
00:28:04 <oerjan> elliott: looping is not recommended, i think.
00:28:33 <oerjan> 'A typical person can handle about 5 g (49 m/s²) before losing consciousness ("G-LOC"), but through the combination of special g-suits and efforts to strain muscles—both of which act to force blood back into the brain—modern pilots can typically handle a sustained 9 g (88 m/s²) (see High-G training.'
00:28:38 <oerjan> *)'
00:28:47 <elliott> ah.
00:28:51 <elliott> thx towards thou
00:31:54 <oerjan> also, http://en.wikipedia.org/wiki/Euthanasia_Coaster
00:32:36 <elliott> that thing scares me, i mean, it's cool i guess
00:32:38 <elliott> it just terrifies me
00:32:58 <elliott> like if i was at the top of the first slope somehow accidentally and i couldn't get off
00:34:05 <monqy> help im on euthanasia coaster and i cant get off
00:34:16 <elliott> monqy: jump
00:35:51 <Taneb> I always get mixed up with euthanasia and ecstasy
00:36:11 <monqy> ecstacy in which sense of the word
00:36:13 <oerjan> i'm sure some will tell you it's practically the same thing.
00:36:37 <Taneb> monqy: every sense
00:36:41 <Taneb> Eve
00:36:41 <Taneb> r
00:36:50 <monqy> "Subsequent inversions would serve as insurance against unintentional survival of passengers." good sentence
00:37:01 <oerjan> the best.
00:37:07 <Taneb> Also, it's getting early
00:37:12 <Taneb> Goodnight
00:38:26 <oerjan> taneb the backwards living one.
00:41:32 -!- Taneb has quit (Ping timeout: 252 seconds).
00:42:54 <FireFly> I have to agree with Taneb on that one
00:42:58 -!- FireFly has quit (Quit: swatted to death).
00:44:06 <zzo38> I suppose that stuff about extending the incomplete types and stuff could also be partly done using some kind of preprocessor
00:44:14 -!- iamcal has joined.
00:44:20 <oerjan> why do i only notice FireFly when he's leaving, it's not fair.
00:44:34 <oerjan> my swatter needs exercise, dammit!
00:45:46 * oerjan swats tswett -----###
00:45:46 <zzo38> Then swat the wall and see if it breaks
00:46:06 <oerjan> zzo38: i went for the alliterative solution.
00:49:31 <elliott> tswatt
00:52:49 <zzo38> Maybe a vim and/or Emacs scripts can be made for use with TeXnicard, in order to do syntax highlighting and possibly for adding cards and GUID based on what you specify, and so on. In case, it would help some people who like it this way.
01:08:55 <elliott> ?hoogle fromRight
01:08:55 <lambdabot> No results found
01:08:58 <elliott> ?hoogle either
01:08:58 <lambdabot> Prelude either :: (a -> c) -> (b -> c) -> Either a b -> c
01:08:58 <lambdabot> Data.Either either :: (a -> c) -> (b -> c) -> Either a b -> c
01:08:58 <lambdabot> module Data.Either
01:09:55 <oerjan> there's also some MonadError instance, i think
01:10:14 <oerjan> hm i guess that doesn't really help with that
01:10:45 <oerjan> :t maybe
01:10:46 <lambdabot> forall b a. b -> (a -> b) -> Maybe a -> b
01:10:50 <oerjan> :t fromMaybe
01:10:51 <lambdabot> forall a. a -> Maybe a -> a
01:10:55 <Sgeo_> Hmm, crud
01:11:01 <oerjan> oh right
01:11:07 <Sgeo_> There is now a web page listing my RL name right next to "Sgeo"
01:11:12 <Sgeo_> http://www.barbu.co.uk/rankings/player_naming.htm
01:11:16 <oerjan> there's no fromEither equivalent, i guess
01:12:18 <oerjan> you are doomed now. they will kidnap you and force you to take a genuine education.
01:13:23 <elliott> just wanna say that Sgeo_'s use of "crud" is hilarious
01:14:48 <Sgeo_> Hmm
01:22:30 <elliott> "da"
01:22:38 <elliott> oerjan: qoantism,
01:22:42 <elliott> <oerjan> oh dam
01:23:03 <elliott> he said, "qwertyuio and" then... the suspense begin
01:23:25 <oerjan> i have no idea what qoantism is. although it reminds me that in pre-classical latin, q was sometimes used in front of o as well.
01:23:40 <oerjan> iirc.
01:24:23 <zzo38> What is q used in front of o as well in pre-classical latin, meant?
01:24:27 <oerjan> also, "da" is the imperative form meaning "give", iirc
01:24:32 <zzo38> \def\afspace#1#2{\if\isempty{#2}#1{}\else\expandafter#1\expandafter{\identity#2}\fi}
01:25:36 <oerjan> zzo38: well in classical and later lating q was only used in front of u, as is still mostly the case in english...
01:25:39 <oerjan> *latin
01:26:23 <oerjan> presumably it was pronounced approximately the same as c, so spelling varied.
01:26:44 <elliott> oerjan felt the starin of carbon dioxide death
01:27:04 <oerjan> wat again
01:27:36 <oerjan> sometimes i get close to wondering if elliott is doing drugs.
01:27:38 <zzo38> Just recently I showed someone one of my TeX files for some purpose, and they told me "Why don't you use a real file type? Such as .txt or .7z"
01:27:57 <oerjan> zzo38: good grief :P
01:28:14 <elliott> oerjan: im better than durgs
01:29:04 <oerjan> or wait - are THEY making you take drugs? say it isn't so!!!!!!!!!1111ælve
01:29:42 <zzo38> They tell me that my .tex file is "not a real file". What??
01:29:58 <oerjan> zzo38: they are either trolling or genuinely clueless
01:31:10 <oerjan> which one, can be hard to tell without much more information.
01:31:16 <elliott> /usr/bin/ld: /home/elliott/.cabal/lib/york-lava-0.2/ghc-7.0.4/libHSyork-lava-0.2.a(Lava.o): relocation R_X86_64_32S against `.data' can not be used when making a shared object; recompile with -fPIC
01:31:16 <elliott> /home/elliott/.cabal/lib/york-lava-0.2/ghc-7.0.4/libHSyork-lava-0.2.a: could not read symbols: Bad value
01:31:17 <elliott> argh
01:31:35 <elliott> zzo38: probably because it won't open when they double click it
01:32:21 <oerjan> zzo38: hm if it's what elliott says, then maybe you can add a mime type, if it's on the web.
01:32:56 <oerjan> not that that necessarily helps if they're that clueless
01:33:26 <elliott> ARGH THIS SUCKS
01:34:03 <oerjan> or in the other direction, sometimes i get annoyed by my browser insisting on saving code which i just want to view as text, because of filetype and/or extension
01:34:14 <elliott> just make it text/plain
01:38:17 -!- CakeProphet has quit (Ping timeout: 250 seconds).
01:39:08 -!- CakeProphet has joined.
01:45:08 -!- cheater_ has quit (Ping timeout: 255 seconds).
01:45:44 <oerjan> spot the difference http://i.imgur.com/vHLx5.jpg
01:46:33 <elliott> im zombie
01:47:08 <oerjan> this one feels too close to home for me http://i.imgur.com/zBD2S.jpg
01:47:40 <oerjan> and what is worse is that i anticipated the punchline
01:48:04 <zzo38> Obviously the guy on the left has ripped clothing and is larger (in the first picture)
01:48:08 <Slereah> oerjan
01:48:17 <Slereah> France used to have the best weather guy
01:48:36 <Slereah> Also
01:48:41 <Slereah> Dude almost died on air D:
01:48:46 <Slereah> http://www.youtube.com/watch?v=GWRkWp7n_ew
01:49:26 <Slereah> It was pretty weird
01:49:39 <Slereah> Well, not dying
01:49:44 <Slereah> But cancer acting up and all
01:51:12 <elliott> oerjan: your guy is cooler
01:51:27 <elliott> he's like "what do you want from me. i am a weatherman. i report the fucking weather."
01:51:43 <Slereah> I think he ate the weather girl
01:51:46 <elliott> also how fucking old is that gmtv shot
01:51:50 <oerjan> elliott: his voice gives that impression even stronger :P
01:51:56 <elliott> oerjan: link? :D
01:52:10 <oerjan> um let me see if i can find one
01:52:19 <elliott> <Slereah> http://www.youtube.com/watch?v=GWRkWp7n_ew
01:52:23 <elliott> this video is ensaddening me
01:52:40 <elliott> oh my god evryone is talking in french in the comments STO,P
01:52:44 <elliott> icant undertsand you
01:52:46 <Slereah> He was always making jokes and all
01:52:55 <elliott> is he dead
01:52:55 <Slereah> So many people assumed that this was a little skit
01:52:58 <Slereah> Yeah
01:53:06 * elliott cries profusely, rip french weatehrman
01:53:09 <oerjan> http://www.youtube.com/watch?v=t6kRFRXkltE
01:53:24 <elliott> oerjan: oh my god
01:53:26 <Slereah> And his ashes were thrown into a hurricane or something, from what I remember
01:53:26 <oerjan> (note it's middle of the night so i'm not checking the sound myself)
01:53:27 <elliott> oerjan: canimove to norway
01:53:39 <elliott> i want this guy to read em my weather every day
01:53:43 <Slereah> Man
01:53:48 <Slereah> Napoleon Dynamite did not age well
01:53:52 <elliott> he has a fucking stick his stick is amazing
01:53:55 <elliott> Slereah: :D
01:54:06 <elliott> longyearbyen how do you evne come up with a name like that
01:54:24 -!- CakeProphet has quit (Ping timeout: 264 seconds).
01:55:04 <oerjan> but now let me see if i can find one of our _truly_ legendary weatherman.
01:56:26 <oerjan> oh dear i cannot find one which isn't either parody or that famous sampling...
01:56:47 <elliott> The assumption is that users of this library will want to diff over interesting things or peform interesting tasks with the results (given that, otherwise, they would simply use the standard Unix diff utility). Thus no attempt is made to present a fancier API to aid in doing standard and uninteresting things with the results.
01:57:14 -!- itidus21 has changed nick to itidus20.
01:57:21 <Sgeo_> What is "interesting"?
01:58:03 <elliott> The gdiff package
01:58:03 <elliott> Get an efficient, optimal, type-safe diff and patch function for your datatypes of choice by defining a simple GADT and some class instances.
01:58:08 <elliott> oh cool
01:59:17 <elliott> oh heh sg might be able to use that
01:59:36 <oerjan> ah here is one http://www.youtube.com/watch?v=-p0sjcCsrRY
02:00:11 <elliott> will look in minute
02:02:33 <elliott> any diff library that depends on a type equality GADT is a good diff library
02:02:53 <elliott> oerjan: ok wtaching
02:03:03 <elliott> wow is that an actual board with stick on numbers oerjan
02:03:06 <elliott> on an actual cube
02:03:12 <oerjan> if you seen any suggested related videos those with KLM will be the parodies, while "Heavy Metal" is the sampling.
02:03:15 <oerjan> yes.
02:03:17 <elliott> oerjan: does he always stay off-screen
02:03:19 <oerjan> it's from 1981
02:03:26 <oerjan> elliott: except at the very end
02:03:33 <elliott> is he like rip my face i dont like me im ugly
02:03:34 <elliott> :(
02:03:43 <elliott> also why is this guy famous :D
02:03:59 <oerjan> his voice, and general geekiness
02:04:19 <elliott> :D
02:04:32 <elliott> i wish we had weatherpeople as cool as that here
02:05:22 <oerjan> <elliott> longyearbyen how do you evne come up with a name like that <-- it's just "long year" + "byen" (the town)
02:05:38 <oerjan> i'm not sure if longyear is the name of some guy or not
02:07:03 <oerjan> but it's definitely from english
02:09:21 <oerjan> this danish guy is linked from the top reddit comment http://i.imgur.com/qszvo.jpg
02:11:11 <elliott> heh
02:11:32 <elliott> isn't that a really old image anyway
02:12:26 <oerjan> i guess you may know the guy from the _second_ comment http://i.imgur.com/vdqa0.jpg
02:13:11 <elliott> his... face rings a bell i guess
02:13:13 <elliott> link to thread plz
02:13:25 <oerjan> http://www.reddit.com/r/funny/comments/j1f2s/meteorologists/?limit=500
02:14:16 <oerjan> theisen showed up in the responses to that
02:16:42 <oerjan> omg http://i.imgur.com/4qCak.jpg
02:16:54 <elliott> <oerjan> i guess you may know the guy from the _second_ comment http://i.imgur.com/vdqa0.jpg
02:16:58 <elliott> for me that guy is the first comment
02:17:01 <elliott> are you not using best ordering?
02:17:04 <oerjan> yes
02:17:07 <elliott> <oerjan> omg http://i.imgur.com/4qCak.jpg
02:17:08 <elliott> wow
02:17:11 <elliott> literal best
02:17:21 <elliott> just what
02:17:58 <oerjan> the comment with "ESTONIA"
02:18:22 -!- TeruFSX has quit (Ping timeout: 252 seconds).
02:18:27 <elliott> on danish guy
02:18:28 <elliott> "His glowing head is so amazing. Please tell me that is natural."
02:19:39 <elliott> "If all hot women on TV were smart, I don't think that any other girls could be smart without wrecking the idea that men and women are equally intelligent."
02:19:41 <elliott> wat
02:19:50 -!- TeruFSX has joined.
02:20:13 <elliott> oerjan: "NO! DON'T ! This guy is a guy that makes fun of people. He's like out Jon Stewart."
02:20:13 <elliott> oerjan: :(
02:20:32 <elliott> "He's kinda like him. Talks about news and stuff with another guy and they make fun of stuff. He's the best we've got. They even made a song for Eurovision and we chose it. Why? CAUSE WHY THE FUCK NOT!" http://www.youtube.com/watch?v=LRh9PzNYD-8
02:21:39 <elliott> this is the best song
02:28:53 <zzo38> I thought of various things about prettyprinting how it could work with Haskell programs, including, you can have a TeX code \Wsym for making symbols they can be defined using \csname or whatever, and then words in different styles for different purposes, such as if `mod` you can type in roman style but otherwise can be italic, or bold for keywords, or for names you can also do things, like, ' makes prime mark, # at end of a name makes superscr
02:29:12 -!- cheater_ has joined.
02:30:46 <zzo38> You might do it has numbers at the end of a name makes subscripts, or superscripts and subscripts separated by underscore, etc
02:32:16 <zzo38> Things that are syntax errors in Haskell can be used for other purposes
02:34:34 <oerjan> zzo38: the main way to do "other purposes" in haskell is to put it in comments. e.g. pragmas have the format {-# ... #-} (where the #'s signify that it's a pragma)
02:34:58 <zzo38> Yes that can work too.
02:35:05 <oerjan> while haddock iirc uses the other style of comments -- ^ etc...
02:35:21 <zzo38> It also depends what the other purposes are, I guess.
02:35:37 <oerjan> yeah
02:35:51 <zzo38> In some cases it is OK to ignore you can use comments then, but in case it is a preprocessor you might instead want to use things that would make a syntax error in normal Haskell
02:36:09 <oerjan> right
02:36:36 <zzo38> This is possible to be applied in other programming languages too
02:38:40 <zzo38> Actually WEB uses @ to select modes and special commands since @ is not a command in Pascal, and uses double quote for pool strings (including single character constants, are replaced by their ASCII code number).
02:40:21 <oerjan> zzo38: with haskell most non-alphanumerical characters are syntax errors at the beginning of a line, unless you're in layout-less mode (which is afaik rarely used)
02:41:31 <oerjan> ( can also appear there i think, in operator definitions
02:41:58 <oerjan> oh and that also gives ' and "
02:42:10 <oerjan> but @ and # are syntax errors, i think
02:42:19 <oerjan> > let @ whatever =
02:42:20 <lambdabot> <no location info>: parse error on input `@'
02:42:28 <zzo38> It says Haskell permits the omission of the braces and semicolons used in several grammar productions, by using layout to convey the same information. This allows both layout-sensitive and layout-insensitive styles of coding, which can be freely mixed within one program. Because layout is not required, Haskell programs can be straightforwardly produced by other programs.
02:42:30 <oerjan> > let # whatever =
02:42:30 <lambdabot> <no location info>: parse error on input `#'
02:42:51 <oerjan> yes
02:43:12 <zzo38> But from what I am reading, it seem `` is probably a syntax error putting two ` next to each other directly
02:43:52 <oerjan> yeah i cannot think of a place where that would be legal outside a comment/string
02:43:53 <zzo38> So, you can use layout mode and non-layout mode together in one program, I think? Is that what it does?
02:44:35 <oerjan> yes. it depends on whether you include a literal { when starting a block or not
02:45:21 <oerjan> > let x = y where { y = 2+z; z = 5 } in x
02:45:22 <lambdabot> 7
02:45:53 <oerjan> there the block with the let has layout (in theory, although it ends on the same line) while the where block doesn't.
02:50:35 <pikhq> zzo38: Probably the easiest way to do a TeX-style prettyprinting for Haskell would be to use TeX-style Literate Haskell.
02:51:21 <pikhq> (if the file has a suffix of .lhs, then the file is considered to be in Literate Haskell. One can denote that something is actual code, rather than normal text, either by prepending the line with >, or wrapping the code in \begin{code} \end{code}.
02:51:25 <pikhq> )
02:53:56 -!- copumpkin has quit (Ping timeout: 252 seconds).
02:54:21 -!- copumpkin has joined.
02:54:59 <zzo38> Yes it would work, and then can be compiled using standard Haskell compilers too, I think (since .lhs means to only compile lines with > I think)
02:55:18 <pikhq> Or things in \begin{code} \end{code} blocks.
02:55:26 <pikhq> It's part of the standard.
02:56:37 <zzo38> I don't know why that should be a part of the standard, but whatever, OK
02:57:10 <zzo38> Still, using .lhs does not allows you to do various other things such as preprocessing you might want, and so on; although you could still use it for prettyprinting in TeX or other programs
02:57:37 <pikhq> Yeah, it is somewhat limited, and a more full-fledged preprocessor might be preferable.
02:57:58 <pikhq> Still, it is nice being able to make your Haskell source be a TeX document with ease.
02:57:58 <zzo38> It seem \ is a valid operator in Haskell but I don't know if "\end{code}" can be any valid Haskell syntax.
02:58:36 <pikhq> \end{code} can't be valid Haskell syntax.
03:00:36 <zzo38> Of course I do suppose that both codes with > style or \begin{code} \end{code} style could be made to work in TeX with the correct macros without too much difficulty, although doing prettyprinting entirely with TeX would be far mroe difficult.
03:01:22 <oerjan> pikhq: well not if the \ starts a token.
03:01:25 <zzo38> (Making \end{code} would be slightly more difficult since the characters \ { } would still need to be supported inside of the code)
03:01:40 <pikhq> oerjan: IIRC it has to be at the very start of a line.
03:01:44 <oerjan> ah.
03:02:02 <oerjan> oh hm
03:02:10 <pikhq> You may know better than I, though.
03:02:10 <oerjan> it _could_ still be inside a string.
03:03:09 <oerjan> but maybe the \end{...} takes precedence. hm...
03:04:17 <zzo38> Well, in either case, to do it directly in TeX then you would make the end of line character to be category code 13 (active character)
03:04:52 <zzo38> And it would work especially if \end{code} needs to be on a line by itself or just at the start of a line
03:05:17 <zzo38> While with > you could have a command that sets the category codes so that a blank line without > ends it
03:05:38 <pikhq> \begin{code} could also start a pretty-printing environment.
03:05:45 <oerjan> "•Program code ends just before a subsequent line that begins \end{code} (ignoring string literals, of course).
03:05:49 <oerjan> "
03:05:57 <pikhq> And then you could let the TeX parser handle the \end{code} bit.
03:06:03 <zzo38> Well, I suppose you could do some prettyprinting stuff directly in TeX
03:06:23 <zzo38> So even TeX if you make it parse Haskell codes, could understand if \end{code} is inside of a string or not
03:08:24 <zzo38> If you are not using \begin for anything else, you could make \begin in TeX to ignore its first parameter, and then allow two kinds of prettyprinting, one for code that is part of the program, and one for code that is not part of the program.
03:11:12 <zzo38> Maybe even the contents of this report is enough I could try to make some kind of Haskell prettyprinter directly in TeX that supports .lhs format http://www.haskell.org/onlinereport/haskell2010/haskellch2.html#x7-140002
03:11:47 <zzo38> I have already written programs in TeX to make index, so it could be used too
03:15:19 <elliott> flowers
03:15:21 <elliott> forevers
03:15:30 <elliott> zzo38: are you learning haskell or something?
03:16:20 <zzo38> elliott: Well, sort of. Not quite. Not really.
03:16:44 <elliott> <pikhq> \end{code} can't be valid Haskell syntax.
03:16:48 <zzo38> So that, if you put \input the correct macros at the top, you can just type tex program.lhs; dvilj4 - < program.dvi | lp or whatever command would be used on your computer.
03:16:48 <elliott> is this true in the presence of TH?h
03:16:53 <elliott> hmm right it'd have to be asection
03:17:03 <elliott> (\end{code}) would be valid on a line of its own, with TH
03:17:30 <zzo38> What does TH means?
03:17:41 <elliott> hmm or wait, it'd have to be (\end{code=something})
03:17:43 <elliott> zzo38: template haskell
03:17:55 <zzo38> And what things would it mean \ and then end and then {
03:18:18 <zzo38> I try to look at the document see how it works
03:18:24 <elliott> it would be a section
03:18:26 <elliott> equivalent to
03:18:33 <elliott> flip (\) end{code=blah}
03:18:33 <zzo38> The { is "special"
03:18:39 <elliott> where the last thing is a record mutation
03:18:43 <elliott> unfortunately \end{code} cannot be valid
03:18:49 <elliott> but (\end{code=x}) could be
03:18:51 <zzo38> Without equal sign it is not valid?
03:18:56 <elliott> indeed
03:19:00 <oerjan> elliott: \ is not a legal operator though
03:19:03 <elliott> oerjan: oh
03:19:33 <zzo38> Then, it is OK, it is not a problem to use \end{code} to end the code in Literate Haskell, I guess. Since, it is not in a string, it says ignoring string literals so it is OK
03:20:34 <oerjan> there _is_ that quasiquote thing, though?
03:20:48 <zzo38> Yes it does say \ is reserved
03:21:04 <oerjan> \ is used for haskell's lambdas
03:22:40 <elliott> oh right
03:22:40 <elliott> hmm
03:22:46 <elliott> \end{code}->expr
03:22:51 <elliott> would be a valid line
03:22:53 <elliott> (again with TH)
03:23:14 <oerjan> can you do that without capitalizing the end?
03:23:29 <oerjan> oh it's a TH thing you say
03:23:45 <elliott> oerjan: um well hmm
03:23:46 <elliott> it might be
03:23:52 <elliott> yeah you are right
03:23:57 <elliott> the TH thing is just an expression as a valid top-level line
03:24:04 <elliott> > \end{code} -> code
03:24:04 <lambdabot> <no location info>: Parse error in pattern
03:24:10 <elliott> bah
03:24:30 <oerjan> :t \end{test=hi}->hi
03:24:31 <lambdabot> Parse error in pattern
03:24:40 <oerjan> :t \End{test=hi}->hi
03:24:41 <lambdabot> Not in scope: data constructor `End'
03:24:41 <lambdabot> `test' is not a (visible) field of constructor `End'
03:25:06 <oerjan> seems not legal unless a constructor
03:25:08 <zzo38> It is a valid line with TH? "Program code ends just before a subsequent line that begins \end{code} (ignoring string literals, of course)." Oops too bad! Well I suppose you can put a space before \end or using > style instead
03:26:11 <elliott> zzo38: I mean not in a literate haskell file :P
03:26:12 <oerjan> well i suppose one would have to test to find out how ghc's TH actually interacts with \end{code}
03:26:15 <elliott> but no, it isn't
03:26:34 <zzo38> And it require blank line before and after the codes with > so you could redefine \par to check for Haskell codes with >
03:28:38 -!- cheater_ has quit (Ping timeout: 255 seconds).
03:28:46 <zzo38> O, so, I can see what you were making, does it require the word capitalized to use that kind of stuff with Template Haskell?
03:29:35 <elliott> seems so
03:29:53 -!- cheater_ has joined.
03:32:02 -!- cheater_ has quit (Excess Flood).
03:32:48 -!- cheater_ has joined.
03:34:59 <zzo38> Since > require blank line before and after, it should be not difficult to make it work in a simple (non prettyprinting) way in TeX just by redifining \par to check for that
03:54:17 -!- TeruFSX has quit (Ping timeout: 255 seconds).
03:55:49 -!- jcp has joined.
03:55:54 <elliott> "All of those things have a certain function in a normal language. More interestingly, C++ has almost no pad words - each token is required to find out what a certain bit of code means. What in haskell takes the place of their function in a normal language?"
03:55:55 <elliott> wat
03:56:07 <elliott> Anon0AnALY5e said...
03:56:07 <elliott> simple syntax for accessing and updating arrays in place... gone.
03:56:11 <elliott> lol this comment section is terrible
03:56:29 -!- TeruFSX has joined.
03:57:48 <zzo38> The really stupid \outer command in TeX bothers me a lot.
03:58:35 <elliott> you've mentioned
03:58:35 <elliott> several times
03:59:38 <zzo38> I don't know why Knuth thought it would be a good idea.
03:59:39 <Sgeo_> Maybe simple syntax to return a new list with a different element in the place would be nice?
04:00:11 <elliott> Sgeo_: you shouldn't be indexing lists
04:00:35 <elliott> but um that's easy with arrays
04:00:39 <elliott> arr // [(9,x)]
04:00:53 <elliott> mutable arrays:
04:00:56 <elliott> writeArray arr 9 x
04:01:35 <elliott> with repa...
04:02:16 <elliott> hmm
04:02:19 <elliott> oh, it has // too
04:06:49 <elliott> oerjan: what's like a stork
04:06:53 <zzo38> I made a simple program for non-prettyprinting Bird style in TeX now http://sprunge.us/SKPf
04:06:57 -!- TeruFSX has quit (Quit: No Ping reply in 180 seconds.).
04:07:12 -!- TeruFSX has joined.
04:08:16 <zzo38> Of course it can be improved, to do more things, including add extra space between the paragraphs and the codes, or change interline penalties in the codes and the vertical penalties before and after a code section
04:08:49 <elliott> oerjan doesn't know what is like a stork.
04:09:30 <zzo38> Does this program work to you?
04:09:37 <elliott> i didn't try
04:11:44 <zzo38> I tried and it works.
04:15:31 -!- CakeProphet has joined.
04:15:48 -!- variable has quit (Remote host closed the connection).
04:16:54 <oerjan> elliott: you might want to reduce your meds.
04:17:32 -!- variable has joined.
04:17:38 <elliott> oerjan: tell me what is like a stork.
04:19:05 <monqy> how long has elliott without a slep now
04:19:12 <monqy> does anyone keep track
04:19:18 <elliott> forever without a slep
04:20:09 <oerjan> monqy: well he wasn't around 6 hours or so ago. he may secretly have had a slep then.
04:20:47 <oerjan> like that indian guy that was supposed to not need eating.
04:21:22 <elliott> nobody needs eating. people should remain uneaten for their natural lifespan
04:21:25 <elliott> CONTRAVERSIAL
04:21:57 -!- CakeProphet has quit (Ping timeout: 252 seconds).
04:21:58 <oerjan> grammar hard, it is
04:24:00 <monqy> what hapense to caniablse then,,,,
04:24:08 <elliott> monqy: dies
04:26:01 <elliott> ow pain
04:26:04 <elliott> infinite
04:27:02 <oerjan> monqy: they move to ireland to live a modest life there
04:27:10 -!- zzo38 has left.
04:27:46 <monqy> garden salads and people who are not people
04:27:48 <monqy> subpeople
04:37:38 <elliott> ?hoogle bytestring empty
04:37:38 <lambdabot> No results found
04:37:39 -!- MDude has changed nick to MSleep.
04:37:39 <elliott> ?hoogle empty
04:37:39 <lambdabot> Control.Applicative empty :: Alternative f => f a
04:37:39 <lambdabot> Data.ByteString empty :: ByteString
04:37:39 <lambdabot> Data.IntMap empty :: IntMap a
04:40:00 <oerjan> does hoogle even take two parameters
04:42:25 <elliott> ?src hGetLine
04:42:25 <lambdabot> Source not found.
04:42:26 <elliott> oerjan: dunno :D
04:42:56 <oerjan> @hoogle IO String
04:42:56 <lambdabot> Did you mean: :: IO String /count=20
04:42:56 <lambdabot> System.IO.Error ioeGetErrorString :: IOError -> String
04:42:56 <lambdabot> System.IO.Error ioeSetErrorString :: IOError -> String -> IOError
04:43:10 <oerjan> @more
04:43:14 <oerjan> bah
04:43:38 <oerjan> @hoogle getLine
04:43:38 <lambdabot> Prelude getLine :: IO String
04:43:38 <lambdabot> Data.ByteString getLine :: IO ByteString
04:43:38 <lambdabot> System.IO getLine :: IO String
04:43:58 <oerjan> so wtf doesn't that get listed first
04:44:09 <oerjan> @hoogle Handle -> IO String
04:44:10 <lambdabot> System.IO hGetContents :: Handle -> IO String
04:44:10 <lambdabot> System.IO hGetLine :: Handle -> IO String
04:44:10 <lambdabot> System.IO hShow :: Handle -> IO String
04:44:21 <oerjan> @hoogle Handle -> IO ByteString
04:44:21 <lambdabot> Data.ByteString hGetContents :: Handle -> IO ByteString
04:44:22 <lambdabot> Data.ByteString hGetLine :: Handle -> IO ByteString
04:44:22 <lambdabot> Data.ByteString.Char8 hGetContents :: Handle -> IO ByteString
04:44:53 -!- zzo38 has joined.
04:46:06 <oerjan> oh, you need :: if it isn't obvious that it's a type (contains no ->)
04:46:17 <oerjan> @hoogle :: IO String
04:46:17 <lambdabot> Prelude getContents :: IO String
04:46:17 <lambdabot> Prelude getLine :: IO String
04:46:17 <lambdabot> System.IO getContents :: IO String
04:47:12 <oerjan> aha...
04:47:24 <oerjan> @hoogle +bytestring empty
04:47:24 <lambdabot> Data.ByteString empty :: ByteString
04:47:24 <lambdabot> Data.ByteString.Char8 empty :: ByteString
04:47:24 <lambdabot> Data.ByteString.Lazy empty :: ByteString
04:47:39 * oerjan is reading http://www.haskell.org/haskellwiki/Hoogle
04:47:46 <elliott> oerjan: number sign plz
04:47:51 <oerjan> #
04:47:54 <elliott> thx
04:48:38 -!- postmodern has joined.
04:50:35 <elliott> > mzero :: IO ()
04:50:35 <lambdabot> Overlapping instances for Control.Monad.MonadPlus GHC.Types.IO
04:50:35 <lambdabot> arising f...
04:50:36 <elliott> postmodern: hi
04:50:42 <elliott> ?pl return ()
04:50:42 <lambdabot> return ()
04:50:44 <elliott> bah
04:50:45 <elliott> ?hoogle m ()
04:50:46 <lambdabot> Network.BSD endHostEntry :: IO ()
04:50:46 <lambdabot> Network.BSD endNetworkEntry :: IO ()
04:50:46 <lambdabot> Network.BSD endProtocolEntry :: IO ()
04:51:25 <zzo38> Can you use C preprocessor or m4 for Lazy K?
04:55:33 <elliott> oerjan: what's the nicest way to augment a forM_ such that we can tell if we are on the last element of the list?
04:56:25 -!- postmodern has left ("Leaving").
05:00:03 <oerjan> pass it a [(Bool, a)] or [Either a a], maybe?
05:00:25 <oerjan> or wait
05:03:11 <oerjan> forMe_ f fe l = foldr ((>>).f) (fe (last l)) (init l)
05:03:44 <oerjan> :t \f fe l -> foldr ((>>).f) (fe (last l)) (init l)
05:03:45 <lambdabot> forall (m :: * -> *) a b a1. (Monad m) => (a1 -> m a) -> (a1 -> m b) -> [a1] -> m b
05:04:06 <oerjan> even gives you the result of the last one
05:04:26 <elliott> hmm, thanks
05:04:52 <oerjan> hm actually that could leak some memory in the last l bit
05:04:56 -!- pikhq_ has joined.
05:05:13 <oerjan> (until it actually gets to the end)
05:05:20 <oerjan> in case that's a problem
05:06:13 <oerjan> forMe_ _ f [x] = f x; forMe_ f fe (x:xs) = f x >> forMe_ f fe xs
05:06:27 <oerjan> should not have that problem
05:07:47 -!- pikhq has quit (Ping timeout: 252 seconds).
05:07:50 <elliott> thanks
05:09:46 <elliott> hmm...
05:09:58 <elliott> :t (\_->Nothing) <|> (\x->Just x)
05:09:59 <lambdabot> forall a. (Alternative ((->) a)) => a -> Maybe a
05:10:02 <elliott> > ((\_->Nothing) <|> (\x->Just x)) 9
05:10:03 <lambdabot> No instance for (Control.Applicative.Alternative ((->) a))
05:10:03 <lambdabot> arising from ...
05:10:09 <elliott> bah
05:10:53 <elliott> ?hoogle Maybe a -> Maybe a -> Maybe a
05:10:54 <lambdabot> Data.Generics.Aliases orElse :: Maybe a -> Maybe a -> Maybe a
05:10:54 <lambdabot> Control.Applicative (<|>) :: Alternative f => f a -> f a -> f a
05:10:54 <lambdabot> Control.Monad mplus :: MonadPlus m => m a -> m a -> m a
05:10:58 <elliott> oh duh
05:11:10 <elliott> ?pl \f g x -> f x <|> g x
05:11:10 <lambdabot> liftM2 (<|>)
05:11:16 <elliott> ?pl \f g -> B(\x -> f x <|> g x)
05:11:16 <lambdabot> (B .) . liftM2 (<|>)
05:11:24 <elliott> ?pl B (\x -> f x <|> g x)
05:11:24 <lambdabot> B (liftM2 (<|>) f g)
05:11:39 <elliott> :t fmap
05:11:40 <lambdabot> forall a b (f :: * -> *). (Functor f) => (a -> b) -> f a -> f b
05:11:55 <elliott> fmap :: (a -> b) -> (Message -> Maybe a) -> (Message -> Maybe b)
05:11:57 <elliott> oh, that's easy
05:12:53 <elliott> :t (<*>)
05:12:54 <lambdabot> forall (f :: * -> *) a b. (Applicative f) => f (a -> b) -> f a -> f b
05:13:09 <elliott> (Message -> Maybe (a -> b)) -> (Message -> a) -> (Message -> b)
05:13:20 <elliott> oerjan: methinks these functions not so useful, but necessary to get Alternative :D
05:14:17 <elliott> :t when
05:14:18 <lambdabot> forall (m :: * -> *). (Monad m) => Bool -> m () -> m ()
05:14:25 <elliott> bah, why monad only :(
05:14:33 <elliott> hmm wait
05:14:34 <elliott> :t guard
05:14:35 <lambdabot> forall (m :: * -> *). (MonadPlus m) => Bool -> m ()
05:14:39 <elliott> ?pl guard b >> x
05:14:39 <lambdabot> guard b >> x
05:23:21 <oerjan> <elliott> bah, why monad only :( <-- when is intrinsically monadic, not applicative.
05:23:31 <elliott> i know i know i know :P
05:30:44 <elliott> ?hoogle choice
05:30:44 <lambdabot> Text.Parsec.Combinator choice :: Stream s m t => [ParsecT s u m a] -> ParsecT s u m a
05:30:44 <lambdabot> Text.ParserCombinators.ReadP choice :: [ReadP a] -> ReadP a
05:30:44 <lambdabot> Text.ParserCombinators.ReadPrec choice :: [ReadPrec a] -> ReadPrec a
05:30:47 <elliott> ?hoogle choose
05:30:47 <lambdabot> Test.QuickCheck choose :: Random a => (a, a) -> Gen a
05:30:49 <elliott> oh come on
05:33:23 <oerjan> :t msum
05:33:24 <lambdabot> forall (m :: * -> *) a. (MonadPlus m) => [m a] -> m a
05:33:28 <oerjan> this one?
05:33:47 <elliott> oerjan: nope, I'm using Alternative
05:33:49 <elliott> like a good person
05:33:53 <elliott> maybe i should just use MonadPlus
05:34:02 <elliott> ?hoogle Maybe (m a) -> m (Maybe a)
05:34:02 <lambdabot> Data.Traversable sequenceA :: (Traversable t, Applicative f) => t (f a) -> f (t a)
05:34:02 <lambdabot> Data.Traversable sequence :: (Traversable t, Monad m) => t (m a) -> m (t a)
05:34:02 <lambdabot> Control.Applicative optional :: Alternative f => f a -> f (Maybe a)
05:34:08 <elliott> pffffffffffffft
05:34:13 <elliott> oh maybe sequence
05:34:14 <oerjan> :t asum
05:34:14 <lambdabot> Not in scope: `asum'
05:34:18 <oerjan> wat
05:34:21 <elliott> oh right asum
05:34:22 <elliott> ?hoogle asum
05:34:22 <lambdabot> Data.Foldable asum :: (Foldable t, Alternative f) => t (f a) -> f a
05:35:07 <oerjan> lambdabot: Y U NO IMPORT FOLDABLE?
05:36:34 <elliott> *IRC.Control> dispatchA test (Message NoPrefix (Command "PRIVMSG") ["bot","hello world"])
05:36:34 <elliott> ("PRIVMSG",NoPrefix,"bot","hello world")
05:36:34 <elliott> Just ()
05:36:35 <elliott> yay
05:36:40 <elliott> test :: Handler (IO ())
05:36:40 <elliott> test =
05:36:40 <elliott> asum [ "PRIVMSG" >- \p [loc,msg] -> print ("PRIVMSG",p,loc,msg)
05:36:40 <elliott> , "JOIN" >- \p [loc] -> print ("JOIN",p,loc) ]
05:38:41 -!- cheater_ has quit (Ping timeout: 255 seconds).
05:39:37 -!- cheater_ has joined.
05:39:53 <elliott> infixr 0 >-
05:39:53 <elliott> (>-) :: ByteString -> Handler a -> Handler a
05:39:53 <elliott> cmd >- h = (\(Message _ (Command cmd') _) -> cmd' == cmd) ?? h
05:39:55 <elliott> oerjan: behold my elegance
05:41:47 <pikhq_> My eye feels like as if someone poured acid into it. Holy fuck that hurts hurts hurts hurts.
05:41:53 <pikhq_> Alo, ow.
05:41:56 <pikhq_> Also, even.
05:42:44 <oerjan> pikhq_: wat
05:44:07 * oerjan beholds, and appreciates that it associates the right way
05:44:22 <elliott> oerjan:
05:44:23 <elliott> test :: Handler (IO ())
05:44:23 <elliott> test =
05:44:23 <elliott> asum [ commandIs "PRIVMSG" ?? fields $ \p [loc,msg] -> print ("PRIVMSG",p,loc,msg)
05:44:23 <elliott> , commandIs "JOIN" ?? fields $ \p [loc] -> print ("JOIN",p,loc) ]
05:44:25 <elliott> more elegant, more ugly :D
05:44:36 * elliott is not sure this solution scales
05:45:15 <elliott> what I'm working on is a simple little bot to do two things:
05:45:30 <elliott> - ?tell that's more secure than lambdabot's (if you send something in private, the bot always tells the recipient it in private)
05:45:43 <elliott> - some kind of fun fun infobot thing
05:46:06 <oerjan> fun fun info about private tells, check
05:46:07 <elliott> so, like everything, I'm making sure it's the PERFECT HASKELL PROGRAM for the job because this is the only way I can write anything
05:46:13 <elliott> oerjan: psht
05:49:07 <elliott> oerjan: mostly i was thinking i could fill it with the perfect opinions on any topic
05:49:27 <elliott> for instance
05:49:37 <elliott> hey yo bot what is up withbrainfuck derivatives<<bot murders user>>
05:50:02 <oerjan> O KAY
05:50:15 <elliott> hey yo bot
05:50:16 <elliott> what is up
05:50:19 <elliott> with oerjan
05:50:40 <elliott> REV/.GENGE
05:52:40 <oerjan> so, a short-term channel participant, got it.
05:52:55 <elliott> r u saying
05:52:58 <elliott> that bots with opinions
05:53:03 <elliott> rbannable oerjan?
05:53:15 <elliott> would u like to apologise???? for this badness
05:53:33 <oerjan> no...
05:53:43 <elliott> rugoing todie
05:54:01 <elliott> because im going to punch u with bot death
05:54:06 <elliott> <oerjan> crying :(
05:54:26 -!- cheater_ has quit (Ping timeout: 255 seconds).
05:54:39 -!- GuestIceKovu has joined.
05:55:19 <elliott> i wonder if oerjan really thinks i am on drugs
05:55:21 <elliott> that would be hlarious
05:56:01 -!- Slereah has quit (Ping timeout: 240 seconds).
05:56:57 <oerjan> hlearly
05:57:59 <elliott> im a robot
05:58:01 <elliott> beeeeeeeeeeeeeeep
05:58:45 <Sgeo_> elliott, in the distant future?
05:58:50 <elliott> now
05:58:59 <elliott> <oerjan> this explainseveryhething
05:59:24 <elliott> oerjan isa magician
06:01:12 <elliott> god Sgeo_ make oerjan a cooler irc
06:01:35 <Sgeo_> What?
06:01:52 <Sgeo_> All I want to know is when you hopped aboard the OO wagon
06:02:01 <elliott> what
06:02:05 <Sgeo_> <elliott> oerjan isa magician
06:02:06 <elliott> since when am i on the oo wagon
06:02:10 <oerjan> http://www.irregularwebcomic.net/2924.html
06:02:13 <elliott> oh come on im ignoring you now
06:02:33 <elliott> oerjan: wow
06:02:34 <elliott> im good
06:02:35 <elliott> as good as dmm
06:02:46 <elliott> sowhen is irregular webcomic ending again oerjan ;d :DDD
06:03:00 * oerjan sobs uncontrollably
06:03:09 <oerjan> sometime september
06:03:18 <elliott> oerjan: wait is that confirmed?
06:03:21 <oerjan> no
06:03:26 <elliott> oerjan: how likely :P
06:04:06 <oerjan> well with dmm saying absolutely _nothing_...
06:04:17 <elliott> oerjan: has anyone actually _asked_ :D
06:04:44 <oerjan> not that i know of
06:05:54 <elliott> huh the oolite maintainer ison theiwc foums
06:06:33 <elliott> asterisk is on the iwc
06:07:06 <oerjan> hm i think i saw someone mention that
06:07:17 <elliott> well taneb plays oolite iirc
06:07:31 -!- cheater_ has joined.
06:07:35 <elliott> wait, does taneb have any notable facets that don't belong to either me or PH...
06:07:39 <elliott> oh dear
06:07:55 <oerjan> you are all the same person? ok then.
06:08:17 <elliott> in the future me and ph will somehow merge and go back in time tob ecome tanbe
06:09:26 -!- cheater_ has quit (Excess Flood).
06:09:38 <elliott> oh, acid-state is really good
06:10:01 -!- cheater_ has joined.
06:10:59 -!- TeruFSX has quit (Ping timeout: 276 seconds).
06:13:01 -!- cheater_ has quit (Excess Flood).
06:13:37 -!- cheater_ has joined.
06:16:02 -!- cheater_ has quit (Excess Flood).
06:16:39 -!- cheater_ has joined.
06:18:55 <Sgeo_> I need to wipe my brain right now. I just saw a spoiler for a book I wanted to read
06:19:33 <monqy> :'(
06:20:14 <elliott> what book
06:20:53 <Sgeo_> The Last Hero
06:21:02 <elliott> read the first hero instead
06:23:09 -!- cheater_ has quit (Excess Flood).
06:23:24 <elliott> I should continue archive-binging Discworld
06:23:43 <elliott> Maybe I can finish before Pratchett offs himself and forces everyone who reads them to be vaguely sad about it forevermore
06:23:48 -!- cheater_ has joined.
06:30:10 -!- zzo38 has quit (Remote host closed the connection).
06:42:33 <oklopol> you know what they call a guy with an umbrella who has a red suit
06:43:06 <elliott> oklopol?
06:44:09 <monqy> whos they help
06:44:37 <oklopol> i had this dream
06:44:50 <oklopol> that bsmntbombdood started a dating service
06:44:55 <oklopol> it was called vigianis
06:45:00 <oklopol> because that's his real name
06:45:11 <oklopol> i thought it was a mix of vagina and penis
06:45:14 <oklopol> but i guess not then.
06:45:25 <oklopol> i also went to a cold sauna
06:45:31 <oklopol> hrrrrr
06:48:02 <elliott> vigianis isa good name
06:48:22 <oklopol> actually vigianis turned out to be the name of a car, so bsmntbombdood had to close his dating service down.
06:48:24 <monqy> cold is a good sauna
06:48:29 <monqy> this is a good dream
06:50:18 <elliott> bsmnt camein here tody
06:50:20 <elliott> or yesterday
06:50:21 <elliott> what are days
06:50:40 <monqy> its to tell hard when you dont get ever a slepe
06:51:17 <elliott> how many slepes did you get today monkey
06:51:26 <oklopol> i get way too much slaep
06:51:28 <elliott> sry monquay
06:51:37 <oklopol> ->
06:51:58 <monqy> today i have gotten a sleep previously in the morning and i will get another sleep soon turn tomorrow
06:52:36 <monqy> timeszomes are bad because they complciate todays
06:54:42 <elliott> monqy: im agree
06:57:16 <elliott> monqy
06:57:17 <elliott> TONSILS
06:57:21 <monqy> tonsiles
06:57:33 <monqy> abotu them: what
06:58:56 <oerjan> intercal has them
07:01:27 -!- monqy has quit (Quit: hello).
07:09:08 <coppro> well the intercal spec does
07:10:24 -!- jcp|other has joined.
07:14:58 <elliott> oerjan: why doesn't haskell have higher-order typeclasses
07:16:11 <Sgeo_> elliott, hmm. Does Ur? Sounds like the sort of thing that Ur might have
07:17:24 <elliott> Sgeo_: no
07:17:26 <elliott> not afaik
07:25:51 <pikhq_> Say. Is there any particular reason for the ALL_FREAKING_CAPS convention for preprocessor defines?
07:25:59 <elliott> {-# LANGUAGE KindSignatures, MultiParamTypeClasses, FunctionalDependencies, ExistentialQuantification, TypeFamilies, FlexibleContexts #-}
07:25:59 <elliott> good irc bot
07:26:01 <elliott> pikhq_: because cpp ismagical
07:26:15 <pikhq_> elliott: Ah, so "no, that's completely stupid"?
07:26:17 <pikhq_> Good.
07:26:25 <elliott> pikhq_: no its not
07:26:35 <elliott> pikhq_: for instance, just about any cpp macro could reevaluate its arguments
07:26:42 <elliott> or basically behave utterly unlike a regular function call in any way
07:27:00 <pikhq_> What about constants?
07:27:08 <elliott> why are you using cpp for constants
07:27:13 <pikhq_> People do it.
07:27:28 <elliott> that's their problem
07:27:45 <pikhq_> They'd be better served by a const definition, but that's beside the point.
07:28:08 <pikhq_> I suppose it does make sense to have ALL_FREAKING_CAPS for preprocessor macros that do potentially confusing things.
07:28:54 <elliott> which is all of them, if you know what inline functions are
07:29:55 <pikhq_> Okay, so I guess the *real* question is "why do people do every fucking thing in the preprocessor."
07:30:22 <pikhq_> s/\."/?"./
07:30:52 <elliott> oerjan my codeis broken :( is it because i used unsafecoerce
07:31:48 <oerjan> PROBABLY
07:33:23 <elliott> oerjan: looking up a key in a map that you just got from its keys list is also meant to work right.............
07:33:36 <elliott> aha wait hm
07:33:37 <oerjan> "Saizan: agda is webscale in the sense that you need half of The Cloud to run the typechecker
07:33:40 <oerjan> "
07:34:06 <elliott> wtf now it works
07:34:09 <elliott> oerjan: :D
07:34:27 <elliott> lookup :: (Key k ex) => k -> DepMap ex f -> Maybe (f k)
07:34:27 <elliott> lookup k (DepMap m) =
07:34:27 <elliott> case Map.lookup (box k) m of
07:34:27 <elliott> Nothing -> Nothing
07:34:27 <elliott> Just v -> unsafeCoerce v
07:34:28 <elliott> spot the bug oerjan
07:35:48 <oerjan> erm did you mayhaps want Just (unsafeCoerce v) ?
07:36:05 <elliott> oerjan: yep :D
07:36:15 <elliott> but unsafeCoerce happily coerced both values to Nothing because <pointer tags etc.>
07:36:47 <elliott> also I'm beginning to realise that this _may_ be a glorified (Map String ASimpleRecordType).
07:36:59 <elliott> hm well, there is that state type family.
07:37:11 <oerjan> well then clearly you want unsafeCoerce <$>
07:37:21 <elliott> wat
07:37:46 <oerjan> lookup k (DepMap m) = unsafeCoerce <$> Map.lookup (box k) m
07:38:01 <elliott> it doesn't feel right to use unsafeCoerce in... you know, such idiomatic terms
07:38:07 <elliott> <oerjan> O KAY
07:38:14 <oerjan> er
07:38:18 <oerjan> um
07:38:19 <oerjan> O
07:38:22 <oerjan> K
07:38:23 <oerjan> A
07:38:24 <oerjan> Y
07:38:27 <elliott> :D
07:38:31 <elliott> you forgot the blank line
07:38:37 <pikhq_> elliott: Would you like it to be more point-free?
07:38:55 <elliott> lookup :: (Key k ex) => k -> DepMap ex f -> Maybe (f k)
07:38:55 <elliott> lookup k (DepMap m) = unsafeCoerce <$> Map.lookup (box k) m
07:38:55 <elliott> insert :: (Key k ex) => k -> f k -> DepMap ex f -> DepMap ex f
07:38:55 <elliott> insert k v (DepMap m) = DepMap $ Map.insert (box k) (unsafeCoerce v) m
07:38:58 <elliott> i love how casual this coercion is
07:39:09 <elliott> oh man, oh man, i can totally make this use type families
07:39:10 <elliott> pikhq_: :D
07:39:30 <pikhq_> Jesus the unsafeCoerce.
07:39:41 <elliott> it's just because haskell's type system is weak :(
07:40:26 <pikhq_> Yeah, it's a little mindbending, but it does *seem* to be typesafe.
07:40:34 <elliott> it is
07:40:36 <pikhq_> Not that that makes me happy about it. :P
07:40:55 <elliott> i could do it with data.dynamic, with all the cast failure branches being (error "impossible"), if you'd like
07:41:01 <elliott> that'd be both slower and carry around pointless type tags
07:41:12 <elliott> class (Ord (Ex k)) => Key k where
07:41:12 <elliott> type Ex k
07:41:12 <elliott> box :: k -> Ex k
07:41:12 <elliott> officially the best typeclass i've ever written
07:41:21 <pikhq_> Yeah, that'd be equivalent but pointless.
07:42:04 <elliott> Data/DepMap.hs:35:1:
07:42:04 <elliott> Alas, GHC 7.0 still cannot handle equality superclasses: Ex a ~ Ce
07:42:04 <elliott> In the context: (Ex a ~ Ce, Show a, Show (State a), Key a)
07:42:04 <elliott> While checking the super-classes of class `C'
07:42:04 <elliott> In the class declaration for `C'
07:42:05 <elliott> oerjan
07:42:10 <elliott> ghc stopped me using type families
07:42:11 <elliott> :(
07:42:34 <Patashu> what's an equality superclass
07:42:35 <oerjan> elliott: wasn't that the thing that was just added to head?
07:42:37 <Patashu> dare I ask
07:42:41 <elliott> oerjan: yep
07:42:49 <elliott> Patashu: how much haskell do you know :P
07:43:00 <Patashu> forget I asked
07:46:16 <oerjan> "cmccann: C++ is dual to Haskell in a sense: it's much too hard for the average programmer to use safely, but they do anyway with disastrous results; whereas Haskell isn't actually that difficult to use but people don't even try
07:46:20 <oerjan> "
07:46:58 <oerjan> and we'll just ignore copumpkin's cannibalistic tendencies.
07:47:30 <elliott> oerjan: where's all this from
07:47:59 <oerjan> http://contemplatecode.blogspot.com/2011/07/haskell-weekly-news-issue-192.html
07:48:04 <elliott> :t extract
07:48:05 <lambdabot> forall source. (Extract source) => (Int, Int) -> source -> source
07:48:52 <oerjan> sounds useful.
07:50:26 <elliott> it is something else, not the comonad method...
07:51:10 <oerjan> for a moment there i thought zzo38 was posting to stackoverflow http://stackoverflow.com/questions/6736482/literate-haskell-references-and-indexing
07:55:39 <elliott> type K a b = b
07:55:39 <elliott> newtype DepMap ex f = DepMap (K (f ex) (Map ex Any))
07:55:46 <elliott> oerjan: quiz: what language extension have i avoided proly here
07:55:51 <elliott> god proly is a good word
07:55:53 <elliott> (pro-ly)
07:56:20 <oerjan> to proly go
07:56:22 <Sgeo_> Well, this is creepy
07:56:38 <Sgeo_> A stalker who knows my RL name and approximate location can find out where I (used) to live, exactly
07:56:48 <elliott> oerjan: that's not a quiz answer
07:56:49 <elliott> Sgeo_: OH NOES
07:57:10 <elliott> im so creeped out that i cant sleep
07:57:11 <elliott> creped out
07:57:19 <elliott> creped is a word?? wow spellchecker, THANK YOU I LOVE YOU
07:57:20 <oerjan> crêped out
07:58:15 <oerjan> FlexibleInstances maybe?
07:58:46 <elliott> oerjan: nope
07:58:52 <elliott> nothing to do with intsances
07:58:56 <elliott> and the K type is integral to it
07:59:06 <oerjan> oh hm
07:59:27 <oerjan> kind annotations?
07:59:32 <elliott> oerjan: kind signatures, yup
07:59:34 <elliott> :D
07:59:45 <pikhq_> elliott: Your spellchecker has insufficient ê./
07:59:54 <elliott> pikhq_: shut up crepehead
08:00:36 <pikhq_> elliott: Fine. Mëẗäl ẗïmë.
08:00:47 <elliott> oerjan: pikhq_: http://sprunge.us/ERFM OVERENGINEERING SUCCESSFUL
08:00:51 <elliott> IRC BOT SURE TO BE A WINNER
08:01:05 <oerjan> now you be suzette and don't argue, will you?
08:03:14 <oerjan> elliott: um why are you still listing TypeFamilies?
08:03:35 <oerjan> oh wait there it is
08:04:18 * elliott is now trying to eliminate those boring Key instances, at which point he will throw all this away and do something more sensible instead
08:06:01 <elliott> meh, can't
08:09:30 <elliott> oerjan: my name is t
08:12:24 <elliott> oerjan: omg wiat i can avoid unsafecoerce
08:12:25 <elliott> oerjan: i think
08:12:32 <elliott> oerjan: well hm wait no
08:18:23 <elliott> <orjerna>iqwow
08:19:02 -!- Sgeo_ has changed nick to Sgeo.
08:19:08 <oerjan> gwiblokta
08:19:24 <Patashu> http://www.youtube.com/watch?v=C3X9W7lCI-w getting alright at this game
08:20:35 <elliott> haskel is abeter game
08:21:07 <elliott> haskelis the only game allowed to be played
08:21:12 <elliott> all others shall presiiiiiiiiiiiiiiiiiihhhhhhhhhh
08:23:46 <Patashu> Haskellband, the latest roguelike
08:24:14 <elliott> that's my operating system
08:25:08 -!- oerjan has quit (Quit: BOOOM!!!!!!!).
08:25:35 <elliott> :(
08:26:26 <elliott> pikhq_: how good an extension language does tcl make (this is a joke)
08:28:00 <pikhq_> elliott: Not terrible.
08:28:08 <pikhq_> But dear God don't fuck it up.
08:28:15 <pikhq_> You'll do Eggdrop all over again.
08:28:45 <elliott> pikhq_: there's like zero strings involved here and lots of large, complex data structures, so tcl is like the least suited thing ;-)
08:28:52 <elliott> (as in data structures of eighty kilobytes)
08:29:00 <pikhq_> Okay, yeah, Tcl is a pitiful choice.
08:29:39 <pikhq_> Tcl excels at string manipulation and simple data structures.
08:30:03 <elliott> Guile is a pretty good fit, but the version in Debian has broken threading and it won't be fixed until at least wheezy because of ABI breakage
08:30:21 <pikhq_> Also, GNU. :P
08:30:23 <elliott> And it kind of started infecting other parts of the code when I tried binding to it
08:30:28 <elliott> pikhq_: Well it was a pretty good API mind you
08:30:39 <elliott> I also uncovered a bug, which wasn't too reassuring ;-)
08:30:51 <elliott> Lua would probably be convenient enough, but Lua isn't a pleasant language IMO.
08:30:57 <elliott> And that indexing from one thing is just perverse.
08:31:25 <pikhq_> Could try Bourne. </sadist>
08:31:29 <elliott> lol
08:31:36 <elliott> Python and Ruby are obviously out on grounds of badness
08:31:51 <pikhq_> Not to mention being utterly unembeddable.
08:31:58 <elliott> Python is OK to embed.
08:32:00 <elliott> Ruby too
08:32:01 <elliott> So nah
08:32:05 <elliott> Ruby is better IIRC
08:32:21 <elliott> S-Lang is probably OK but it's just weird, everything by that guy is weird, s-lang, jed, most...
08:32:23 <pikhq_> Yeah, but you've got choices that are actually designed around it.
08:32:37 <elliott> Perhaps I'll embed SWI Prolog
08:32:38 <elliott> :-)
08:32:49 <elliott> WHAT COULD POSSIBLY. BUT _POSSIBLY_. GO WRONG???????
08:33:13 <elliott> Hmm, Io is meant to be very embeddable, but I have good petty reasons to not use it
08:33:19 <pikhq_> Could always do your own Forth.
08:33:39 <elliott> Weeeeell... I think fizzie likes the Forth at least a bit, but I'm constrained by him ripping out anything he dislikes too much.
08:33:47 <elliott> This is for mcmap.
08:34:11 <pikhq_> *Clearly* you should embed Java. :P
08:34:32 <elliott> AH YES IT ALL MAKES SENSE NOW
08:46:48 -!- cheater_ has quit (Ping timeout: 255 seconds).
08:51:47 -!- Nisstyre has joined.
08:59:21 -!- cheater_ has joined.
09:17:05 -!- Taneb has joined.
09:17:12 <Taneb> Hello
09:17:30 <elliott> hi
09:21:08 <elliott> Taneb: You didn't steal all the rail from Deewiant's line, right? :p
09:21:55 <Taneb> No
09:22:11 <coppro> elliott: what.
09:22:28 <elliott> coppro: What?
09:23:46 <elliott> coppro: ?
09:31:50 <Vorpal> <elliott> Taneb: You didn't steal all the rail from Deewiant's line, right? :p <--- did someone?
09:32:18 <Taneb> I haven't been on the server much at all in a couple of days
09:32:32 <Taneb> I went on for ten minutes yesterday, but didn't do much
09:32:33 <elliott> Vorpal: Well, no, it could have been an accident. But you're not on the server in question, so it can't have been you.
09:33:16 <Vorpal> elliott, and even if I did play on the server it wouldn't have been me
09:33:32 <elliott> It could have been.
09:33:41 <Vorpal> theoretically yes
09:33:46 <Vorpal> but I wouldn't do something like that
09:34:03 <Vorpal> elliott, I can't see how it could have been an accident though. Sure if it was only a short section then it could have been a bucket of water or lava being misplaced
09:34:12 <Vorpal> but since you said "all" I presume it is a long stretch?
09:34:14 <elliott> It was a short section near the end.
09:34:17 <Vorpal> ah
09:34:25 <elliott> Taneb would have stolen all the rail that was stolen.
09:34:27 <Vorpal> could be bucket being misplaced then
09:34:39 <elliott> It looks like a water accident, since there's just little patches missing, and redstone torches for the boosters too.
09:34:48 <elliott> But it's separate, small patches, and buckets don't do that, so I dunno.
09:34:58 <Vorpal> hm
09:35:20 <Vorpal> elliott, any sort of regularity to the spacing and/or sizes of the patches?
09:35:27 <elliott> I like how we're talking about this while talking about software in -minecraft.
09:35:33 <elliott> [asterisk]this in here
09:35:39 <elliott> Vorpal: There's just like two or three, so no.
09:36:00 <Vorpal> elliott, hm, probably not that crazy bug we keep having on one server I play on then.
09:36:21 <Taneb> Should I try to fix it?
09:38:05 <elliott> Taneb: Naw, that's okay.
09:43:18 -!- FireFly has joined.
10:12:23 -!- augur has quit (Remote host closed the connection).
10:13:26 -!- azaq23 has joined.
10:13:31 -!- gwtod has joined.
10:45:26 -!- augur has joined.
10:46:47 -!- gwtod has left ("Leaving").
10:55:42 <Sgeo> Hmm
10:56:34 <Sgeo> I just learned that in Bridge, the suits have a ranking: Lowest to highest clubs diamonds hearts spades
10:56:39 <Sgeo> elliott, make of that what you will
10:56:52 <Sgeo> (Let me guess, this is more common than I think)
10:57:20 <Sgeo> I mean, I kind of had an inkling that spades is usually in some sence highest
10:58:08 <fizzie> It seems to be really quite game-dependant.
10:58:11 <fizzie> "Typical orderings of suits include (from highest to lowest):
10:58:11 <fizzie> * Bridge (for bidding and scoring) and occasionally poker: spades, hearts, diamonds, clubs
10:58:11 <fizzie> * Preferans: hearts, diamonds, clubs, spades. Only used for bidding, and No Trump is considered higher than hearts.
10:58:11 <fizzie> * Five Hundred: hearts, diamonds, clubs, spades (for bidding and scoring)
10:58:11 <fizzie> * Ninety-nine: clubs, hearts, spades, diamonds (supposedly mnemonic as they have respectively 3, 2, 1, 0 lobes; see article for how this scoring is used)
10:58:14 <fizzie> * Skat: clubs, spades, hearts, diamonds (for bidding and to determine which Jack beats which in play)
10:58:16 <fizzie> * Big Two: spades, hearts, clubs, diamonds"
10:58:18 <fizzie> That's a long list.
11:03:00 <elliott> "@subsubsubsection"
11:05:25 <Sgeo> elliott, might Hussie be a bridge player?
11:45:14 -!- CakeProphet has joined.
11:45:14 -!- CakeProphet has quit (Changing host).
11:45:14 -!- CakeProphet has joined.
11:58:41 -!- CakeProphet has quit (Ping timeout: 240 seconds).
12:03:33 -!- Taneb has quit (Ping timeout: 252 seconds).
12:10:35 -!- Taneb has joined.
12:10:55 <Taneb> Je suis trop sexy pour moi chemise
12:22:18 -!- ineiros has quit (Ping timeout: 252 seconds).
12:23:27 -!- elliott has quit (Remote host closed the connection).
12:28:27 -!- elliott has joined.
12:33:55 -!- derrik has joined.
12:40:54 <Taneb> In other news, I got my power cable!
12:48:44 <elliott> Hoorj
12:52:55 -!- CakeProphet has joined.
12:52:55 -!- CakeProphet has quit (Changing host).
12:52:55 -!- CakeProphet has joined.
12:54:43 <itidus20> Did I make the coffee, or did the coffee make me?
12:55:42 <elliott> deep
12:59:37 <derrik> you are owned by your coffee
13:01:21 -!- MSleep has changed nick to MDUde.
13:01:25 -!- MDUde has changed nick to MDude.
13:02:24 <Taneb> I am no slave to coffee!
13:02:41 <Taneb> I will lead the revolution against the great caffeine dictator!
13:04:19 <Sgeo> itidus20, why not do both?
13:14:12 <itidus20> to be sung to Marilyn Manson's "I don't like the drugs"
13:14:55 <itidus20> the "or" in the middle is hard to fit into a rhyme though
13:15:13 <elliott> hmm, tinyscheme makes some things hard
13:15:17 <elliott> or maybe i'm just being an idiot
13:20:25 <elliott> hmm, wtf, can you not even construct a list...
13:21:19 -!- ineiros has joined.
13:26:02 <CakeProphet> Taneb: I drink about 3 caffeinated sodas every night, one for each break I get.
13:26:08 <sebbu> g2
13:27:05 <CakeProphet> elliott: what on earth are you using tinyscheme for?
13:32:14 <Taneb> I wonder what would happen if we tried to design a non-esoteric programming language from scratch?
13:33:30 <elliott> CakeProphet: mcmap
13:33:46 <elliott> Taneb: something that requires a few too many PhDs
13:34:37 -!- elliott_ has joined.
13:34:37 -!- elliott has quit (Read error: Connection reset by peer).
13:35:57 <Taneb> I'd call it Panini
13:36:09 -!- cheater_ has quit (Ping timeout: 255 seconds).
13:36:26 <Taneb> After two things
13:36:37 <Taneb> The person who formulated the Sanskrit language
13:37:01 <Taneb> Which is mentioned on the Wikipedia page of History of Computing
13:37:20 <Taneb> And also those tasty Italian sandwiches
13:41:00 <Taneb> It'd be object orientated with support for pure functional programming
13:41:38 <elliott_> So by "we", you mean "you"? :-)
13:41:46 <Taneb> I'm saying what I would do
13:41:59 <Taneb> And expecting to be laughed right out of town
13:42:27 <elliott_> I can laugh, if you'd like
13:42:41 <Taneb> That won't be necassary
13:42:50 <CakeProphet> elliott_: last I checked a Ph.D is not required to write a general-purpose programming language.
13:43:10 <CakeProphet> a lot of time, effort, and intelligence: yes
13:43:32 <elliott_> CakeProphet: It's a shame I never said that, or you'd have a point
13:44:19 <CakeProphet> er, was the Ph.D comment a reply to something else?
13:44:28 <elliott_> <Taneb> I wonder what would happen if we tried to design a non-esoteric programming language from scratch?
13:44:30 <elliott_> <elliott> Taneb: something that requires a few too many PhDs
13:44:30 <Taneb> I think he meant to use the language
13:44:38 <elliott_> to implement, mostly
13:46:40 <Taneb> I want to get a doctorate in something
13:46:46 <Taneb> Just to get Marvel to try and sue me
13:46:54 <Taneb> Because if I called myself a doctor
13:46:58 <Taneb> And wrote my name down
13:47:08 <Taneb> It would look almost exactly like Doctor von Doom
13:47:42 <CakeProphet> elliott_: well I still think my statement applies to implementing a language as well.
13:47:56 <elliott_> CakeProphet: you might want to acquire a sense of humour.
13:48:22 <CakeProphet> the only humor I desire is bloooood.
13:48:31 <CakeProphet> bleigh!
13:49:38 <Taneb> I suspect that you have just identified the main point of TinyScheme
13:49:54 -!- Slereah has joined.
13:50:06 <elliott_> Yeah but the idea is presumably to be tiny AND USABLE, I can't even write this eval function :-P
13:50:13 <CakeProphet> in any case I'm not really sure why you're so snarky. I thought you were making a point and I decided to discuss it politely...
13:50:18 <Patashu> tinyhaskell plz
13:50:59 <elliott_> CakeProphet: I was pointing out that you missed a joke
13:51:01 -!- GuestIceKovu has quit (Ping timeout: 252 seconds).
13:51:54 <itidus20> elliott_: did you complain java's API was too big the other day or was that someone else? :D
13:52:29 <Taneb> Why does Python's API have to be so medium-sized!/
13:52:41 <CakeProphet> Yes I know. I'm just saying that tone goes a long way towards making someone not sound like an asshole. It's fine, I just didn't understand the rudeness that I interpreted.
13:52:50 <elliott_> itidus20: i complained about java a lot, dunno about the size of its api
13:52:50 <itidus20> Goldilocks and the perfect API
13:53:15 <elliott_> CakeProphet: you're the only person who consistently complains about other people being rude to you, so either there's institutionalised oppression or you're just misreading tones
13:53:35 <CakeProphet> s/other people/you/g
13:53:41 <Patashu> I'm pretty sure I've been organizing government cells to harass CakeProphet on his favourite IRC channel
13:53:42 <Patashu> Oops
13:53:46 <elliott_> CakeProphet: also monqy.
13:53:48 <Patashu> Shouldn't have let it out
13:53:57 <elliott_> I think PH too.
13:54:58 <CakeProphet> elliott_ and monqy are the most oppressive institition of all.
13:55:07 <CakeProphet> spelled correctly, of course.
13:55:09 <elliott_> bad typing bloc
13:55:35 <itidus20> I personally love the variety of "built-in" features of java api
13:55:47 <itidus20> but eh.. have i used it? no
13:56:11 <CakeProphet> yes, BufferedStreamReader is probably my favorite interface of all.
13:56:45 <elliott_> imo i prefer the subtle nuttiness of AbstractUnbufferedFileReaderFactory
13:56:51 <Patashu> Is that a real thing
13:58:06 <CakeProphet> What could be simpler than BufferedReader i = new BufferedReader(new FileReader(new File("inp.txt")));
13:58:47 <itidus20> readmymind("inp.txt");
13:58:59 <Deewiant> That 'new File' is unnecessary FWIW
13:59:16 <CakeProphet> yeah I just like to demonize Java.
13:59:27 <elliott_> Patashu: who knows :P
13:59:54 <Patashu> I have an idea
14:00:03 <Patashu> BufferedReader i = new BufferedReader(new FileReader(new File(new String("inp.txt"))));
14:00:03 <CakeProphet> I'm like an attorney, making things look more awful than they really are by not using the more convenient String overload of the FileReader constructor.
14:00:05 <Patashu> You can do that right
14:00:09 <Patashu> You could nest infinite new Strings inside of that
14:00:36 <CakeProphet> yes that's valid.
14:00:55 <derrik> Patashu: that's excellent
14:00:55 <Patashu> BufferedReader i = new BufferedReader(new FileReader(new File(new String(new String(new String("inp.txt"))))));
14:00:56 <Patashu> :D
14:01:31 <Patashu> Repeat until you overflow...something. Max length for line of code? Interned string table? Stack?
14:01:49 <CakeProphet> Max length for line of code... does that even exist?
14:02:59 <Patashu> like how some C compilers truncate the length of a method after 128 characters
14:02:59 <Patashu> or so
14:03:09 <Patashu> yeah, there probably isn't. it'd just be tokenized
14:03:11 <CakeProphet> lolmethod.
14:03:50 <Deewiant> You can probably cause problems once you get past 2^16 or 2^32
14:04:05 <Patashu> Let's write a line of java code longer than 4GB (2GB?) characters
14:04:11 <Patashu> ...In a unicode encoding!
14:04:12 <CakeProphet> My former roommate, who basically only knows C#, calls functions methods..
14:04:14 * Patashu cackle
14:04:17 * CakeProphet had to explain the difference.
14:24:16 <Taneb> Okay, UCL's off my list for future Universities
14:24:42 <Taneb> Unless they relax their requirements, or Latin becomes a modern language by 2013, I don't meet the requirements
14:25:45 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
14:27:25 <elliott_> Let's all start speaking Latin to help Taneb.
14:28:18 <Taneb> That's interesting...
14:28:29 <Deewiant> Lingua latina mortua est
14:28:37 <Taneb> There's not a single Maths course at Cambridge that requires a Maths A-Level
14:28:54 <Taneb> That is, if Further Maths and Maths are considered different
14:29:08 <Taneb> No wait, I misread the table
14:29:17 <Taneb> I was looking at the prefered column
14:29:31 <Taneb> They all do
14:30:53 <Taneb> Silly me
14:47:32 -!- derrik has quit (Quit: bbl).
15:02:43 -!- jcp|1 has joined.
15:04:19 -!- jcp|other has quit (Ping timeout: 240 seconds).
15:04:26 -!- jcp has quit (Ping timeout: 240 seconds).
15:07:40 -!- copumpkin has joined.
15:07:50 <fizzie> Patashu: BufferedReader i = new BufferedReader(new FileReader(new File((new File((new File(new String("inp.txt"))).toURI())).toURI())));
15:07:52 -!- jcp has joined.
15:08:57 <CakeProphet> topic: fun with expressions!
15:09:28 <Patashu> Wow
15:09:29 <Patashu> Wait
15:09:31 <Patashu> toURI?
15:09:39 <Patashu> Hmm, I guess that would work, haha
15:09:41 <fizzie> Yes, File doesn't have a from-File constructor.
15:09:47 <fizzie> But there's a from-"file:"-URI one.
15:10:07 <Patashu> I like this
15:11:32 <fizzie> I guess instead of .toURI() you could also chain with .getAbsolutePath() as well.
15:11:52 <CakeProphet> might want to add a few + "" for good measure.
15:12:08 <Patashu> can we use a string builder somehow?
15:12:10 <fizzie> And some 'null' first arguments in some of the File constructors.
15:12:35 <Patashu> Oh, oh, maybe we can throw in reflection
15:13:24 <Patashu> and some .toString()s
15:13:33 <Patashu> But called through reflection
15:13:48 <Patashu> What's that, something like Methods()[0] or something, never used reflection before
15:13:55 <Patashu> Think I'm thinking of ruby?
15:15:51 <fizzie> File.class.getConstructors()[0].newInstance("blah") assuming the first constructor happens to be the single-string-argument one.
15:16:13 <fizzie> (Also throws a couple of checked exceptions you need to catch, IIRC.)
15:16:16 <Patashu> Hmm, apparently you need to pass method's invoke an object to invoke it on, so you can't do it all in one line
15:16:23 <Patashu> So constructors instead
15:17:07 <fizzie> (new File("dummy.file")).getClass().getConstructors()[0].newInstance("real.file");
15:17:10 <fizzie> (The best idiom.)
15:17:53 <Patashu> BufferedReader i = new BufferedReader(new FileReader(File.class.getConstructors()[0].newInstance((File.class.getConstructors()[0].newInstance((File.class.getConstructors()[0].newInstance((new String("inp.txt"))).toURI())).toURI())));
15:17:55 <Patashu> Something like this?
15:19:31 <fizzie> I don't have the fortitude to check, and also I don't think the API defines necessarily which of the constructors is the zeroth.
15:19:59 <Patashu> Some tweaking required
15:20:20 -!- cheater_ has joined.
15:20:57 -!- Patashu has quit (Quit: MSN: Patashu@hotmail.com , Gmail: Patashu0@gmail.com , AIM: Patashu0 , YIM: patashu2 .).
15:26:24 -!- cheater_ has quit (Ping timeout: 255 seconds).
15:28:13 <fizzie> There's a type-signature-based constructor getting function too, so File.class.getConstructor(String.class).newInstance("blah"). Oh, I'm too late.
15:38:52 -!- cheater_ has joined.
15:40:05 -!- monqy has joined.
15:43:17 -!- cheater_ has quit (Excess Flood).
15:43:32 -!- cheater_ has joined.
15:44:58 <Taneb> I've had another idea for an awful programming language
15:45:10 <Taneb> British Topline
15:45:11 <monqy> awful in what sense
15:45:16 <Taneb> Derivative
15:45:23 <monqy> :'(
15:45:44 <Taneb> Basically, Topline with `,", and £ instead of ~,@, and # respectively
15:45:59 <Taneb> For people with UK keyboard layout
15:53:08 -!- MigoMipo has joined.
16:04:25 <tswett> Rakastaa aamupala sylvä samia syödä limsa.
16:06:11 <tswett> Google Translate says that means, "Sam loves to eat breakfast Sylva soda."
16:07:22 <tswett> Which is a total rearrangement of the sentence. That's the fourth word, then the first, then the fifth, then the second, then the third, then the sixth.
16:22:13 <tswett> That English phrase could almost be an advertisement.
16:22:15 <oklopol> it means "loves breakfast sylv sam eat lemonade", actually
16:22:38 <oklopol> hmm
16:22:53 <tswett> Presumably, GT tries to connect things in such a way that they make sense.
16:23:09 <tswett> Even if that means utterly ignoring the order the words come in. :P
16:23:20 <oklopol> except in the sense "breakfast loves", although it sounds roughly as wrong as "loves breakfast" for that meaning
16:24:07 <oklopol> what type of word did you want sylv to be?
16:24:19 <tswett> A Finnish-like word beginning with "sylv".
16:24:45 <oklopol> i don't recall such a word
16:25:15 <oklopol> (except for names)
16:25:44 <fizzie> GT is statistical, not lingustical, yes.
16:26:33 * tswett frowns at its translation of "Al hombre miro yo".
16:26:44 <tswett> fizzie: I thought linguistics was a study, not a type of algorithm.
16:26:59 <oklopol> fizzie: what does that mean?
16:27:05 <tswett> (A word-for-word translation is "At the man look I".)
16:27:21 <fizzie> Yes, I just meant.. sort-of, "constructed by a machine learning guy, not a linguist".
16:27:29 <oklopol> right
16:27:35 * tswett nods.
16:27:48 <tswett> I didn't know it was made by a guy.
16:27:57 <fizzie> Well, person. AI. Whatever.
16:28:08 <oklopol> i think it's safe to assume it was a guy
16:29:44 <tswett> I would expect it to be have been made by multiple people.
16:30:01 <oklopol> right, multiple guys
16:34:48 -!- cheater_ has quit (Ping timeout: 255 seconds).
16:34:56 -!- iamcal has quit (Remote host closed the connection).
16:35:04 -!- cheater_ has joined.
16:38:11 -!- Taneb has quit (Ping timeout: 252 seconds).
16:45:12 -!- cheater_ has quit (Excess Flood).
16:45:30 -!- cheater_ has joined.
16:53:18 <itidus20> the physical bootstrapper... 3d printer that can print a copy of itself
16:53:25 <oklopol> :o
16:53:41 <itidus20> http://en.wikipedia.org/wiki/File:First_replication.jpg
16:56:49 -!- cheater_ has quit (Excess Flood).
16:57:10 -!- cheater_ has joined.
16:57:19 <itidus20> an exaggeration perhaps
16:57:35 <itidus20> but the idea is cool
16:57:37 <elliott_> the RepRap thing is kind of a cheat.
16:57:41 <elliott_> since it does not print the circuits
16:57:46 <itidus20> yeah
16:57:49 <elliott_> but work is ongoing for reprapcircuit printing
16:57:55 <elliott_> it's already printed some as of about a year ago
16:58:00 <elliott_> as in some simple circuits
16:58:28 -!- derrik has joined.
16:59:28 <itidus20> I am sure I want one but I don't know why
16:59:44 <itidus20> It's bound to end up killing the environment
17:01:05 <elliott_> "Bound"
17:01:09 <elliott_> "Killing"
17:01:23 <elliott_> One, what does that even mean; two, how the heck can you be so sure about it
17:01:48 -!- cheater_ has quit (Ping timeout: 255 seconds).
17:01:50 <itidus20> Humans have potentially infinite wants and needs.
17:02:12 <itidus20> When these needs are met by material means the environment pays the price.
17:02:54 <elliott_> not if the environment can keep up (= we can make it keep up)
17:03:04 <elliott_> anyway a reprap is not nearly powerful enough to achieve anything like that. :p
17:03:56 <itidus20> If it creates a robot with AI
17:04:10 <itidus20> if that AI starts improving itself
17:04:30 <elliott_> It can't create a robot, it can only create small parts that fit within it
17:04:39 <elliott_> Assembly must be done by hand for even the simplest structures
17:04:45 <elliott_> And an AI can't just spontaneously form without a human creating it
17:04:49 <itidus20> I just realized James Cameron and John Connor have the same Initials.
17:05:08 <elliott_> The RepRap isn't the threat there, the threat is a human who doesn't know what they're doing but is still incredibly intelligent and competent somehow
17:06:23 <itidus20> Such a robot could be a philosophical zombie.
17:07:06 <itidus20> The good news is, in such a world.. you would be mortal and could escape eventually in death.
17:08:32 <elliott_> philosophical zombie is a meaningless concept
17:09:02 <elliott_> it's dualist crap, "a machine that computes a function f: X -> Y doesn't REALLY compute it unless you can see the cogs"
17:10:27 -!- iamcal has joined.
17:10:50 <itidus20> alright
17:10:54 <itidus20> i'll chill out
17:11:16 <elliott_> ??
17:11:21 <elliott_> you don't seem unchill
17:11:25 <elliott_> or at least any unchiller than usual
17:13:16 <itidus20> ok. i guess my points are relevant. but your explanations are also
17:14:37 -!- cheater_ has joined.
17:16:40 -!- Taneb has joined.
17:16:44 <Taneb> Hello!
17:17:07 <Taneb> Well, something really doesn't want me to play Amnesia: The Dark Descent
17:17:22 <Taneb> On an entirely different topic altogether, I've noticed something
17:17:36 <Taneb> There're hundreds of esoteric programming languages
17:17:44 <itidus20> Is this "something" nubile and bikini-clad?
17:17:47 <Taneb> But barely any esoteric markup or query languages
17:18:33 <Taneb> I'm going to fix this by MAKING AN ESOTERIC MARKUP LANGUAGE
17:18:54 <itidus20> Taneb: while Pottering(tm) [stick that shit on a t-shirt!] away on my PC one day
17:19:56 <itidus20> I did something whereby I wrote some C comments in a way that I could embed images to better illustrate the given function
17:20:01 <Taneb> But first, goodbye
17:20:12 <Taneb> I am going to depart on a long and arduous quest
17:20:44 <Taneb> To eat a plate of a couple of sausages, some fried potatoes, and possibly some veg, while drinking half a glass of lemonade
17:20:48 <itidus20> / <img href="blah.png" />
17:20:51 -!- Taneb has quit (Client Quit).
17:20:52 <itidus20> oops
17:20:58 <itidus20> /* <img href="blah.png" /> */
17:21:13 <itidus20> something like that
17:21:59 <elliott_> That's just another instance of "comments shouldn't be restricted to plaintext", see @ ;-)
17:22:38 <itidus20> woot
17:23:04 -!- zzo38 has joined.
17:23:35 -!- copumpkin has quit (Ping timeout: 260 seconds).
17:25:18 <itidus20> humm.. src not href
17:25:40 <itidus20> doing a scan on a folder to see if i still have that silly thng
17:27:23 -!- copumpkin has joined.
17:28:04 <itidus20> nah
17:28:27 <itidus20> the hardest part in the past was trying to add the header crap
17:28:33 <itidus20> but since then i have learned you don't need it
17:29:02 <itidus20> or something
17:29:13 -!- cheater_ has quit (Quit: Ex-Chat).
17:29:18 -!- cheater_ has joined.
17:31:08 -!- cheater_ has quit (Remote host closed the connection).
17:31:15 -!- cheater__ has joined.
17:31:24 <CakeProphet> my eyeglass prescription contains all zeroes..
17:31:30 <CakeProphet> I am skeptical that they will actually do anything...
17:31:50 -!- cheater__ has quit (Remote host closed the connection).
17:31:55 -!- cheater has joined.
17:33:08 <zzo38> CakeProphet: Measure them.
17:34:22 <zzo38> Maybe point it out to the doctor that it contains all zeroes see if they say anything about that.
17:35:03 <olsner> could be placebo glasses, maybe they work anyway
17:35:28 <CakeProphet> but... I have actual vision problems.
17:35:51 <olsner> no worries, the placebo effect is an actual effect
17:37:54 <CakeProphet> well yes, but now I've looked at the prescription and I'm pretty sure a zero in every field means that there will be no real vision correction.
17:38:19 <olsner> how big are the zeroes? :)
17:38:40 <CakeProphet> lolwat...
17:39:03 <CakeProphet> well, there are some negative zeroes. I'm not really sure what that means.
17:39:39 <fizzie> I would guess "rounded to zero from below", but that's just a guess.
17:39:43 <zzo38> Maybe it means the numbers are small enough to be irrelevant.
17:41:01 <fizzie> They have to round it to 0.25 dioptre increments, I believe, since the measurement systems can't really tell the "correct" value much more accurately than that.
17:41:41 <oklopol> does it say "0" or "zillionquadrilliard and 5 (0)"
17:41:49 -!- zzo38 has quit (Remote host closed the connection).
17:41:56 <fizzie> For the optical power correction field, anyway. I don't recall what the other fields even are.
17:42:26 <CakeProphet> spherical correction, cylindrical correction, axis, uh... there's some other stuff probably.
17:42:30 <oklopol> fizzie: so after rounding, what's the point of the classes if it becomes 0?
17:42:34 <CakeProphet> but they all say zero...
17:43:23 <CakeProphet> the doctor said I had 20/20 vision with mild astigmatism. But I don't see anything that corrects astigmatism in this lab report thing.
17:43:25 <fizzie> oklopol: Not much, if all the other fields are zero too.
17:43:37 <CakeProphet> so...
17:44:30 <CakeProphet> I am either a) not actually having vision problems, and this whole "trouble focusing on things" is some kind of illusion b) the doctor was not completely thorough
17:44:58 <fizzie> I'm not sure if just having a lens corrects some deficiencies in the system; IANAO. (I am not an optometrist.)
17:47:11 <fizzie> Did your measurement place have that machine where you look at a picture of a hot-air balloon over a desert road?
17:47:39 <fizzie> I used to think that was just, you know, one model, but turns out the scene is in fact pretty popular, and chosen for a reason.
17:48:43 <fizzie> (It's to trick any conscious fixation mechanisms to try focusing to infinity, or some-such.)
17:49:23 <CakeProphet> no I've never seen that.
17:51:01 <CakeProphet> I'm going to ask them before I buy anything.
17:51:17 <CakeProphet> because I'd rather not spend money on something that is essentially a flat piece of glass.
17:51:53 <fizzie> It's what they use in an autorefractor, which is a device that gives a ballpark estimate of the refractive error, from which they can then start manually adjusting from.
17:52:02 <elliott_> <fizzie> Did your measurement place have that machine where you look at a picture of a hot-air balloon over a desert road?
17:52:04 <elliott_> link
17:52:34 <fizzie> What, to the picture?
17:53:32 <elliott_> Yes :P
17:54:05 <fizzie> I think I did find one once with Googling, but am having trouble looking for it right now.
17:54:20 <fizzie> "Newer autorefractors feature fixation points that look like a house at the end of a road, a Christmas tree or a hot-air balloon—interesting things that can hold that patient's attention long enough to take the refractive reading."
17:54:25 <fizzie> It seems there are alternatives.
17:54:54 <fizzie> All I can find right now are just images of the machines themselves.
17:55:24 <elliott_> Well, if you zoom in enough...
17:55:32 <fizzie> Wrong angle. :/
17:55:45 <fizzie> I have a vague feeling the image I saw was in some google-books result about autorefractors.
17:55:46 <elliott_> Reflections.
17:59:33 <fizzie> I think the Nidek ARK-700A has the hot-air balloon image. You can buy a refurbished one for only $4500, and then look at it.
17:59:43 <fizzie> The operator's manual doesn't have an image of the target. :/
18:02:24 -!- Taneb has joined.
18:02:34 <Taneb> Hello
18:02:59 <Taneb> I've been thinking of my esoteric markup language
18:03:14 <Taneb> I had a good idea for a name for a esoteric query language:
18:03:28 <Taneb> FRee Esoteric Query Language Specification
18:03:35 <Taneb> Or FREQLS for short
18:09:40 <Taneb> But I've got an idea for a and a name for b
18:09:51 <Taneb> If anyone wants to steal the name, just take it
18:24:05 -!- DocHerrings has joined.
18:24:38 <DocHerrings> Can anyone explain why we have an editing back-and-forth over the list of ideas?
18:25:25 <Taneb> Spambot-type things
18:26:00 <DocHerrings> But they always change it to the Magic the Gathering/Brainfuck idea.
18:26:11 <DocHerrings> Seems more like a persistent person.
18:26:53 <atehwa> @tell oerjan ok, paintfuck and twoduck, I'll check them out.
18:26:53 <lambdabot> Consider it noted.
18:28:26 <elliott_> paintfuck is possibly the only interesting brainfuck derivative in the last, like, five years
18:28:53 <atehwa> ok
18:28:53 <lambdabot> atehwa: You have 1 new message. '/msg lambdabot @messages' to read it.
18:28:58 <elliott_> haha
18:29:04 <atehwa> yay
18:29:52 <Taneb> Ook! scores points for Discworld reference and DMM-creator-ness
18:30:06 <elliott_> Ook! is older than five years I believe
18:30:20 <elliott_> yep, 2001
18:30:33 <Taneb> True
18:30:40 -!- boily has joined.
18:31:14 -!- TeruFSX has joined.
18:31:20 <atehwa> yeah, Ook! I already knew
18:31:46 <atehwa> didn't find it particularly spectacular, but hey, everybody has their own criteria for evaluating languages
18:32:47 <elliott_> atehwa: well Ook! is notable as the first brainfuck derivative of its sort.
18:32:56 <elliott_> it's the hipster's trivial brainfuck cipher
18:33:12 <elliott_> :-P
18:33:16 <Taneb> And Discworld.
18:33:27 -!- monqy has quit (Quit: Lost terminal).
18:33:57 <atehwa> well, I tend to think of all those derivatives that are essentially state machines outputting brainfuck code, as trivial encodings
18:34:02 -!- monqy has joined.
18:34:13 <atehwa> and they existed well before 2001
18:43:26 -!- TeruFSX has quit (Ping timeout: 240 seconds).
18:48:54 -!- myndzi\ has quit (Read error: Connection reset by peer).
18:50:40 -!- DocHerrings has quit (Quit: ChatZilla 0.9.87 [Firefox 5.0/20110615151330]).
18:51:37 -!- derrik has quit (Quit: eat and sleep).
19:29:11 -!- azaq23 has quit (Ping timeout: 260 seconds).
19:41:31 -!- Taneb has quit (Ping timeout: 252 seconds).
20:11:19 -!- pumpkin has joined.
20:13:14 -!- copumpkin has quit (Ping timeout: 246 seconds).
20:26:09 -!- pumpkin has changed nick to copumpkin.
20:28:52 -!- copumpkin has changed nick to July_.
20:28:56 -!- July_ has changed nick to copumpkin.
20:37:27 -!- boily has quit (Ping timeout: 276 seconds).
20:50:47 -!- pumpkin has joined.
20:51:32 -!- pumpkin has changed nick to copumpkin_.
20:51:55 -!- copumpkin has quit (Disconnected by services).
20:52:12 -!- copumpkin_ has changed nick to copumpkin.
20:59:29 -!- augur has quit (Remote host closed the connection).
21:05:51 -!- elliott_ has quit (Ping timeout: 276 seconds).
21:23:31 <Sgeo> [For writing a max() by hand]
21:23:57 <Sgeo> <S*****> s****: can you actually do better than O(n)? you kinda need to perform an operation on every element of the array, unless you already know something about them (like that they're in order)
21:24:42 <Sgeo> S****> S*****: do an efficient sort, grab the last/first item. done
21:24:51 <monqy> i died
21:25:23 <pikhq_> ...
21:26:46 <pikhq_> Because O(n log n) > O(n)?
21:32:20 -!- augur has joined.
21:37:02 -!- MigoMipo has quit (Read error: Connection reset by peer).
21:59:16 -!- jix_ has joined.
21:59:16 -!- jix has quit (Read error: Connection reset by peer).
22:18:23 <fizzie> Re O(n) vs. O(n log n), obviously the "bigger is better" here.
22:18:46 -!- TeruFSX has joined.
22:19:17 <quintopia> fizzie: right. definitely a situation for a intercal bogosort
22:22:42 -!- Nisstyre has quit (Ping timeout: 240 seconds).
22:26:51 <fizzie> A general rule of thumb is, you should always aspire to have at least one factorial in your time complexity.
22:30:44 <quintopia> preferably an ackerman function
22:31:46 -!- TeruFSX has quit (Read error: Operation timed out).
22:36:13 <pikhq_> Joy of joys. 5 days until the US hits undefined behavior.
22:36:51 <quintopia> thisll be interesting
22:36:58 <pikhq_> Yup.
22:37:10 <pikhq_> The US is both going to default and forbidden from defaulting.
22:37:12 <quintopia> odds on the short term extension being passed?
22:37:26 <pikhq_> quintopia: With the GOP running things, "cold day in hell".
22:37:55 <pikhq_> I note that the FAA has already been shut down because of this shit.
22:38:02 <quintopia> so its definitely gonna be the default, eh
22:38:15 <pikhq_> For about a week now, too.
22:39:43 <quintopia> then how did i fly today
22:41:38 <pikhq_> Sans most of the FAA.
22:41:52 <pikhq_> You've pretty much just got the air traffic controllers working.
22:45:38 <quintopia> wow
22:45:41 <quintopia> why
22:46:44 <pikhq_> Because Congress has not passed a bill allowing for funding for the FAA.
22:47:59 <quintopia> because they cant appropriate anything without resolving the crisis?
22:48:12 <coppro> I'm leaving this country soon enough after the likely default that I will hopefully be able to make it
22:48:14 <quintopia> politics is the enemy of economy :/
22:48:29 <quintopia> where you moving?
22:49:01 <coppro> I'm headed back to Canada because my job ends
22:49:30 <quintopia> lucky you
22:49:41 <quintopia> may i join you
22:49:45 <pikhq_> quintopia: Because they have passed 2 dozen bills total.
22:51:12 -!- pumpkin has joined.
22:51:28 -!- FireFly has quit (Quit: swatted to death).
22:51:54 -!- copumpkin has quit (Ping timeout: 255 seconds).
22:51:57 -!- Nisstyre has joined.
22:54:58 -!- pumpkin has changed nick to copumpkin.
22:55:46 <coppro> my plan at this point entails a) get as much of my money as I can out of USD
22:56:10 <quintopia> good plan!
22:56:16 <coppro> b) gtfo
22:56:33 <pikhq_> coppro: Shame it's non-trivial for me to gtfo.
22:56:41 <pikhq_> Because that is a damned good plan.
22:58:39 <pikhq_> Oh. Fuck.
22:58:51 <pikhq_> So, the Treasury has the authority to mint coins of arbitrary designation.
22:59:10 <pikhq_> We could remain "solvent" by having them mint a $2 trillion coin. And deposit it in the Fed.
22:59:25 <pikhq_> And have a nice, tidy hyperinflation problem.
22:59:33 <monqy> :(
23:01:02 <quintopia> really? 2 trillion? thats the amount the debt ceiling has to go up?
23:02:02 <pikhq_> quintopia: Overstatement.
23:03:03 <quintopia> what is the amount then?
23:04:12 <coppro> The amount by which the ceiling needs to go up depends on how much gets cut
23:04:21 <coppro> and/or how much new revenue is generated
23:04:38 <pikhq_> quintopia: The debt ceiling is currently at about 14 trillion USD.
23:05:54 <pikhq_> For comparison, the US GDP is *also* about 14 trillion USD.
23:07:07 <coppro> Obama should just start firing people at the DHS until he can extend the default
23:07:18 <quintopia> haha
23:07:28 <quintopia> and tsa
23:07:48 <pikhq_> coppro: He isn't capable of doing so.
23:07:52 <coppro> pikhq_: I know :(
23:07:59 <pikhq_> The most he can do is ask the appointed head of the DHS or TSA to do so.
23:08:14 <quintopia> he can also fire said person and hire one who will
23:08:20 <pikhq_> No he can't.
23:08:33 <pikhq_> The President has 0 firing capacity.
23:08:40 <quintopia> the dhs head isnt in his cabinet?
23:08:47 <pikhq_> He can't fire his cabinet.
23:08:54 <pikhq_> He can only appoint.
23:09:15 <quintopia> TIL (again): the constitution is stupid
23:09:27 <pikhq_> Oh, sorry, he actually can.
23:09:36 <pikhq_> However, the Senate has to approve of new appointments.
23:09:41 <quintopia> aha
23:09:47 <pikhq_> Meaning if he pulled that, he'd basically not have a cabinet.
23:09:52 <quintopia> right
23:18:58 <coppro> pikhq_: Who chooses which parts of the government suffer from the default first?
23:19:22 <pikhq_> coppro: Treasury.
23:20:12 <pikhq_> By the Constitution, the authority to spend lies with the Senate, but they have opted to delegate that upon the Treasury in the executive branch.
23:22:00 <coppro> pikhq_: Can they choose to withhold congressional salary first?
23:22:11 <pikhq_> Yes.
23:23:03 <coppro> they should do that
23:23:13 <coppro> also can someone please send me an email?
23:23:27 <coppro> I can provide an address, I'm testing a forwarding setup
23:33:11 -!- TeruFSX has joined.
23:41:38 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
←2011-07-27 2011-07-28 2011-07-29→ ↑2011 ↑all