←2012-01-14 2012-01-15 2012-01-16→ ↑2012 ↑all
00:01:00 <tswett> Okay, I've got paper 3 as well.
00:01:07 <tswett> elliott: it's at http://www.mscand.dk/article.php?id=153
00:01:43 <elliott> oh man this is great for glazing
00:01:46 <oerjan> i thought i remembered someone found one of them publicly available before
00:02:10 <tswett> oerjan: it might have been do you think it might have been http://www.mscand.dk/article.php?id=153?
00:02:10 <elliott> oerjan: pls set future papers in computer modern for more effective gazing experience
00:02:14 <elliott> (the joke is "future papers")
00:02:28 <oerjan> tswett: QUITE POSSIBLE
00:03:00 <oerjan> elliott: i'm pretty sure the journals decide on fonts?
00:03:40 <elliott> oerjan: how coudl you publish in aj ournal using times :(
00:03:52 <elliott> "betrayed his responsibility to society" -ronald raegean
00:04:36 <tswett> A dynamical system is minimal if every point's orbit is dense? That sounds... like a strange thing to say.
00:05:19 <tswett> Oh shucks, I bet topological dynamical systems can generate these fancy-schmancy sequences. Take a point's orbit and apply some function to it elementwise.
00:05:20 <oerjan> tswett: it means there are no non-trivial closed subsystems
00:05:38 <elliott> *you're* a non-trivial closed subsystem, lol
00:05:47 <elliott> "oh snap" --bill clinton
00:06:23 <elliott> "oh crap" --bill
00:07:19 * oerjan notes there is no actual picture of a bratteli-vershik diagram in that one
00:07:47 <oerjan> there's a nice one in the toeplitz paper iirc
00:09:34 <tswett> This one is the Toeplitz one.
00:11:39 <oerjan> tswett: generally to get sequences you want to partition the space into clopen sets corresponding to your zero index value
00:12:03 <oerjan> and for the toeplitz case i recall this can be done iff you have the "expansive" criterion
00:12:54 <oerjan> actually that may be in general
00:23:29 <kmc> this is a weird channel
00:23:29 <lambdabot> kmc: You have 1 new message. '/msg lambdabot @messages' to read it.
00:24:38 <oerjan> kmc: AGAIN?
00:24:56 <zzo38> Of course is weird channel!!!!???????!!!!!!!!???!!!!?!?!?!!!!???!!!!!!!!????!!!?!?!!???!!!!!!?!?!!!???!!!!!!!!!!!!!!?!!!!!?!?!??!!!?!?!!!
00:25:29 <oerjan> > map length $ group "!!!!???????!!!!!!!!???!!!!?!?!?!!!!???!!!!!!!!????!!!?!?!!???!!!!!!?!?!!!???!!!!!!!!!!!!!!?!!!!!?!?!??!!!?!?!!!"
00:25:30 <lambdabot> [4,7,8,3,4,1,1,1,1,1,4,3,8,4,3,1,1,1,2,3,6,1,1,1,3,3,14,1,5,1,1,1,1,2,3,1,1...
00:25:32 <elliott> kmc: 18:43:11: <zzo38> But gopher://zzo38computer.foeug3g47fgeg34.ch3p-h4rbl-vjaagra.co.ng:22/../../warez2.php not only looks wrong, and uses . as the type, but doesn't even resolve. I am unsure why kmc posted this wrong URL, possibly to confuse you???
00:25:38 <elliott> did you do it to confuse you :(
00:25:43 <oerjan> @oeis 4,7,8,3,4,1,1,1,1,1
00:25:51 <lambdabot> Sequence not found.
00:25:56 <elliott> the zzo sequence
00:26:07 * oerjan is disappoint
00:26:14 -!- GreaseMonkey has joined.
00:26:14 -!- GreaseMonkey has quit (Changing host).
00:26:14 -!- GreaseMonkey has joined.
00:26:29 <oerjan> the triple kiwi entrance
00:27:55 <kmc> i did it to confuse you elliott
00:29:17 <elliott> :(
00:29:33 <kmc> i'm sure your confusion has been bothering you all day
00:29:39 <shachaf> elliott: Are you confused you now?
00:29:50 <monqy> im confuse
00:31:53 <kmc> zzo38, luite was working on something like Wolfram Alpha in Haskell
00:32:01 <kmc> called it Wolfgang Lambda
00:32:27 <elliott> that thing was cool i remember that hing
00:32:48 <kmc> i don't think "reimplement it in Haskell" is the way to make wolfram alpha better
00:32:57 <elliott> it wasn't really W|Ay was it
00:33:03 <elliott> at least i dont recall any free-text stuff
00:33:08 <elliott> it was more CASy
00:33:09 <shachaf> I don't think luite's thing was "reimplementing Wolfram Alpha".
00:33:09 <kmc> i mean i know all software is better if it's written in Haskell
00:33:13 <elliott> like mathematica notebooks
00:33:53 <coppro> not all software
00:34:04 <coppro> software written in agda does not get better by being rewritten in haskell
00:34:16 <elliott> yes it does
00:34:18 <elliott> significant unicode reduction
00:34:30 <kmc> and by reimplementing your software in haskell, you eliminate the need to test or document it
00:35:11 <shachaf> kmc: I thought the way it went was that all you need to do is talk about how the software would be easy to reimplement in Haskell.
00:35:16 <coppro> elliott: that is not a good thing
00:35:17 <shachaf> You need to actually do it?
00:35:58 <kmc> yeah, that's even better
00:36:05 <kmc> only haskell experts can do that though
00:36:10 <oerjan> the great unicode plague of december 2012
00:36:11 <elliott> wow it's almost as if i've heard this exact exchange five times in the past three days
00:36:26 <kmc> haha
00:36:57 <coppro> oerjan: oh that explains it
00:37:18 -!- CHeReP has joined.
00:37:31 <oerjan> `welcome CHeReP
00:37:38 <HackEgo> CHeReP:
00:37:46 <oerjan> >_<
00:37:49 <oerjan> `welcome CHeReP
00:37:53 <HackEgo> CHeReP:
00:37:54 <kmc> womp womp
00:38:04 <oerjan> AGAIN?
00:38:20 <oerjan> CHeReP: i'm afraid our bot refuses to tell you what we're doing here
00:38:31 <oerjan> `welcome CHeReP
00:38:33 <HackEgo> CHeReP:
00:38:39 <monqy> `welcome cherp
00:38:43 <HackEgo> cherp: 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:38:43 <oerjan> hm...
00:38:47 <monqy> cherp cherp
00:38:59 <oerjan> O_o
00:39:16 <monqy> does welcome have caps problems
00:39:25 <oerjan> `@ CHeReP ? welcome
00:39:28 <HackEgo> CHeReP: 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:39:32 <kmc> wtf
00:39:45 <oerjan> `welcome CHeReP
00:39:51 <HackEgo> CHeReP:
00:39:59 <oerjan> CHeReP: sorry about the debugging
00:40:04 <monqy> what's welcome
00:40:12 <oerjan> `welcome BaTMaN
00:40:16 <HackEgo> BaTMaN: 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:40:24 <oerjan> `welcome BaTMaN
00:40:28 <HackEgo> BaTMaN: 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:40:33 <Sgeo> `welcome BAtMaN
00:40:37 <HackEgo> BAtMaN: 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:40:42 <Sgeo> !!
00:40:50 -!- myndzi has quit (Ping timeout: 268 seconds).
00:41:01 <Sgeo> `welcome DIfSfQ
00:41:05 <HackEgo> DIfSfQ: 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:41:09 <Sgeo> ?!?
00:41:34 <tswett> `welcome CHeReP
00:41:37 <HackEgo> CHeReP: 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:41:44 * tswett shrugs.
00:41:51 <monqy> oh i
00:41:52 <monqy> think i get it
00:41:53 <monqy> now
00:41:56 <monqy> `welcome monqy
00:42:00 <HackEgo> monqy:
00:42:01 <monqy> `welcome tswett
00:42:04 <monqy> `welcome oerjan
00:42:05 <HackEgo> tswett:
00:42:08 <HackEgo> oerjan:
00:42:16 <monqy> `welcome CHeReP
00:42:17 <oerjan> monqy: WHAT
00:42:20 <HackEgo> CHeReP: 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:42:34 <monqy> its a magic
00:43:05 <oerjan> *sigh*
00:43:08 <monqy> `welcome monqy yqnom
00:43:12 <HackEgo> monqy: yqnom: 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:43:38 <Sgeo> `welcome Blah
00:43:38 <elliott> `welcome oerjan
00:43:41 <monqy> `welcome monqy yqnom monquey
00:43:43 <HackEgo> Blah:
00:43:44 <oerjan> `welcome oerjan oerjan oerjan oerjan oerjan oerjan oerjan oerjan oerjan oerjan oerjan
00:43:46 <Sgeo> I get it
00:43:49 <HackEgo> monqy: yqnom: monquey: 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:43:49 <monqy> sgeo gets it
00:43:50 <HackEgo> oerjan: oerjan: oerjan: oerjan: oerjan: oerjan: oerjan: oerjan: oerjan: oerjan: oerjan:
00:44:05 <elliott> how does it
00:44:06 <elliott> work
00:44:07 <elliott> i dont get it
00:44:08 <monqy> its a
00:44:10 <monqy> perle
00:44:14 <elliott> that
00:44:15 <elliott> doesnmt explain
00:44:20 <monqy> :0
00:44:21 <Sgeo> Shall I explain?
00:44:29 <monqy> `cat bin/welcome
00:44:31 <monqy> explained.
00:44:33 <HackEgo> ​#!/usr/bin/perl -w \ if (defined($_=shift)) { s/ +/ @ /g; exec "bin/@", $_ . " ? welcome"; } else { exec "bin/?", "welcome"; }
00:44:40 <HackEgo> oerjan: 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:44:40 <Sgeo> It's a space
00:44:41 <Sgeo> At the end
00:44:49 <elliott> o k
00:44:54 <oerjan> argh
00:45:02 <oerjan> `welcome oerjan
00:45:06 <HackEgo> oerjan:
00:45:08 <oerjan> `welcome oerjan
00:45:12 <HackEgo> oerjan: 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:45:20 * oerjan facepalm
00:46:05 <elliott> today we learned
00:46:10 <elliott> my hatred of perl rewrites of scripts
00:46:11 <elliott> is legitimate
00:47:32 <elliott> monqy: i want to pay a detective to find me the owner of sourcereal.com
00:47:38 <elliott> an internet detective
00:48:27 -!- myndzi has joined.
00:48:37 <zzo38> Can you use WHOIS service to try?
00:48:51 <monqy> i just tried; it was unhelphfuel
00:49:07 <oerjan> `run sed -i 's!{!{ s/ *$/; ' bin/welcome
00:49:11 <HackEgo> sed: -e expression #1, char 14: unterminated `s' command
00:49:15 <tswett> It was not healthfuel.
00:49:23 <oerjan> `run sed -i 's!{!{ s/ *$/; !' bin/welcome
00:49:26 <HackEgo> No output.
00:49:32 <oerjan> `cat bin/welcome
00:49:35 <HackEgo> ​#!/usr/bin/perl -w \ if (defined($_=shift)) { s/ *$/; s/ +/ @ /g; exec "bin/@", $_ . " ? welcome"; } else { exec "bin/?", "welcome"; }
00:49:44 <oerjan> oops
00:50:03 <elliott> i blame perl
00:50:12 <Phantom_Hoover> i blame knit
00:50:13 <oerjan> `run sed -i 's!;!/;!' bin/welcome
00:50:16 <HackEgo> No output.
00:50:22 <oerjan> `cat bin/welcome
00:50:25 <monqy> registrent was mysteries, registered domain by progxy
00:50:25 <HackEgo> ​#!/usr/bin/perl -w \ if (defined($_=shift)) { s/ *$//; s/ +/ @ /g; exec "bin/@", $_ . " ? welcome"; } else { exec "bin/?", "welcome"; }
00:50:36 <oerjan> `welcome oerjan
00:50:39 <HackEgo> oerjan: 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:43 <oerjan> `welcome oerjan
00:50:47 <HackEgo> oerjan: 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:50 <oerjan> `welcome oerjan oerjan
00:50:53 <shachaf> I never got welcomed in here. :-(
00:50:54 <HackEgo> oerjan: oerjan: 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:51:00 <oerjan> `welcome shachaf
00:51:04 <HackEgo> shachaf: 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:51:16 <shachaf> oerjan++ # has a heart. unlike some people in this channel
00:51:49 <elliott> `unwelcome shachaf
00:51:52 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: unwelcome: not found
00:52:45 <shachaf> elliott has a negative heart.
00:54:01 <elliott> kill the planet
00:56:00 <elliott> is the planet dead yet
00:56:04 <elliott> update on planet mortality???
00:56:55 <Phantom_Hoover> Sam Hughes probably isn't up at this hour.
00:56:56 <monqy> very dead
00:56:59 <oerjan> <kallisti> well, zzo38 and I are going to go invent a language with at least 20 pronouns <-- check out the bantu language family
00:57:10 <oerjan> not quite 20 maybe, but...
00:57:24 -!- zzo38 has quit (Quit: My internet will be down for a few hours today for maintenance. If that happen, try again in the next day.).
00:57:32 <shachaf> Phantom_Hoover: It depends on which one.
00:57:35 <kallisti> oerjan: 5 pronouns will be for the previously used pronouns
00:57:42 <kallisti> so as new things are reffered to by pronouns
00:57:47 <Phantom_Hoover> shachaf, the important one.
00:57:58 <kallisti> the old ones move further up in the pronoun queue
00:58:31 <oerjan> and also sign language iirc
01:00:49 <elliott> shachaf: Do you remember The Good Old Hpaste?
01:00:58 * elliott has decided to be nostalgic about hpaste tonight.
01:01:10 <shachaf> elliott: I remember that hpaste!
01:01:17 <shachaf> Didn't sorear write it?
01:01:25 <elliott> All I remember was it was hosted on moonpatio.
01:01:30 <shachaf> It had so many good pastes taht are now lost in the mists of time.
01:01:32 <elliott> Dot something (net?).
01:01:48 <elliott> I seem to remember it actually went through two incarnations, at least I remember it suddenly getting a fancier design at one point.
01:02:47 * elliott tries to remember the URL to Web Archiveify it.
01:03:06 <elliott> Ah, moonpatio.com:8080/fastcgi/hpaste.fcgi
01:03:27 <elliott> "We were unable to get the robots.txt document to display this page."
01:03:30 <shachaf> Wasn't that just an interim hpaste?
01:03:43 <elliott> I think archive.org have, at some point along the line, forgotten that they're meant to be archiving sites that might die.
01:04:01 <elliott> shachaf: Maybe?
01:05:59 -!- pikhq has joined.
01:06:04 <shachaf> shachaf : Maybe ?
01:06:38 <shachaf> I'm going to assume that's a combination of Haskell, Agda, and Miranda.
01:06:49 <elliott> Did Miranda have a ? type or something?
01:06:49 * Sgeo is tempted to use Data.Has
01:07:50 <monqy> what is has
01:08:14 <elliott> dont monqy dont
01:08:17 <elliott> you wont recover
01:08:20 <elliott> its not for human
01:08:28 <shachaf> elliott: Oops, I was confusing ? with *.
01:08:37 -!- pikhq_ has quit (Ping timeout: 252 seconds).
01:09:00 <shachaf> Miranda's *** notation was the best thing.
01:09:09 <shachaf> Did you hear my exciting proposal for type class polymorphism?
01:09:26 <shachaf> foo :: Num -> Num -> Num ==> foo :: Num a => a -> a -> a
01:09:48 <shachaf> foo :: Num -> NumNum -> Num ==> foo :: (Num a, Num b) => a -> b -> a
01:09:55 <elliott> <shachaf> Miranda's *** notation was the best thing.
01:09:59 <elliott> Elaborate so I don't have to Google.
01:10:14 <elliott> Also, you shouldn't have to specify NumNum like that.
01:10:19 <elliott> foo :: Num -> Num -> Num
01:10:20 <elliott> ==>
01:10:20 <shachaf> elliott: In Miranda, you'd say map :: (* -> **) -> [*] -> [**]
01:10:27 <elliott> foo :: (Num a, Num b, Num c) => a -> b -> c
01:10:34 <elliott> *except* that if two variables must be unified to make things work, they are, automatically.
01:11:00 <elliott> shachaf: Finally we're rid of the horrible impurity of the alphabet.
01:11:10 <monqy> finally in the past
01:11:15 <shachaf> elliott: Is this some competition for who can make the worst proposal?
01:11:47 <elliott> Yes.
01:12:13 <shachaf> elliott: To be fair, Haskell's solution of "uppercase/lowercase" is also kind of horrible.
01:12:32 <shachaf> Why does Haskell have implicit quantification, anyway? Implici quantification is the root of all evil.
01:12:48 -!- pir^2 has joined.
01:12:59 <shachaf> converse::(*->**->***)->**->*->***; converse f a b = f b a
01:13:10 <elliott> shachaf: Do you remember that guy on #haskell who claimed that leaving out the "forall"s made a huge difference because it's, like, so much easier to teach, and it has more meaning because you're talking directly about variables in the metalanguage, rather than reducing it to an internal abstraction, or something?
01:13:17 <elliott> That was WILD.
01:13:23 <pir^2> Does anyone here know what is supposed to happen if you < on the leftmost cell in BF?
01:13:33 <shachaf> elliott: No, I don't remember that.
01:13:37 <elliott> (They didn't actually say most of those things, but I can't remember what they actually said because it was too weird to remember.)
01:13:48 <elliott> pir^2: It's not standard.
01:14:00 <elliott> pir^2: A program that does that is broken.
01:14:04 <elliott> Generally.
01:14:12 <elliott> Most implementations only do a right-infinite tape (if that).
01:14:14 <pir^2> ok
01:14:29 <pir^2> So ignoring it is OK?
01:14:52 * Sgeo is tempted to use Data.Has to solve his problems
01:14:59 <monqy> again?
01:15:10 <elliott> pir^2: Sure.
01:15:10 -!- Nisstyre has quit (Ping timeout: 252 seconds).
01:15:19 <elliott> Hey guys, I think Sgeo is tempted to use Data.Has.
01:15:32 * shachaf Data.Has no idea what that is.
01:15:40 <elliott> I think Sgeo is also tempted to say that repeatedly in #esoteric until someone is sufficiently caught off-guard to be silly enough to try and talk him out of it.
01:15:51 <Sgeo> Oh, didn't remember that I said it before
01:15:54 <shachaf> module Data where data Has = Has `Has` Has
01:15:57 <shachaf> import Data (Has)
01:15:58 -!- MDude has quit (Ping timeout: 240 seconds).
01:16:07 <monqy> Sgeo: 17:06:47 * Sgeo is tempted to use Data.Has
01:16:08 * shachaf `Data.Has` no idea
01:16:50 <monqy> and mere minutes later
01:16:53 <monqy> 17:14:50 * Sgeo is tempted to use Data.Has to solve his problems
01:17:17 <monqy> I still don't even know what it is
01:17:26 <Sgeo> http://chrisdone.com/posts/2010-11-22-duck-typing-in-haskell.html
01:17:33 <monqy> no
01:17:34 <monqy> no
01:17:34 <monqy> no
01:17:38 <monqy> domnt
01:17:40 <monqy> duckt ype
01:17:47 * shachaf away
01:18:07 <monqy> im not even going to rtead that im just going to shout at y ou
01:18:10 <monqy> until you
01:18:11 <elliott> monqy: I suggest smiling and letting Sgeo dig himself into the hole that is http://hackage.haskell.org/packages/archive/has/0.5.0.1/doc/html/Data-Has.html rather than trying to prematurely explain to him why it's a terrible idea.
01:18:11 <monqy> make it stop
01:18:16 <elliott> (This is because he won't listen.)
01:18:23 <monqy> ok
01:18:24 <monqy> i;ll
01:18:27 <monqy> let sgeo holdeig
01:18:28 <Sgeo> I don't think it really is duck typing
01:18:35 <monqy> and then he;ll not notice the hole, amyBE?
01:18:42 <monqy> and
01:18:53 <Sgeo> What's the name for the thing that Scala has? I think it's like that
01:18:56 <Sgeo> structural typing?
01:18:59 <elliott> shit
01:20:07 <kmc> l o l s
01:21:23 <elliott> HEY GUYS DO YOU WANT TO HEAR A JOKE
01:21:24 <elliott> scala
01:21:32 <monqy> ha
01:21:32 <monqy> ha
01:21:33 <monqy> ha
01:21:59 <monqy> good thing i don't know scala so i don't get it (thumbs up)
01:22:02 <Sgeo> I just mention it because structural typing seems like a more accurate description for Data.Has than Duck typing
01:22:05 <kmc> Sgeo, "structural subtyping" is a thing
01:22:05 <kallisti> elliott: I think if given the opportunity I would elect to use Scala over Java
01:23:08 <kallisti> or maybe Clojure .
01:23:14 <elliott> https://github.com/ChickenProp/sysfuck hey someone reinvented psox except they actually wrote more than like ten lines of it and wrote a really irritating readme *thumbs up*
01:23:27 <elliott> oh it even involves nul bytes too
01:23:43 <monqy> I prefer the name psox over sysfuck
01:23:51 <kallisti> fuckfuck
01:23:54 <kallisti> good name
01:24:02 <monqy> fuckfuck is awful and whoever invented it is awful
01:24:11 <monqy> for inventing it
01:24:44 <elliott> what if its
01:24:44 <elliott> you
01:24:56 <monqy> but its not me,,,,,,,,,
01:24:58 <kallisti> but "knob arse cock knob butt" is such an endearing cat program
01:25:14 <oerjan> "Entiry based records. To use this module, you have to write LANGUGAGE pragma" <-- O KAY
01:25:48 <elliott> entiry
01:25:54 <elliott> langugage
01:26:04 <elliott> its entiry reasonable if you ask me
01:26:06 <elliott> ha ha ha ah ah
01:26:20 <Sgeo> sysfuck allows more access to stuff without having to write I-forget-what-I-called-them
01:26:51 <monqy> oh
01:26:58 <elliott> hyeres my "pee socks" extension language
01:27:00 <Sgeo> domains, I think
01:27:03 <elliott> you write a c program to stdout
01:27:05 <elliott> print a nul byte
01:27:10 <elliott> and its output gets connected to your stdin
01:27:13 <elliott> when it exits the whole thing loops
01:27:19 <elliott> completely extensible(tm)
01:27:24 <elliott> you can even write portable things
01:27:26 <CHeReP> monqy, hi
01:27:29 <elliott> by writing a program that figures out how to structure the program
01:27:30 <monqy> CHeReP: hi
01:27:32 <elliott> and using the result of that to write a new one
01:27:33 <CHeReP> i'am not a bot)
01:27:34 <elliott> magic(tm)
01:27:52 <kallisti> CHeReP: me too!
01:27:58 <CHeReP> cool)
01:28:01 <elliott> im ab ot
01:28:05 <elliott> fungot is bot
01:28:05 <fungot> elliott: trust me. this system is way cheaper. or that dirty dancing bad-apple my father forbids me to see. daily radar is on the same console, for the warrior? full.
01:28:11 <elliott> ^styl
01:28:12 <Sgeo> The Data.Has person at least got the LANGUAGE in the pragma right :/
01:28:12 <elliott> ^style
01:28:12 <fungot> Available: agora alice c64 ct darwin discworld europarl ff7 fisher fungot homestuck ic irc iwcs jargon lovecraft nethack pa* qwantz sms speeches ss wp youtube
01:28:26 <monqy> what if i was a bot
01:28:28 <monqy> and claimed not to be a bot
01:28:31 <CHeReP> why you dont sleep ?
01:28:33 <monqy> and got upset when anyone called me a bot
01:28:33 <kallisti> what if I wasn't a bot?
01:28:45 <Sgeo> But what I need is something like Data.Has except ... more competent.
01:28:50 <kallisti> what if I asked a what if question
01:28:51 <kallisti> then what?
01:28:52 <kallisti> what happens?
01:28:53 <kallisti> explain
01:28:55 <monqy> help
01:29:15 <elliott> Sgeo: what you need is a better design
01:29:15 <Sgeo> Data.Records won't compile on 7.x due to a stupid contraint on base
01:29:26 <kallisti> elliott: unpossible such no thing
01:29:40 <monqy> Sgeo: what are you even trying to do
01:29:53 <elliott> no monqy
01:29:55 <elliott> don't
01:29:58 <elliott> you never
01:29:59 <elliott> learn
01:30:06 <Sgeo> Deal with the hundreds of named global ... values in the AW SDK.
01:30:08 <monqy> is this the activeworlds bot for which you wanted an awful TH
01:30:15 <monqy> aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaah
01:30:29 <elliott> monqy:
01:30:32 <Sgeo> Only some of which are initialized on any given event handler or callback
01:30:34 <elliott> you need to
01:30:36 <elliott> become more street-wise
01:30:46 <Sgeo> And only some of which need to be set when calling certain functions
01:30:47 <monqy> street wise killed my parents
01:31:11 <Sgeo> Suppose I have two events that set similar sets of attributes
01:31:26 <kallisti> I wonder how awkward talking about brianfuck in a job interview would be
01:31:34 <kallisti> because it requires you to use PROFANE LANGUAGE.
01:31:36 <Sgeo> And I want a function that takes some of those attributes and gives me a higher-level wrapper
01:31:43 <Sgeo> erm, just a record, whatever
01:31:57 <kmc> most jobs i've interviewed for, nobody would give a fuck
01:32:00 <Sgeo> But the events give slightly different data
01:32:09 <kallisti> kmc: well yeah
01:32:10 <elliott> nobody would give a
01:32:11 <elliott> ...
01:32:12 <elliott> ........
01:32:13 <elliott> .....................
01:32:15 <elliott> ............
01:32:15 <kallisti> brainfuck
01:32:16 <elliott> .......
01:32:16 <elliott> ...
01:32:18 <elliott> fuck
01:32:18 <elliott> you
01:32:31 <elliott> you ruined EVERYTHING
01:32:43 <kallisti> that's okay it's okay.
01:32:46 <elliott> no
01:33:03 <monqy> Sgeo: i have NO IDEA what you just said
01:33:20 <monqy> none 0
01:33:26 <Sgeo> In the AW SDK, there are a bunch of "attributes"
01:33:31 <monqy> ok
01:33:34 <elliott> stop stop ostooop
01:33:37 <Sgeo> Retrieved with functions like aw_int(SOME_ATTRIBUTE);
01:33:49 <monqy> ok
01:33:49 <Sgeo> And set with things like aw_int_set(SOMEATTRIBUTE, 0);
01:33:54 <monqy> ok
01:34:01 <elliott> creys
01:34:19 <elliott> (crey is like cray but british)
01:34:31 <elliott> http://upload.wikimedia.org/wikipedia/commons/f/f8/Color_icon_gray_v2.svg mmmm grey
01:34:33 <Sgeo> Some events will, when the event handler is run, give data to the event handler by setting attributes
01:34:39 <Sgeo> Same with callbacks.
01:34:56 <Sgeo> (That's the only way data gets to the event or callback)
01:35:01 <monqy> what is a
01:35:02 <monqy> data
01:35:03 <monqy> event
01:35:04 <monqy> handler
01:35:06 <monqy> callback
01:35:15 <kallisti> monqy is bad at programming.
01:35:15 <elliott> NO
01:35:15 <monqy> attributes
01:35:16 <elliott> I FORBID IT
01:35:20 <elliott> I FORBID
01:35:21 <elliott> THE QUESTIONING
01:35:30 <kmc> data event handler callback factory visitor
01:35:37 <Sgeo> attributes are the things retrieved with aw_int() and set with aw_int_set()
01:35:39 <kallisti> monqy: attributes are global variables in this case, pretty much.
01:35:43 * elliott slams channel into brick wall repeatedly
01:35:43 <Sgeo> (Or variations for different types)
01:35:59 * elliott douses channel in fire
01:36:25 <kallisti> an attribute in a Haskell wrapper of this would basically be like an IORef
01:36:42 * elliott throws channel into sea
01:36:47 <elliott> (the channel is still on fire)
01:36:57 <elliott> (fire remains even in sea)
01:37:00 <kallisti> ah help I am burning-drowning
01:37:15 <Sgeo> Event handlers can be set for events that occur in Active Worlds. The event handler is a function pointer. The function receives 0 arguments. When the event has data associated with it (say, the name of someone who is now nearby), that's retrieved from an attribute.
01:37:26 <elliott> kallisti: YOU ARE RESONPONSIBLE
01:37:28 <elliott> EVERYONE IS RESPONSIBLE
01:37:36 -!- Nisstyre has joined.
01:37:52 * elliott rescues fungot from burndrowning channel
01:37:53 <fungot> elliott: son, i did not drive three hundred miles and put on this fancy suit to listen to this, but just so we're clear, are we married in the real world. i can do for you.
01:37:56 <kallisti> Sgeo: this pretty much sounds like things that are already solved by the IO monad.
01:38:04 <kmc> haha
01:38:15 <elliott> yes fungot. we're married in the real world now
01:38:16 <fungot> elliott: and then say says, " well he's got dvd and backwards compatibility!"
01:38:16 <kmc> you forgot the word "trivial"
01:38:20 <Sgeo> kallisti, for some reason, I really, really, really, do not want to make a literal thin wrapping of this.
01:38:30 <elliott> really really really really
01:38:30 <kallisti> Sgeo: oh, well that will be difficult
01:38:32 <monqy> Sgeo: so what do you want?
01:38:32 <elliott> really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really re
01:38:33 <elliott> ally really really really really really really really really really really really really really really really
01:38:37 <elliott> really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really re
01:38:39 <elliott> ally really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really real
01:38:39 <Sgeo> monqy, something thread-safe
01:38:44 <elliott> ly really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really
01:38:46 <monqy> anything?
01:38:48 <kallisti> Sgeo: but you know there's probably not an easy way to make it pure right
01:38:49 <elliott> really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really
01:38:50 <kmc> global lock global lock global lock global lock global lock global lock global lock global lock
01:38:53 <elliott> wow pretty really patterns
01:38:55 <elliott> really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really re
01:39:00 <elliott> ally really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really real
01:39:05 <elliott> ly really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really
01:39:10 <elliott> really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really r
01:39:12 <kallisti> oerjan: hi new spam record soon
01:39:15 <elliott> eally really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really real
01:39:19 <elliott> wow
01:39:21 <elliott> ok that is enough really
01:39:23 <elliott> glock
01:39:25 <elliott> i hear that kmc guy has a great package for global locks
01:40:10 <Sgeo> I'm almost seriously considering passing an STM block to the thing that will set event handlers in my wrapper, and getting the values I want in there.. no, that's not really safe, might get values that the event doesn't set
01:40:28 <kallisti> Sgeo: you should make
01:40:29 <kallisti> thin
01:40:31 <kallisti> IO wrapper
01:40:39 <kallisti> papery wrapper over delicious candy mmmm
01:40:53 <kallisti> (except instead of delicious candy it's some shitty game)
01:40:55 <elliott> socrates was a real gangster. we need more role models like him in today's facebook 2.0 world
01:41:05 <kallisti> elliott: I'm agree.
01:41:08 <kmc> i have a bad package for global locks because I couldn't figure out a better way :/
01:41:10 <kallisti> not enough fly G's
01:41:33 <Sgeo> kmc, I am planning to use a global lock, but users of the library (probably just me) shouldn't have to worry about that
01:41:37 <elliott> i remember looking at kmc's package for global locks and going "ha ha ha it only supporst one global lock" and then putting on sunglasses and riding off into the sunset on my flying car
01:41:43 <elliott> well at least the laughing part
01:41:47 <kmc> haha
01:42:00 -!- ChanServ has set channel mode: +q *!*@unaffiliated/elliott.
01:42:01 <kallisti> elliott: socrates was all like "yo dawg I'ma make you question yo mothafuckin' belief structure." and people were all like "shiiiiiiiit"
01:42:09 <monqy> rip elitoe
01:42:18 -!- elliott has left.
01:42:19 <kmc> well yeah the library is kind of a template for copying into your own library that needs a global lock
01:42:20 -!- elliott has joined.
01:42:28 -!- elliott has left.
01:42:28 <kmc> (as it say in the docs)
01:42:29 -!- elliott has changed nick to eliyt.
01:42:31 -!- eliyt has joined.
01:42:41 <kallisti> hi eily
01:42:43 <kallisti> t
01:42:43 <kmc> i couldn't think of a good way to support several of them
01:42:55 <monqy> Sgeo: why do you want a global lcoke,,,whaymre,,,whey,,,,,,
01:43:09 -!- eliyt has left.
01:43:09 -!- eliyt has changed nick to FVCK_THE_POLICE.
01:43:11 -!- FVCK_THE_POLICE has joined.
01:43:14 <kmc> it's all really just a workaround for a bug that was fixed in GHC 7.4
01:43:19 -!- FVCK_THE_POLICE has left.
01:43:24 <Sgeo> monqy, to stop one thread setting attributes while another is trying to read them, and similar oddities
01:43:25 -!- FVCK_THE_POLICE has changed nick to OERJAN_IS_SUCK.
01:43:26 -!- OERJAN_IS_SUCK has joined.
01:43:34 -!- OERJAN_IS_SUCK has left.
01:43:38 -!- OERJAN_IS_SUCK has changed nick to UNQUIET_OR_DIE.
01:43:40 -!- UNQUIET_OR_DIE has joined.
01:43:49 -!- UNQUIET_OR_DIE has left.
01:43:55 -!- UNQUIET_OR_DIE has changed nick to OVERTHROW_FASCIS.
01:43:58 -!- OVERTHROW_FASCIS has changed nick to KILL_FASCIST_OPS.
01:44:00 -!- KILL_FASCIST_OPS has joined.
01:44:27 <monqy> and you can't do that in anay beter way than a global locckck
01:45:00 <kmc> yeah i spent a while on this
01:45:13 <Sgeo> monqy, I can, actually. Make a lock when I initialize the library, and have the user pass that around as needed, which shouldn't actually be that often
01:45:17 <kallisti> Sgeo: oh yeah you could maybe have the attributes as STRefs
01:45:24 <kmc> Sgeo, and then they initialize it twice?
01:45:46 <monqy> Sgeo: lock monad (no dont ((pelase)
01:45:55 <kmc> i would ask #haskell how to make a global lock, and they'd be horrified and tell me there must be a better way
01:45:55 <Sgeo> kallisti, wait what?
01:45:56 -!- reallyq has joined.
01:45:57 <reallyq> really really really really really really really really
01:45:57 <reallyq> really really really really really really really really
01:45:57 <reallyq> really really really really really really really really
01:45:57 <reallyq> really really really really really really really really
01:45:58 <reallyq> really really really really really really really really
01:45:59 <reallyq> really really really really really really really really
01:46:00 <reallyq> really really really really really really really really
01:46:01 <reallyq> really really really really really really really really
01:46:02 <reallyq> really really really really really really really really
01:46:03 <reallyq> really really really really really really really really
01:46:04 <reallyq> really really really really really really really really
01:46:05 <reallyq> really really really really really really really really
01:46:06 <reallyq> really really really really really really really really
01:46:06 <kallisti> Sgeo: >_> use STrefs
01:46:07 <reallyq> really really really really really really really really
01:46:08 <reallyq> really really really really really really really really
01:46:09 <reallyq> really really really really really really really really
01:46:10 <reallyq> really really really really really really really really
01:46:11 <reallyq> really really really really really really really really
01:46:11 <kmc> and then nobody could give me one
01:46:12 <reallyq> really really really really really really really really
01:46:13 <reallyq> really really really really really really really really
01:46:14 <reallyq> really really really really really really really really
01:46:15 <reallyq> really really really really really really really really
01:46:16 <reallyq> really really really really really really really really
01:46:17 <reallyq> really really really really really really really really
01:46:18 <reallyq> really really really really really really really really
01:46:19 <reallyq> really really really really really really really really
01:46:20 <reallyq> really really really really really really really really
01:46:20 <monqy> hi
01:46:21 <reallyq> really really really really really really really really
01:46:22 <Sgeo> kallisti, I didn't even know STRefs could be used like that
01:46:22 <reallyq> really really really really really really really really
01:46:22 <kallisti> reallyq: hi
01:46:23 <reallyq> really really really really really really really really
01:46:24 <reallyq> really really really really really really really really
01:46:24 <monqy> `welcome reallyq
01:46:25 <reallyq> really really really really really really really really
01:46:26 <reallyq> really really really really really really really really
01:46:27 <reallyq> really really really really really really really really
01:46:28 <reallyq> really really really really really really really really
01:46:28 <HackEgo> reallyq: 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
01:46:29 <reallyq> really really really really really really really really
01:46:30 <reallyq> really really really really really really really really
01:46:31 <reallyq> really really really really really really really really
01:46:32 <reallyq> really really really really really really really really
01:46:33 <reallyq> really really really really really really really really
01:46:34 <reallyq> really really really really really really really really
01:46:35 <reallyq> really really really really really really really really
01:46:36 <reallyq> really really really really really really really really
01:46:37 <reallyq> really really really really really really really really
01:46:38 <reallyq> really really really really really really really really
01:46:39 <Sgeo> Can they be?
01:46:39 <kallisti> Sgeo: as global mutable variables accessible within the STM monad? sure.
01:46:39 <reallyq> really really really really really really really really
01:46:40 <reallyq> really really really really really really really really
01:46:41 <reallyq> really really really really really really really really
01:46:42 <reallyq> really really really really really really really really
01:46:43 <reallyq> really really really really really really really really
01:46:44 <Sgeo> kallisti, wrong monad
01:46:44 <reallyq> really really really really really really really really
01:46:45 <reallyq> really really really really really really really really
01:46:46 <reallyq> really really really really really really really really
01:46:47 <reallyq> really really really really really really really really
01:46:48 <reallyq> really really really really really really really really
01:46:49 <reallyq> really really really really really really really really
01:46:50 <reallyq> really really really really really really really really
01:46:50 <kallisti> Sgeo: oh rite
01:46:51 <reallyq> really really really really really really really really
01:46:52 <reallyq> really really really really really really really really
01:46:53 <reallyq> really really really really really really really really
01:46:54 <reallyq> really really really really really really really really
01:46:54 <kallisti> Sgeo: the STM one
01:46:55 <reallyq> really really really really really really really really
01:46:56 <reallyq> really really really really really really really really
01:46:57 <reallyq> really really really really really really really really
01:46:58 <reallyq> really really really really really really really really
01:46:59 -!- ChanServ has set channel mode: +o ais523.
01:46:59 <reallyq> really really really really really really really really
01:46:59 <kallisti> Sgeo: TVar or whatever
01:47:00 <reallyq> really really really really really really really really
01:47:00 -!- ais523 has kicked reallyq User terminated!.
01:47:03 <kmc> i was working around thread-unsafety of http://hackage.haskell.org/packages/archive/repa-devil/0.1.2/doc/html/Data-Array-Repa-IO-DevIL.html
01:47:34 <Sgeo> Sure, I could do that, but I can't just grab the values of the TVars in the event handler
01:47:38 <kmc> which already has a custom monad and a function «runIL :: IL a -> IO a» that "guarantees the DevIL library has been initialized before you run functions on it"
01:47:50 <kmc> but, nothing prevents you from calling runIL from multiple threads
01:47:52 <kallisti> Sgeo: why not?
01:47:53 <kmc> so it's not safe
01:48:32 <Sgeo> kallisti, event handler starts running. Some other event handler starts running. Other event handler's STM block to grab stuff from attributes runs first. First event handler's data is now obliterated
01:48:56 <Sgeo> I could pass an STM block to retrieve values when setting the event handler, but that's somewhat ugly, I think
01:49:04 <kallisti> >_> it is? maybe I don't understand what's going on.
01:49:29 <kmc> if you have a global invariant like "no two threads can be in the DevIL library at once" then you need some global state
01:50:34 <kmc> for even suggesting that global state is the best solution to any problem, people will try to bite your head off
01:50:50 -!- ais523 has set channel mode: -o ais523.
01:50:53 <monqy> if only elliott was here to tell sgeo why he's wrong
01:50:56 <kmc> but i did not hear any plausible alternatives
01:51:06 <Sgeo> addEventHandler eventAvatarAdd (do a <- attribA; b <- attribB; return (a,b)) myHandler
01:51:06 <monqy> alternatively
01:51:34 <kmc> personally I think it's much better to have some hidden hax in a library, rather than exposing a thread-unsafe interface to every user
01:51:37 <monqy> if only elliott was here to tell me and kallisti to stop making sgeo say wrong things
01:52:06 <kallisti> Sgeo: I don't really understand the problem with using STM as it seems well-suited to preventing these kind of race conditiony things.
01:52:30 <kmc> wait, you're going to read C library state from a STM transaction?
01:52:54 <kmc> that's not going to work
01:52:54 <Sgeo> kallisti, well, what I just wrote isn't entirely type-safe... what if attribA isn't applicable to eventAvatarAdd?
01:53:27 <Sgeo> It also looks ugly
01:53:44 <Sgeo> Although I recently saw some other way to write it
01:54:21 -!- KILL_FASCIST_OPS has quit (Quit: bored of waiting for power-tripping to stop).
01:54:32 -!- MDude has joined.
01:54:56 <Sgeo> addEventHandler eventAvatarAdd (liftA2 (,) attribA attribB) myHandler
01:54:57 <Sgeo> I guess
01:55:16 <kmc> GHC's STM will do exactly nothing to prevent race conditions if some C library is modifying those variables
01:55:32 <kmc> you can't even read a C variable from a STM action without hax
01:55:53 <Sgeo> In theory, when I have the lock, the values shouldn't change
01:56:01 <Sgeo> So I can lock before the STM, unlock after it
01:56:04 <kmc> oh, so you're using STM *and* a global lock?
01:56:07 <Sgeo> Makes the STM a bit pointless perhaps, but
01:56:14 -!- ChanServ has set channel mode: -q *!*@unaffiliated/elliott.
01:56:34 <ais523> )
01:56:40 <ais523> * whichever op that was, I was about to do that ;)
01:56:48 <ais523> I wonder what's up with elliott today
01:57:05 <oerjan> the guy _really_ doesn't have the right attitude for getting quiets/bans quickly undone...
01:57:12 <oerjan> (was me, both ways)
01:57:30 <Sgeo> Although if some idiot user tries to write to attribA in the grabber thing, all bets are off
01:58:57 <kallisti> Sgeo: just use whatever concurrency abstraction the AW library uses?
01:59:26 <Sgeo> The AW library is meant for single-threaded use.
01:59:42 <kmc> because threads are a super advanced feature for wizards only
02:00:01 <kallisti> so then using TVars to modify the global state of a C library should be fine, yes?
02:00:11 <kallisti> if all the threaded participants are STMified.
02:00:26 <kmc> "using TVars to modify the global state of a C library"
02:00:29 <kmc> how do you even do that
02:00:33 <kallisti> no idea.
02:00:33 <kallisti> :P
02:00:57 <kallisti> well....
02:01:04 <kallisti> yeah I don't know.
02:01:08 <kmc> i think the answer is "unsafeIOToSTM"
02:01:10 <oerjan> and half this mess just because i hate losing my place in the backscroll...
02:01:11 <kmc> and that's /not going to work/
02:01:34 <kmc> because with GHC's implementation, the STM actions actually run at the same time
02:02:16 * kallisti thinks +qing elliott was probably justified.
02:02:20 <kmc> the illusion created by "atomically" is critically dependent on the fact that you're only reading and writing state within the STM universe
02:02:46 <monqy> kallisti: have fun with future elliott "read the logs good"
02:02:54 <kallisti> monqy: don't care.
02:03:01 <monqy> i too love fun
02:03:16 <kmc> i can't believe you're even debating whether it was justified to kick someone who was crapflooding and evading bans
02:03:43 <kallisti> kmc: I'm guessing using functions that return STM a is also not a good idea (in other words, removing TVars from the picture)
02:04:01 <kmc> i don't understand what you mean
02:04:03 <kallisti> that seems to basically give you nothing unless you somehow implement STM at the C level.
02:04:14 <Sgeo> The basic idea, even removing STM from the picture, no matter how "workable" is still ugly
02:04:22 <Sgeo> And not type-safe
02:04:41 <kmc> what problem is STM solving here
02:04:54 <kmc> it's not solving "prevent two Haskell threads from interacting with the C variables at the same time"
02:05:10 <kmc> (except by preventing them from interacting at all)
02:05:28 <Sgeo> kmc, I don't think it is
02:05:35 <Sgeo> (solving a problem)
02:05:45 <Sgeo> I could make my own structure for reading from attributes, I guess
02:05:47 <kmc> i agree
02:05:48 <kallisti> locks are good, use those.
02:05:50 <Sgeo> Would make more sense
02:05:52 <oerjan> * kallisti thinks +qing elliott was probably justified. <-- i _guess_ i should have checked if he'd stopped first
02:05:59 <Sgeo> But there's still the type-safety issue
02:06:03 <kallisti> oerjan: eventually, I'm sure.
02:06:05 * oerjan whistles guiltily
02:06:36 <oerjan> well i _did_ eventually, by which point he was already lashing out
02:07:47 <Sgeo> Should I worry about the type-safety thing to this degree?
02:07:55 <kmc> what's the type-safety issue
02:08:02 <kallisti> oerjan: but the fact that he's a regular and might stop eventually doesn't really excuse spamming the channel. Also the fact that you didn't ban a new person once who was spamming does not magically make all future spam by anyone valid (or at least it shouldn't)
02:08:44 <Sgeo> AW_EVENT_AVATAR_ADD doesn't particularly define AW_OBJECT_TYPE, so why should I be able to attempt to access the AW_OBJECT_TYPE attribute when I get an AW_EVENT_AVATAR_ADD event?
02:09:46 <kmc> it's already too low-level if the user-specified callbacks have to explicitly "read attributes"
02:09:59 <kmc> the wrapper should read all the defined attributes and pass them as arguments or in a record
02:10:24 <Sgeo> Well, all the records defined for the event, right?
02:10:36 <kmc> ?
02:10:44 <Sgeo> err, all the attributes
02:10:48 <kmc> yes
02:11:04 <kmc> you make a record for each event type, with a field for each attribute defined by that event
02:11:27 <Sgeo> The set of attributes that AW_EVENT_OBJECT_ADD and AW_EVENT_OBJECT_CLICK define, for example, largely overlap.
02:11:43 <kmc> sure
02:11:46 <Sgeo> I want to make an AWObject data type, that can read these records
02:12:05 <Sgeo> But if I want it to be able to pull from both AW_EVENT_OBJECT_ADD and AW_EVENT_OBJECT_CLICk
02:12:08 <Sgeo> That's a bit difficult
02:12:23 <kmc> why
02:12:39 <kmc> the record for ObjectAdd and the record for ObjectClick can both have an Object field
02:12:56 <Sgeo> I guess doing it like that is more work for me, but I guess I can
02:13:04 <kmc> yeah
02:13:08 <Sgeo> Write a thing to determine overlaps
02:13:10 <kmc> you'll have to write a bunch of boilerplate
02:13:11 <Sgeo> Try to come up with names
02:13:23 <kmc> how many event types are there
02:13:30 <Sgeo> 53.
02:13:36 <kmc> yeah
02:13:38 <Sgeo> I also have to deal with "callbacks"
02:13:44 <kmc> haskell is pretty boilerplatey
02:13:55 <kmc> moreso when interacting with foreign libraries
02:14:02 <Sgeo> Of which there are 37.
02:14:24 <Sgeo> I'm going to be writing scripts to write Haskell code for me, that's a given
02:14:38 <monqy> what sort of
02:14:39 <monqy> scripts
02:14:42 <Gregor> "ALERT: Police investigate intimidation near campus. Purdue University police are investigating a report of
02:14:45 <Gregor> intimidation with a knife in the area of Beering and Tower
02:14:47 <Gregor> drives. Avoid the area.
02:14:49 <Gregor> The suspects are described as a white male, 5-7 inches tall,
02:14:53 <Gregor> wearing a brown coat, and a white male with blonde hair and red
02:14:55 <Gregor> coat."
02:14:56 <kallisti> lol
02:14:57 <Gregor> Must've been a big knife.
02:15:07 <Sgeo> Going to read text files and generate code based on them
02:15:08 <kallisti> Gregor: it's an angry gnome
02:15:31 <Gregor> kallisti: Gnomes CAN be pretty intimidating.
02:15:44 <kallisti> yeah dude they'll fuck your shit UP.
02:15:53 -!- Phantom_Hoover has quit (Quit: Leaving).
02:16:43 <kallisti> Sgeo: so wait if you pass every relevant attribute to the event handler doesn't that mean that you have to lock all of the attributes whenever any of them are being read/written?
02:16:59 <Sgeo> kallisti, I just lock the global lock
02:17:11 <kallisti> so, yes?
02:17:18 <Sgeo> Yes
02:17:24 <kallisti> I guess that's fine..
02:17:48 <kmc> "no global locks are bad, do it another way" "like what?" *crickets chirping*
02:18:15 <Sgeo> kmc, if someone initializes the library twice, who knows what would happen, even with a global lock
02:18:25 <Gregor> It's a good thing they weren't blue.
02:18:27 <Sgeo> Unless I specifically block that from happening
02:18:32 <Gregor> I don't think I can deal with smurfs on campus.
02:18:34 <kallisti> well global locks are fine, but it seems a bit "wasteful" to lock every attribute whenever only one or two are needed.
02:18:51 <Sgeo> kallisti, efficiency isn't my main goal here.
02:19:11 <kallisti> well it's not really efficiency...
02:19:20 <kallisti> it's more like... good concurrency, I guess.
02:19:46 <kallisti> but given the limitations
02:19:50 <kallisti> I see nothing wrong with locks.
02:19:52 <kmc> Sgeo, the global lock can prevent them from initializing twice, no?
02:20:11 <Sgeo> The global lock is going to be unlocked most of the time
02:20:30 <kmc> you can hold the lock during initialization
02:20:41 <kmc> and also have another bit of global state that says "was the library already initialized"
02:20:45 <kmc> (this can be just a C global variable)
02:21:01 <Sgeo> I'm not about to start writing C code for this.
02:21:08 <kmc> what
02:21:26 <kmc> a C global variable is one line of code
02:21:29 <kmc> come on
02:21:37 <kallisti> Sgeo: wait isn't AW like a networky thing or something?
02:21:38 <Sgeo> One line of code... where?
02:21:54 <kmc> Sgeo, you're building your library with Cabal, right?
02:22:12 <Sgeo> kallisti, yes. It's against the TOS to try to connect outside of the SDK. And I have no idea what the protocol is like anyway.
02:22:24 <Sgeo> kmc, I kind of figured I could deal with that later >.>
02:22:28 <kmc> ok
02:22:37 <kmc> well deal with it now, and including C code becomes very easy
02:22:41 <kmc> https://github.com/kmcallister/global-lock/blob/master/global-lock.cabal#L34
02:22:52 <Sgeo> kmc, why can't I just make the global variable in Haskell?
02:22:59 <kmc> how
02:22:59 <Sgeo> Like I currently am doing with the global lock?
02:23:03 <Sgeo> unsafePerformIO
02:23:07 <kallisti> IORef dawg
02:23:20 <kmc> Sgeo, are you planning to use it on GHC before 7.4?
02:23:27 <Sgeo> o.O yes why
02:23:29 <kmc> http://mainisusuallyafunction.blogspot.com/2011/10/thunks-and-lazy-blackholes-introduction.html
02:23:58 <kmc> tl;dr is "GHC < 7.4 has a bug where top-level unsafePerformIO will sometimes happen twice"
02:24:43 * Sgeo shoots self
02:24:51 <kmc> yeah that was basically my reaction
02:24:51 <oerjan> <Gregor> I don't think I can deal with smurfs on campus. <-- i bet their blue color contains chromium.
02:25:01 <kmc> shoots self, then writes long blog post
02:25:15 <Sgeo> Can I just include your global-lock thing?
02:25:49 <kmc> yes
02:26:11 <kmc> either just import the library, or copy the code in
02:26:26 <kmc> in the former case it's really a *global* lock; other libraries which use it will also be locked out
02:26:51 <kmc> the description of how it works is here: http://mainisusuallyafunction.blogspot.com/2011/11/global-locking-through-stableptr.html
02:27:41 <Sgeo> It works on Windows, right?
02:28:39 <kmc> i think so
02:28:44 <kmc> i haven't tested it on windows
02:29:08 <kmc> it requires that your C compiler is GCC 4.1 or newer
02:29:18 <kmc> which I think is true for Cabal builds on Windows, but I wouldn't know
02:34:00 <kallisti> oh so that's why GHC's C output has so many z's everywhere.
02:34:44 <kallisti> I thought GHC waz juzt trying to be cool
02:42:03 <oerjan> zat zoo
02:46:44 -!- sebbu2 has changed nick to sebbu.
02:58:11 -!- pikhq_ has joined.
02:58:42 <kmc> haha
02:58:49 <kmc> ghcizzle fo shizzle
02:59:27 -!- pikhq has quit (Ping timeout: 252 seconds).
03:19:25 -!- zzo38 has joined.
03:33:41 -!- MDude has quit (Ping timeout: 240 seconds).
03:41:56 <tswett> Lessee. Rubber will be #, metal will be space, copper and zinc will be + and -. Then I guess arsenic and boron can be , and ., and finally holes and electrons can be... ^ and *, why not.
03:42:46 <tswett> That is definitely something that makes sense without context.
03:48:42 * Sgeo is thinking game
03:54:57 <oerjan> space is a metal
04:05:55 <kmc> space is a metal *huge bongrip*
04:06:24 <kmc> sounds like an esolang based on (or themed around) an abstract simulation of semiconductors
04:06:39 <kmc> i suppose holes and electrons as + and - is too obvious?
04:11:05 <tswett> That's precisely what it is. An esolang based on an abstract simulation of semiconductors.
04:11:25 <tswett> I figured + and - should definitely be zinc and copper. Since, y'know, zinc and copper are terminals.
04:11:51 <tswett> Those symbols are usually written on the terminals, not on the particles themselves. }:)
04:14:11 -!- MDude has joined.
04:14:35 -!- primo_ has joined.
04:15:39 <tswett> http://pastebin.com/D0UyfE2F - I'm sort of ashamed to have written this.
04:16:01 -!- primo has quit (Ping timeout: 245 seconds).
04:22:11 <kmc> what role do zinc and copper play here
04:22:26 <kmc> i'm guessing As and B are dopants
04:28:02 <tswett> Yeah. Zinc and copper are electrodes; they carry a constant charge.
04:29:15 <tswett> To be precise, zinc and copper only admit electrons and holes, respectively, and when an electron moves off of zinc, it leaves a copy behind, and likewise for holes and copper.
04:30:06 -!- MDude has changed nick to MSleep.
05:24:44 -!- pir^2 has quit (Quit: I found a *real* proof, it's just too long to fit in the quit message. --Fermat).
05:43:29 <monqy> i like the new spambot
05:43:32 <monqy> [http://wikispambot.com best seo software]
06:35:29 -!- Patashu has quit (Ping timeout: 260 seconds).
06:49:20 -!- pikhq has joined.
06:49:41 -!- pikhq_ has quit (Ping timeout: 252 seconds).
06:54:30 -!- primo_ has quit (Read error: Connection reset by peer).
06:55:04 -!- GreaseMonkey has quit (Quit: The Other Game).
06:55:29 -!- primo has joined.
07:01:14 -!- Klisz has quit (Quit: SLEEP, GLORIOUS SLEEP).
07:11:08 -!- Vorpal has joined.
07:24:56 -!- oerjan has quit (Quit: Good night).
07:38:43 -!- azaq23 has quit (Quit: Leaving.).
07:47:01 <zzo38> OK! No!
08:02:29 -!- itidus21 has joined.
08:03:22 <zzo38> How exactly does Eilenberg-Moore category work?
08:04:19 <kmc> tswett, huh, does that make sense physically?
08:04:28 <kmc> the idea is that each one is wired to one end of a battery?
08:09:04 -!- zzo38 has quit (Remote host closed the connection).
08:41:04 <augur> fizzie: ping
08:50:25 <ais523> sorry, mischan
08:57:36 -!- Phantom_Hoover has joined.
09:19:20 -!- Ngevd has joined.
09:20:10 <Ngevd> Hello!
09:22:22 <ais523> hi
09:23:25 -!- Taneb has joined.
09:27:00 -!- Ngevd has quit (Ping timeout: 248 seconds).
09:29:12 -!- Taneb has changed nick to Ngevd.
09:30:12 -!- Patashu has joined.
09:54:27 -!- Taneb has joined.
09:55:28 -!- Ngevd has quit (Ping timeout: 252 seconds).
10:00:00 -!- Taneb has quit (Ping timeout: 244 seconds).
10:00:53 -!- Taneb has joined.
10:06:27 -!- Taneb has quit (Read error: Connection reset by peer).
10:06:59 -!- Ngevd has joined.
10:26:08 <Sgeo> "Janeway: Sorry. I'm not a nerdy Trekkie like you."
10:26:11 <Sgeo> http://fiveminute.net/voyager/fiver.php?ep=yearofhell
10:32:15 <Phantom_Hoover> Have I mentioned how annoying it was when the very first 5-minute DS9 spoiled the finale of the 6th season and one of the subplots of the 7th.
10:33:16 <Sgeo> o.O
10:35:06 <Sgeo> They all reference future episodes
10:35:20 <Sgeo> The early TNG ones make constant reference to Yar dying
10:39:45 <Sgeo> http://www.fiveminute.net/voyager/fiver.php?ep=threshold
10:40:10 <kmc> http://twitter.com/tng_s8
10:43:09 <Sgeo> "Guinan invents an amazing new "single level" chess."
10:56:07 -!- ais523 has quit (Ping timeout: 240 seconds).
11:20:30 -!- monqy has quit (Quit: hello).
11:24:09 -!- pikhq_ has joined.
11:24:11 -!- pikhq has quit (Ping timeout: 240 seconds).
11:35:54 -!- zzo38 has joined.
11:36:11 <zzo38> When will they invent Vatican III?
11:46:32 -!- oklopol has quit (Ping timeout: 248 seconds).
11:55:16 <itidus21> Sgeo: i have imagined that you could fold a chessboard onto one long strip and make it function using strange adhoc rules much like ptolemy's astronomy manages to work
11:55:49 <itidus21> it would be awfully weird though
11:56:09 <Sgeo> As in functioning essentially identically to regular chess rules?
11:56:15 <Sgeo> Sounds interesting
11:56:32 <itidus21> exactly the same rules, just a different board presentation
11:57:10 <Sgeo> I thought you were thinking "A queen on square XYZ can move here, or here, or leap N amount" etc.
11:58:33 <itidus21> one long strip like RNBQKBNRPPPPPPPP????????????????????????????????PPPPPPPPRNBQKBNR
11:59:18 <itidus21> Sgeo: what you thought i was thinking was more inventive than what i was actually thinking. similar to misheard lyrics
11:59:41 <itidus21> in this way, knowing what i actually meant is detrimental
11:59:45 <zzo38> Actually, I managed to make a chess variant that functions on one strip but the same as normal chess
11:59:53 <zzo38> I did that many years ago
12:01:18 <zzo38> http://www.chessvariants.org/index/msdisplay.php?itemid=MSeeeeeeeeeeeeee ("This game is supposed to be as different from chess as possible while still being the same as chess.")
12:05:13 <zzo38> What was yours ideas?
12:05:46 <itidus21> lol.. my idea was to maintain the logic of 2d squares just shifting them into a line
12:06:12 <itidus21> as if to obfuscate the presentation of the state of the board
12:07:46 <zzo38> You could do something also making 3D board into 2D, which is then made into 1D, for example, too.
12:08:29 <zzo38> itidus21: I think I managed to do so, writing how they work in 1D in the article I linked. But there is fire in between each row
12:08:53 <zzo38> So, the fire will restrict some moves as they are supposed to be restrict
12:12:15 <itidus21> i see that 2d 64 square board could become a 4x4x4 3d board
12:12:45 <itidus21> that could be quite confusing
12:13:42 <itidus21> so in 4d it could be 4x4x2x2 eh
12:14:26 <Ngevd> 6d 2x2x2x2x2x2?
12:14:39 <itidus21> ya
12:14:56 <Phantom_Hoover> They're all just pale imitations of continuous chess.
12:15:04 <itidus21> king is at 1,1,1,1,1,1 moving to 1,1,1,0,1,1
12:15:21 <Ngevd> itidus21, that puts you into check
12:15:54 <itidus21> hmm i wonder if such a move is even valid
12:16:21 <itidus21> i see what i did there
12:16:27 <itidus21> i just counted the squares in binary :-s
12:18:11 <itidus21> zzo38: my idea has died. ill have a look at your chess variant
12:23:30 <itidus21> It's Wacky.
12:26:44 -!- Ngevd has quit (Ping timeout: 244 seconds).
12:26:47 <zzo38> Yes.
12:41:57 -!- Ngevd has joined.
13:01:54 <Ngevd> > flip id (join (.)) (ap (.) (flip id (ap (.) (join (.))) (join (.)))) (+1) 0
13:01:59 <lambdabot> mueval: ExitFailure 1
13:02:00 <lambdabot> mueval: Prelude.undefined
13:03:35 <Sgeo> itidus21, how has your idea died?
13:04:15 <itidus21> interest faded
13:11:38 -!- augur has changed nick to lagrangian.
13:11:59 -!- lagrangian has changed nick to augur.
13:17:05 <kallisti> what vcs do you guys use while programming your own stuff?
13:17:22 * kallisti has decided he needs to be using VCS while programming to avoid rewriting code all the time.
13:17:33 <Deewiant> git
13:18:20 <kmc> git
13:18:22 <Ngevd> VCS?
13:18:36 <kmc> using version control is incredibly important
13:18:50 <kmc> git will help your workflow in a hundred different ways
13:18:56 <kmc> it's not just for committing code to push upstream
13:19:15 <kmc> it's an integral part of development
13:19:30 -!- Ngevd has quit (Quit: Goodbye).
13:29:08 -!- kmc has quit (Quit: Leaving).
13:51:37 -!- kmc has joined.
13:54:25 <itidus21> zzo38: to get down to the guts of the matter i don't understand what activity one is supposed to engage in during chess
13:55:11 -!- primo has quit (Read error: Connection reset by peer).
13:55:36 -!- primo has joined.
13:55:49 <zzo38> itidus21: The activity of the chess is to play the game of chess. And then win or lose or draw.
13:56:13 <itidus21> is it related to the reason that runners in an olympic sprint all sprint at once? the same action can be done of course without any other runners
13:56:45 <itidus21> and, a car race doesn't need more than 1 car on the road at one time
13:58:01 <zzo38> itidus21: It depend on what kind of car race it is. You could do running race and car race separately or simultaneously. In chess, you have to take turn.
13:58:47 <itidus21> so in running and car racing it is acknowledged that doing the action with others present changes the action in some way
13:59:52 <itidus21> so what does it mean, is difficult to say
14:01:29 <zzo38> itidus21: It might.
14:02:40 <itidus21> taken to extremes, its related to the idea of would life be worth living if you were the last human on earth
14:03:19 <itidus21> would X be worth doing if you were doing it alone
14:03:40 <itidus21> hmm .. runners train alone in order to race together :-?
14:03:58 <itidus21> but they also know that they're not the only ones training
14:04:16 -!- ais523 has joined.
14:05:18 -!- primo has quit (Read error: Connection reset by peer).
14:05:28 <itidus21> blahh
14:05:41 -!- primo has joined.
14:09:07 -!- pikhq_ has quit (Ping timeout: 248 seconds).
14:09:07 -!- pikhq has joined.
14:12:05 <zzo38> You can play solitaire game too. Including running by yourself for exercise or to time yourself or just in case you like to run a lot
14:12:29 <itidus21> hmmmm
14:12:35 <itidus21> i guess its all a matter of balance
14:13:57 -!- primo_ has joined.
14:16:04 -!- primo has quit (Ping timeout: 268 seconds).
14:21:08 -!- primo_ has quit (Ping timeout: 252 seconds).
14:21:25 -!- primo_ has joined.
14:28:33 -!- primo_ has quit (Read error: Connection reset by peer).
14:28:59 -!- primo_ has joined.
14:44:00 -!- primo__ has joined.
14:46:56 -!- primo__ has quit (Read error: Connection reset by peer).
14:47:06 -!- primo_ has quit (Ping timeout: 252 seconds).
14:47:11 -!- primo__ has joined.
14:55:45 <tswett> kmc: yeah, the idea is that zinc and copper are both stuck into lemons.
14:56:24 <ais523> tswett: potatoes work too
14:57:10 <Phantom_Hoover> Anything electrolytic works.
14:57:16 <Phantom_Hoover> Blood too, I guess.
14:58:15 <Phantom_Hoover> Vomit?
15:00:18 -!- myndzi has quit (Ping timeout: 252 seconds).
15:02:06 <zzo38> On the CLC-INTERCAL phlog: "captcha = completely automatic system to determine that the webmaster is an arsehole."
15:05:34 -!- Patashu has quit (Quit: MSN: Patashu@hotmail.com , Gmail: Patashu0@gmail.com , AIM: Patashu0 , YIM: patashu2 , Skype: patashu0 .).
15:10:19 -!- Ngevd has joined.
15:10:27 <Ngevd> Hello!
15:10:50 -!- myndzi has joined.
15:12:54 <ais523> hi¡
15:13:05 <tswett> hOLA,
15:13:32 <Ngevd> What's a [::]
15:13:39 <Ngevd> And who told tswett about Homestuck?
15:13:43 <tswett> Sgeo.
15:14:34 <Phantom_Hoover> Oh god, am I indirectly responsible for your Homestuck mania?
15:14:49 <Phantom_Hoover> @tell elliott THIS IS ALL YOUR THIRD-ORDER FAULT
15:14:49 <tswett> Phantom_Hoover: did you tell Sgeo about Homestuck?
15:14:49 <lambdabot> Consider it noted.
15:14:58 <tswett> And did elliott tell you about Homestuck?
15:15:09 <Phantom_Hoover> tswett, I said "Go read Homestuck." to him and he did
15:15:28 <tswett> If yes and yes, then... yes, elliott is responsible for the violent calamity that happened two minutes and twenty seconds ago.
15:15:30 <Ngevd> I found about Homestuck COMPLETELY INDEPENDANTLY
15:15:47 -!- Nisstyre has quit (Ping timeout: 240 seconds).
15:15:49 <Phantom_Hoover> And not so much that but I was really bored and I asked him if it was worth reading and he decided to read through again and get past the place he'd petered out around.
15:16:24 -!- primo_ has joined.
15:18:49 -!- primo__ has quit (Ping timeout: 248 seconds).
15:19:07 <zzo38> I made a gopher client for Windows (if you have UNIX, there is a lot of better programs you can use), there should be icon for the main window, I don't have any. Do you?
15:19:36 <olsner> a gopher, perhaps
15:19:52 <zzo38> olsner: Yes, but I don't have one
15:20:27 <Ngevd> Of course, my love of Homestuck and esoteric programming languages both go back to Murderous Maths books
15:20:47 <Phantom_Hoover> Ah, I remember those.
15:21:13 <Phantom_Hoover> I don't remember them having Homestuck or esolangs in them.
15:21:24 <Ngevd> Yes, but they have a website
15:21:39 <Phantom_Hoover> In fact, the former is chronologically impossible, unless Kjartan Poskitt is a time traveller.
15:21:39 <Phantom_Hoover> Ah, of course.
15:21:40 <Ngevd> Which contains a link to the Unnofficial Murderous Maths Forum
15:21:51 <Ngevd> Which contains a thread with a link to Irregular Webcomic
15:21:54 <Phantom_Hoover> I too have been induced to engage in things because both have a website.
15:21:57 <Ngevd> And here is where it diverges
15:22:22 <Ngevd> Irregular Webcomic leads to dangermouse.net and TVTropes
15:22:42 <Ngevd> Which lead to esoteric programming and Homestuck
15:23:10 <tswett> I guess I know Sgeo from here, so how do I know of the existence of here...
15:23:27 <tswett> Probably from Brainfuck's Wikipedia article.
15:23:32 <Phantom_Hoover> Oh my god Poskitt wrote the theme tune for SMart and Brum.
15:23:51 * Sgeo has no idea how he got here
15:24:01 <Phantom_Hoover> Oh my god I forgot how incredibly 90s the Murderous Maths website is.
15:24:32 <Ngevd> I remember SMart and Brum
15:25:25 <itidus21> quick question. is there a convention for implying subscript or superscript since it can't be typed here?
15:25:53 <tswett> Usually, we do what LaTeX does, and use ^ for supserscript and _ for subscript.
15:26:01 <itidus21> ah cool
15:26:31 -!- primo__ has joined.
15:26:31 -!- primo_ has quit (Read error: Connection reset by peer).
15:27:17 <itidus21> hmm... but what if a term has both a superscript and a subscript does superscript come first? like T^2_3
15:27:36 <itidus21> i guess it wouldn't be quite that easy
15:27:42 <tswett> Depends on what you're trying to say, I guess.
15:27:43 <zzo38> itidus21: At least in Plain TeX, it doesn't matter. I suggest writing it depending on what you meaning
15:27:58 <itidus21> if i want the 2 stacked on the 3
15:27:59 <zzo38> Such as, put the subscript first if the superscript is an exponent
15:28:16 <zzo38> But if the superscript is a component of the same thing, put superscript first.
15:28:21 <zzo38> Both ways result in same printout
15:28:30 <tswett> I'd usually interpret "T^2_3" as meaning something like "the third incarnation of the square of T", and "T_3^2" as "the square of the third incarnation of T".
15:28:42 <zzo38> LaTeX probably does the same
15:28:46 <itidus21> ah, at least it's not recursive :D
15:28:50 <itidus21> thats helpful
15:29:27 <itidus21> like at least it's not the subscript of the superscript
15:30:36 <tswett> Right.
15:30:37 <itidus21> i don't know math well enough so ill just stick with super first
15:31:00 <tswett> If you wanted that, I guess you could say something like T^{2_3}.
15:31:06 -!- azaq23 has joined.
15:31:14 -!- Nisstyre has joined.
15:31:53 <itidus21> ok .. good enugh. thanks
15:32:56 <itidus21> that allows me to cut and paste something like "The limit of a sequence (x_n) is, intuitively, the unique number or point L (if it exists) such that the terms of the sequence become arbitrarily close to L for "large" values of n."
15:33:27 <tswett> Aye.
15:46:53 -!- primo_ has joined.
15:47:27 -!- Nisstyre has quit (Ping timeout: 240 seconds).
15:49:07 -!- primo__ has quit (Ping timeout: 240 seconds).
15:49:56 -!- Taneb has joined.
15:50:03 -!- Ngevd has quit (Read error: Connection reset by peer).
15:52:04 <zzo38> Searching "gopher" on Wikimedia Commons results in many things, including gopher tortoise, gopher snake, and screenshots of Firefox and GopherVR. Nothing seem proper for use as a 32x32 icon, though.
15:53:31 <zzo38> There is also "gopher wood" mentioned in the Bible although its meaning is unclear.
15:53:31 <Sgeo> GopherVR?
15:54:25 <zzo38> GopherVR is a gopher client with 3D view.
15:54:30 -!- Taneb has changed nick to Ngevd.
15:54:54 <Ngevd> Anyone know what a Haskell [::] is
15:54:56 <Ngevd> ?
15:55:14 <tswett> [::] doesn't look like valid Haskell. Maybe it's some extension.
15:55:20 <tswett> Like Template Haskell or something.
15:55:27 <Ngevd> It's got a Monad instance
15:55:41 <tswett> As in "instance Monad [::] where"?
15:55:44 <zzo38> I don't think [::] is a valid Template Haskell code either
15:56:42 <Ngevd> It's listed in the Haskell documentation for Control.Monad as having an instance for Functor and Monad
15:57:05 <Ngevd> But not MonadPlus or Applicative
15:58:00 <tswett> Do you have a URL or something for this?
15:58:13 <Ngevd> http://www.haskell.org/ghc/docs/7.0-latest/html/libraries/base-4.3.1.0/Control-Monad.html
15:58:22 <zzo38> But all monads are supposed to be applicative (at least in cartesian closed categories, I think; or maybe not)
15:58:32 <Ngevd> They're supposed to be.
15:58:36 <Ngevd> Doesn't mean they are.
15:58:41 <Ngevd> It's not required (yet)
15:58:54 -!- primo_ has quit (Ping timeout: 252 seconds).
15:59:02 <zzo38> :: is also a reserved word, it cannot be the name of anything
15:59:20 <tswett> Maybe it's one of those type system extensions.
15:59:58 -!- primo_ has joined.
16:02:40 -!- Nisstyre has joined.
16:02:42 <zzo38> Does all monads being applicative have anything to do with cartesian closed categories?
16:02:57 <Ngevd> I have no idea
16:07:51 -!- primo_ has quit (Read error: Connection reset by peer).
16:08:18 -!- primo_ has joined.
16:10:32 <ais523> zzo38: it wouldn't surprise me
16:11:02 <ais523> if you're not in a cartesian closed category, you have to worry about the difference between a monad and a strong monad
16:11:12 <ais523> I can't remember where it goes from there, but I suspect it makes a difference
16:13:13 -!- CHeReP has quit (Quit: This computer has gone to sleep).
16:13:35 -!- Phantom__Hoover has joined.
16:15:27 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds).
16:15:50 <Sgeo> HList erases labels at runtime
16:16:04 <Sgeo> Yet I have ... data associated with each label
16:16:20 <Sgeo> I think the compile-time programming involved is going to break my brain
16:21:00 -!- primo has joined.
16:24:06 -!- primo_ has quit (Ping timeout: 260 seconds).
16:26:18 -!- primo_ has joined.
16:29:08 -!- primo has quit (Ping timeout: 255 seconds).
16:29:58 <kallisti> I wonder if perl has anything like an inverse strftime.
16:30:04 <kallisti> that isn't "just use regex"
16:30:48 <ais523> kallisti: it does, in CPAN somewhere
16:30:51 <ais523> I know because I've used it
16:31:14 <kallisti> ais523: turns out it was a dumb idea to store the time as its strftime string
16:31:18 <ais523> use DateTime::Format::Strptime qw/strptime/;
16:31:19 <kallisti> I should have just stored it as its time value
16:31:22 <kallisti> then stringified later
16:31:23 <ais523> it's the reverse of strftime
16:31:24 <kallisti> ah cool
16:31:41 <ais523> although you'll have to install it from CPAN
16:31:47 <kallisti> no problem
16:32:07 -!- primo_ has quit (Ping timeout: 240 seconds).
16:32:19 * Sgeo hits everyone with an HList
16:32:24 -!- primo_ has joined.
16:32:44 * ais523 notices that the HList is pure and refuses to allow it to do anything other than make a slightly wounded copy of me
16:32:46 <kallisti> Sgeo: I think you probably don't want HList
16:33:34 <kallisti> ais523: hmm there's also a Posix::strptime
16:33:38 <kallisti> *POSIX
16:33:40 <Sgeo> kallisti, it, or something similar, is the best way I can think of to stay somewhat close to just knowing the structure of my wrapper and being able to use the C docs for details, while being type-safe
16:33:45 <ais523> kallisti: that probably calls out to the libc version
16:33:49 <ais523> which probably isn't what you want
16:34:12 <kallisti> what's the difference?
16:34:20 -!- primo_ has quit (Read error: Connection reset by peer).
16:34:42 -!- primo_ has joined.
16:34:54 <kallisti> it certainly looks like what I want.
16:35:50 <kallisti> hmmm
16:36:07 <kallisti> I guess I could store my time values as a DateTime instead.
16:36:17 <kallisti> as I'll basically end up constructing one later.
16:36:43 -!- primo_ has quit (Read error: Connection reset by peer).
16:36:58 -!- primo_ has joined.
16:38:23 <ais523> kallisti: the difference is that POSIX::strptime is the reverse of C's strftime, not Perl's strftime
16:38:28 <ais523> I imagine Perl's probably has more features
16:38:42 <ais523> and fits better with Perl for other reasons
16:39:14 -!- primo_ has quit (Read error: Connection reset by peer).
16:39:30 <kallisti> ais523: it looks like it's pretty much the inverse of perls
16:39:32 -!- primo_ has joined.
16:39:39 <ais523> hmm, OK
16:39:47 <kallisti> but I think I actually will use this one.
16:40:16 <kallisti> since I need to use all of this DateTime stuff anyways to calculate date differences
16:42:52 * Sgeo just had a terrible yet fun idea about something to do with his wrapper
16:43:06 <Sgeo> Not even sure how to do it or if it's possible.
16:46:47 <kallisti> ais523: the only thing that really makes these functions more perly is that it uses a list of time units instead of the time_t struct.
16:47:06 <kallisti> it may have some more date specifiers that I'm unaware of.
16:47:21 <ais523> probably it handles timezones correctly
16:47:28 <ais523> time_t can't record a timezone
16:47:55 -!- primo__ has joined.
16:47:56 <kallisti> ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);
16:48:00 <kallisti> nope
16:48:04 <kallisti> just localtime and gmtime
16:48:22 <ais523> ah, OK
16:48:40 <kallisti> strftime(fmt, sec, min, hour, mday, mon, year, wday = -1, yday = -1, isdst = -1)
16:48:43 <kallisti> same thing
16:49:01 <kallisti> DateTime handles timezones correctly though
16:49:38 -!- primo_ has quit (Ping timeout: 248 seconds).
16:50:21 <kallisti> ah actually I didn't see that there's a DateTime->from_epoch
16:50:29 <kallisti> so I'll just store the time values.
16:54:13 <ais523> help someone just emailed me asking me to explain the joke on http://esolangs.org/wiki/Java
16:54:50 <ais523> any advice on how I should reply?
16:56:21 <kallisti> "you best be trollin'"
16:59:30 <ais523> that's a bit out of character for me
17:02:08 <Ngevd> "I assume you are trolling."
17:02:48 <ais523> Ngevd: the thing is, I don't think he is
17:02:50 <ais523> or she
17:02:53 <ais523> based on past interactions
17:03:52 <kallisti> !perl my @x = 1..5; print "@x"
17:03:55 <EgoBot> 1 2 3 4 5
17:06:24 <Ngevd> Hang on...
17:06:31 <itidus21> just tell them that java's popularity, influence on (according to wiki) Ada 2005, BeanShell, C#, Clojure, D, ECMAScript, Groovy, J#, JavaScript, PHP, Python, Scala, Vala.. and cross-platform compatability all achieved in a short span of years
17:06:38 <itidus21> make calling it esoteric exceedingly ironic
17:06:52 <Ngevd> The only way for the cat to be both alive and dead is that if the cat is outside the universe
17:06:53 <itidus21> no wait..
17:07:08 <itidus21> mention the fact that java support is built into many operating systems
17:07:15 <kallisti> !perl my @x = map {$_ if $_ < 3} 1..5; print "@x"
17:07:15 <EgoBot> 1 2
17:07:21 <kallisti> !perl my @x = map {$_ if $_ < 3} 1..5; print "@x" . "stuff"
17:07:21 <itidus21> (i am not sure on this)
17:07:21 <EgoBot> 1 2 stuff
17:07:25 <kallisti> nooooooo
17:07:32 <kallisti> !perl my @x = map {$_ if $_ < 3;()} 1..5; print "@x" . "stuff"
17:07:32 <EgoBot> stuff
17:07:36 <kallisti> NOOOOOO
17:07:46 <Sgeo> Java support is built into operating systems these days?
17:07:52 <kallisti> !perl my @x = map {return $_ if $_ < 3;()} 1..5; print "@x" . "stuff"
17:07:53 <EgoBot> Can't return outside a subroutine at /tmp/input.2153 line 1.
17:07:53 <itidus21> i don't know
17:07:55 <itidus21> is it?
17:08:06 <itidus21> i mean........
17:08:12 <Sgeo> I didn't think so, but you said it was
17:08:13 <kallisti> !perl my @x = map {$_ < 3? $_ : ()} 1..5; print "@x" . "stuff"
17:08:13 <EgoBot> 1 2stuff
17:08:14 <itidus21> obviously i think i can assume solaris has it
17:08:32 <itidus21> but
17:08:38 * kallisti is kind of annoyed that perl5 does not have perl6s fun context stuff for || and friends
17:08:38 <itidus21> its more about windows that im concerned
17:09:18 <itidus21> well some phones come with java
17:09:27 <itidus21> but that isn't the same thing i know
17:09:41 <itidus21> very similar though :P
17:10:19 <itidus21> "Google and Android, Inc. have chosen to use Java as a key pillar in the creation of the Android operating system"
17:10:26 <kallisti> Android pretty much has built-in support -- yes
17:11:22 <itidus21> "There are 930 million Java Runtime Environment downloads each year and 3 billion mobile phones run Java."
17:11:36 <itidus21> its not esoteric :D
17:12:34 <itidus21> i think the essence of the joke though is the idea that it can seem as if whoever made it was pulling a practical joke on the world
17:13:57 <itidus21> also, having many syntax elements almost indistinguishable from c++ doesn't help towards being esoteric
17:14:02 <Sgeo> I thought the joke was that it's such an annoying language to use that it deserves to be shelved away as esoteric
17:15:18 <itidus21> such as { a = a + b; a += b; a++; }
17:16:07 <itidus21> the first one is stolen from algebra i admit
17:17:04 <itidus21> blah..
17:17:38 -!- Klisz has joined.
17:18:20 <itidus21> i'm not ready for etymology of syntax
17:44:19 <kallisti> return unless my $count = @{$state->{$nick} // []}
17:44:43 <kallisti> I still think perl resembles something like this: "hello my name is weoij!@;;!@$!@%%@!221;"
17:45:40 <Ngevd> :t (|>)
17:45:41 <lambdabot> Not in scope: `|>'
17:46:04 <ais523> I'm still amused that the actual reason that Perl doesn't require you to quote string literals in all contexts is to make it easier to write poetry that's also valid Perl
17:50:01 <Sgeo> o.O
17:51:55 * tswett suddenly realizes that his noit o' mnain gelb diode doesn't *actually* allow current to pass in only one direction.
17:52:05 <tswett> It doesn't admit electrons, nor holes, in either direction.
17:54:27 <tswett> The only thing you can do with it is feed in electrons one way and holes the other way.
17:54:29 <kallisti> figuring out how to arrange conditionals used to be difficult
17:54:34 <kallisti> then I learned DeMorgan's law.
17:54:38 <kallisti> fuck arrows
17:54:48 <kallisti> *laws
17:54:53 <kallisti> (??????)
17:55:18 <kallisti> I guess there are two of them, yes.
18:00:28 <zzo38> I think constellations really have two uses, one use is to identify stars you are viewing, and another use is for naming stars after the constellation they belong to.
18:00:50 -!- Phantom__Hoover has quit (Quit: Leaving).
18:01:01 -!- Phantom__Hoover has joined.
18:01:12 <zzo38> (The Sun doesn't count because it is too close to the Earth.)
18:01:33 <tswett> Do we say that the Sun moves between constellations?
18:02:57 <zzo38> tswett: Well, due to its movement (relative to the Earth), it will pass the thirteen constellations of the ecliptic.
18:03:32 * tswett nods.
18:04:15 <zzo38> I like that IAU has files to specify constellation boundaries for each one
18:05:16 <tswett> Where does Ophiuchus fall, anyway... between Vriska and Gamzee, it looks like.
18:05:50 <tswett> No, silly me. Equius, not Gamzee.
18:07:10 <Phantom__Hoover> what have i done
18:07:16 * Phantom__Hoover seppuku
18:07:31 <tswett> Phantom__Hoover: now you've got tiger! }:D
18:23:53 <tswett> There. Now noit o' mnain gelb is a thing.
18:24:05 <tswett> Like noit o' mnain worb, but you can make transistors.
18:24:21 <tswett> And a transistor's gain is probably less than 1.
18:25:26 <ais523> we really need transistors with gain greater than 1
18:25:30 <ais523> or less than -1, would work just as well
18:25:33 <ais523> probably better, actually
18:28:26 <tswett> I think the gain of a transistor could be made arbitrarily high by making electrons and holes refuse to cancel each other out most of the time.
18:38:07 <itidus21> so someone on wiki has said
18:38:33 <itidus21> "From a certain point of view, typed lambda calculi can be seen as refinements of the untyped lambda calculus but from another point of view, they can also be considered the more fundamental theory and untyped lambda calculus a special case with only one type." .. i imagine such situations lead to definitional tensions.
18:38:38 <ais523> tswett: but in noit, you don't have p-type and n-type materials
18:39:17 <itidus21> when the truth is dependant on your point of view, tension has to arise
18:43:47 <ais523> so, what is blegnian motion, anyway?
18:46:07 <ais523> ah, you added n-type and p-type materials
18:46:52 <zzo38> It is like Belgian motion, but different.
18:46:58 <ais523> tswett: if you're trying to find a large-gain transistor, I recommend experimenting with lightly doped n-type materials together with heavily-doped p-type materials, or vice versa
18:47:26 <ais523> that's how bipolar junction transistors are made in practice, and noit o' mnain gelb doesn't have a field effect to make a field effect transistor with
18:51:34 -!- primo__ has quit (Quit: Verlassend).
18:59:56 -!- DCliche has joined.
19:01:03 -!- Ngevd has quit (Ping timeout: 252 seconds).
19:03:21 -!- Klisz has quit (Ping timeout: 260 seconds).
19:09:51 <Sgeo> kallisti, Phantom__Hoover update
19:12:30 <kallisti> !perl defined "stuff" =~ /false/
19:12:31 <EgoBot> No output.
19:12:34 <kallisti> !perl defined ("stuff" =~ /false/)
19:12:35 <EgoBot> No output.
19:16:59 <ais523> kallisti: if you want output, you'll have to print it
19:21:29 <kallisti> !perl print defined ("stuff" =~ /false/)
19:21:30 <EgoBot> 1
19:22:57 -!- Ngevd has joined.
19:25:10 <Ngevd> Hello
19:32:21 <Sgeo> Ngevd, arupdoot
19:32:43 <Ngevd> Seen it
19:32:59 <quintopia> `run hatesgeo /var/irclogs/_esoteric/2012-01-??-raw.txt
19:33:11 <HackEgo> Jafet 2668;Ngevd 2629;ais523 1497;Phantom_Hoover 1474;Klisz 1427;elliott 1407;pikhq 1399;zzo38 1134;oerjan 1048;cheater 939;Patashu 912;Zuu 912;nooga 695;pikhq_ 668;Vorpal 667;atrapado 648;roper 646;azaq23 637;Nisstyre 618;MDude 603;augur 560;derdon 536;sebbu2 476;DCliche 472;NihilistDandy 458;monqy 457;boily 385;iamcal 383;itidus21 369;Frooxius 369;sebbu 353;saberman_1 346;cheater_ 344;GreaseMonkey 326;Sgeo 321;myndzi
19:33:21 <augur> fizzie!
19:33:33 <ais523> what does hatesgeo do?
19:33:41 <Sgeo> ais523, lists joins/parts I think
19:33:43 <ais523> `cat bin/hatesgeo
19:33:46 <HackEgo> ​#!/bin/sh \ perl -n -e '/:(.*?)!.*JOIN/; $j{$1}++; END {print "$_ $j{$_};" for sort {$j{$b} <=> $j{$a}} keys %j}' $@
19:33:47 <quintopia> counts them
19:33:53 -!- DCliche has changed nick to Klisz.
19:33:59 <ais523> just counts joins, it seems
19:34:02 <ais523> so what's up with the name?
19:34:03 <quintopia> joins only yeah
19:34:03 <Frooxius> WHATDIDIDO? Oo Sorry, it startled me a bit, because it highlighted me x3
19:34:07 <Ngevd> Oh dear, I'm second
19:34:17 <Sgeo> `welcome Frooxius
19:34:20 <HackEgo> Frooxius: 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
19:34:35 <Sgeo> How many idlers do we have, anyway?
19:34:37 <quintopia> i am not even listed. that makes it a good month so far.
19:34:59 <Frooxius> Hellooo Oo Though I've been here for a short while already ^^'
19:34:59 <Sgeo> There definitely are people in here who I would not recognize if they talked
19:35:25 <Sgeo> Including you >.>
19:35:27 <Sgeo> No offense
19:35:49 <quintopia> i guess this place is getting SO POPULAR
19:36:00 <Frooxius> I don't talk here much really, sowiii
19:37:07 <quintopia> thats good
19:37:30 <ais523> I'd recognise Frooxius
19:37:31 <quintopia> the people who do talk a lot get boring
19:37:42 <quintopia> just talk a little bit
19:37:45 <quintopia> keep things fresh
19:39:11 <kallisti> my IRC bot is now infinitely better than lambdabot.
19:39:21 <kallisti> aside from the lack of Haskell-related features.
19:39:49 <kallisti> but, since its messaging system actually checks if the nick is registered, it's somewhat secure.
19:39:50 <Ngevd> fungot, comment?
19:39:50 <fungot> Ngevd: i'm jeff thomas, from visual concepts. i made this bear. he's got the plague.
19:40:08 -!- Phantom__Hoover has quit (Remote host closed the connection).
19:40:11 <Ngevd> fungot thinks your bot has the plague.
19:40:12 <fungot> Ngevd: it has been my life's dream to construct a lego replica of my dead wife. it was like some some fucked up escher painting, " the perfect eternal jackass." it's like a copyright infringement kit.
19:40:26 <Ngevd> ^style
19:40:26 <fungot> Available: agora alice c64 ct darwin discworld europarl ff7 fisher fungot homestuck ic irc iwcs jargon lovecraft nethack pa* qwantz sms speeches ss wp youtube
19:40:43 <Ngevd> Fungot has dreams. Your bot is an eternal jackass
19:40:46 <Ngevd> ^style pa
19:40:46 <fungot> Selected style: pa (around 1200 transcribed Penny Arcade comics)
19:41:04 <itidus21> thats a really weird post
19:41:49 <itidus21> It has been my life's dream to construct a lego replica of my dead wife. It was like some some fucked up Escher painting, " the perfect eternal jackass."
19:42:27 <itidus21> what are you guys doing to fungot
19:42:27 <fungot> itidus21: help us! oh god! it's gotten ahold of me! verily did i download the detonator tnt drivers, and now compatibility problems! what's next, sony a little hand that flips you off?
19:45:25 <Ngevd> ^style homestuck
19:45:25 <fungot> Selected style: homestuck (Homestuck pages 1901-4673)
19:45:32 <Ngevd> fungot, feeling better?
19:45:32 <fungot> Ngevd: you you might be here too. but for trolls, the challenge is particularly tortuous for young trolls, who must reconcile the wide 0rbit 0f 0ur s00n
19:46:53 * sebbu slaps HackEgo around a bit with a very large trout
19:47:12 <Ngevd> kallisti, is your bot online?
19:48:43 <kallisti> Ngevd: it's not on freenode.
19:48:59 <kallisti> at the moment it's basically not very useful.
19:49:11 <Ngevd> Better than my bot
19:49:19 <Ngevd> Pietbot just joins and lurks for a bit
19:49:23 <Ngevd> Then I turn it off
19:49:24 <kallisti> good bot.
19:49:57 <quintopia> that is the best kind of bot
19:55:34 <Ngevd> Just made a Fractran interpreter
19:56:29 <quintopia> fractran is p cool
19:56:55 <Sgeo> kmc, you awake?
19:58:47 -!- Phantom_Hoover has joined.
19:59:06 <Sgeo> Phantom update
20:10:55 -!- MSleep has changed nick to MDude.
20:12:03 <Ngevd> :t flip (ap . ((.) flip . ((.) ((.) (.)) . (.)))) id
20:12:04 <lambdabot> forall a b (f :: * -> *). (Functor f) => (a -> a -> b) -> f a -> f (f b)
20:13:15 <Ngevd> :t flip (ap . ((.) flip . ((.) ((.) (.)) . (.)))) id :: (b -> b -> c) -> (a -> b) -> a -> a -> c
20:13:16 <lambdabot> forall b c a. (b -> b -> c) -> (a -> b) -> a -> a -> c
20:13:20 <Ngevd> :t on
20:13:22 <lambdabot> forall b c a. (b -> b -> c) -> (a -> b) -> a -> a -> c
20:13:30 <Ngevd> @src on
20:13:30 <lambdabot> (*) `on` f = \x y -> f x * f y
20:14:07 <Ngevd> They clearly missed a big idea with my version
20:18:03 <Sgeo> Ngevd, Phantom_Hoover kallisti upasd
20:18:27 <Ngevd> Good name
20:20:27 <Ngevd> "You are however QUITE GREAT at the esoteric sciences", "Your coding cred is totes ridic"
20:20:33 <Ngevd> She's one of us!
20:20:59 <ais523> hmm, I'm a little concerned that elliott hasn't come back after yesterday
20:21:06 <Ngevd> What did he do yesterday?
20:21:10 <kallisti> ais523: I wouldn't worry about it.
20:21:27 <ais523> Ngevd: spamming repeatedly, then attempting to evade a +q on him
20:21:47 <kallisti> Ngevd: check out the logs. it's wonderful.
20:22:04 <kallisti> (I mean that sarcastically)
20:22:11 <Sgeo> My name prediction was wrong
20:23:15 -!- monqy has joined.
20:24:04 -!- Vorpal has quit (Ping timeout: 276 seconds).
20:24:39 -!- pikhq_ has joined.
20:24:49 -!- pikhq has quit (Ping timeout: 252 seconds).
20:28:04 <Ngevd> I reckon Di-Stri is called Dick
20:30:55 <Sgeo> A lot of people have been reckoning that
20:31:03 <Ngevd> Or maybe Dirk
20:31:28 <Ngevd> Dill?
20:32:00 <quintopia> dick strickland
20:32:24 <Sgeo> Ngevd, what do you think about the unusual properties of the session?
20:33:54 <Ngevd> Jack Noir seems even more ambitious?
20:34:09 <Sgeo> Nope
20:34:11 <Sgeo> Something else
20:34:20 <Sgeo> It's in the End of Act 6 Intermission 1
20:34:26 <Ngevd> Oh, that
20:34:27 <Sgeo> Hard to notice
20:35:30 <Sgeo> Are we certain we have the same that in mind?
20:35:44 <Ngevd> No
20:35:47 <Ngevd> Msg me
20:36:32 -!- oerjan has joined.
20:42:25 <oerjan> <ais523> sorry, mischan <-- is that recursive or not?
20:42:37 <oerjan> because i cannot see what it referenced
20:42:58 <ais523> I thought it'd be amusing to send it to a channel with no referent and see what people concluded
20:43:18 <oerjan> yay!
20:44:39 <oerjan> wait, if we treat it as recursive, then it's a mischan if and only if it isn't...
20:45:39 <pikhq_> You know you have a problem when you consider "watched several episodes of anime" an accomplishment.
20:45:42 <ais523> there's also the problem of establishing, if it's a mischan, what the /correct/ channel is
20:45:56 <ais523> clearly #esoteric is probably the most appropriate place for recursive mischans…
20:46:23 <oerjan> pikhq_: what if you are regretting wasting your time by not having watched much anime?
20:46:25 <pikhq_> ais523: :)
20:46:55 <pikhq_> oerjan: I was regretting sinking time in complete and utter time-wastes.
20:47:10 <pikhq_> At least watching things in a foreign language I'm learning aren't *complete* wastes of time.
20:47:27 <pikhq_> Yeaaaah, breaks are really effing bad for me.
20:47:29 <ais523> pikhq_: what if you're learning the foreign language just so you can watch things in it?
20:47:49 <ais523> and break from what?
20:47:56 <pikhq_> School.
20:48:16 <pikhq_> ais523: Still more productive than "why the fuck have I been on this site for several hours". :P
20:49:49 <pikhq_> Reddit is especially bad for me.
20:50:41 -!- zzo38 has quit (Quit: Of course, Baba, that's what constitutes a computer!!! How silly of me.).
20:51:48 <Jafet> I get the feeling that I've won something, though I'm not sure what.
20:52:23 <Ngevd> Jafet, check your lotto numbers? And the spam folder of you email?
20:52:27 <itidus21> so heres something i was just thinking... n = n | +(n) | -(n); n = 0; +(n) = 1; -(n) = -1; +(+(n)) = 2;
20:52:34 <oerjan> <itidus21> zzo38: my idea has died. ill have a look at your chess variant <-- hey i'm sure reinventing zzo38's ideas is a step up
20:52:43 <itidus21> i am not sure to what degree it is dumb
20:53:41 <oerjan> itidus21: needs more clarification
20:53:57 <itidus21> humm
20:54:14 <itidus21> i guess it wasnt as clear as it seemed in my head
20:54:39 <itidus21> n = n | increment(n) | decrement(n)
20:54:52 <itidus21> i am not good at defining these things
20:55:01 <oerjan> oh right
20:55:07 <Ngevd> Is increment(decrement(n)) legal?
20:55:10 <oerjan> so the n's after n = 0 are really 0's
20:55:13 <itidus21> yup
20:55:21 <itidus21> hmm
20:55:29 <itidus21> i mean, yup @ ngevd
20:55:41 * kallisti just got into a debate over whether typing /ns in an IRC client is expected behavior over all clients/servers
20:55:53 <itidus21> well.. uhhh those latter parts are how it can be mapped to numbers
20:56:08 <kallisti> or rather, typing /ns and getting nickserv
20:56:31 <itidus21> it doesnt mean much really..
20:56:34 <oerjan> itidus21: it resembles that data Nat = Zero | Succ Nat thing in haskell, but extended to integers
20:56:37 <ais523> kallisti: there are definitely client/server combos for which it doesn't work
20:56:51 <kallisti> ais523: yes irssi being one.
20:56:51 <ais523> this client, if given /ns, sends an NS command to the server
20:57:01 <Jafet> You expect any behaviour over all clients or servers?
20:57:02 <ais523> which Freenode interprets as PRIVMSG NickServ
20:57:07 <kallisti> ais523: I was told thatirssi "improperly handles" / commands
20:57:09 <kallisti> I said it does not. :P
20:57:10 <ais523> but not all servers do
20:57:21 <ais523> kallisti: I think you're right here
20:57:33 <itidus21> oerjan: what i had in mind was a unary string of 1's .. and i thought.. ok what can i do to a string of 1's.. i can either add a 1 or take a 1 away...
20:57:34 <kallisti> NS is nonstandard anyway isn't it?
20:57:44 <itidus21> but what happens if i reach zero 1's
20:57:44 <kallisti> the "expected behavior" is that if you privmsg a service you get a reply.
20:57:57 <oerjan> my irssi has alias ns msg nickserv
20:58:08 <kallisti> other problems with sending raw commands on / : you have to wait for some kind of reply
20:58:12 <kallisti> oerjan: also /quote
20:58:24 <itidus21> but if i don't actually specify how many 1's there are, then i can increment or decrement freely
20:59:05 <kallisti> so what happens in mIRC if you mistype a / command while you've just recently disconnect from a server? Does it wait for a reply until a timeout?
20:59:14 <kallisti> also it means your / commands are server-dependent.
20:59:20 <kallisti> which is gross.
21:01:53 <oerjan> itidus21: that's what's called a group action... any group (such as the integers) can be considered to act on itself, so the result of letting m act on n is m+n.
21:02:47 <itidus21> oerjan: it's abit ridiculous, but really it's intended for unary lambda calculus programming :D
21:02:49 <oerjan> the rest is just changing representation
21:03:47 <oerjan> mhm
21:03:49 <itidus21> the problem is it's even less efficient than the actual 1's
21:04:42 <Ngevd> > let getPowersOf n xs = filter (\x -> ((==) `on` ($ (logBase `on` fromIntegral) n x)) ceiling floor) xs in getPowersOf 2 [1..1000]
21:04:43 <lambdabot> [1,2,4,8,16,32,64,128,256,512]
21:05:13 <Ngevd> There's almost certainly an easier way of doing the getPowersOf function
21:05:21 <oerjan> you'd think
21:05:30 <oerjan> > iterate (*2) 1
21:05:31 <lambdabot> [1,2,4,8,16,32,64,128,256,512,1024,2048,4096,8192,16384,32768,65536,131072,...
21:05:45 <Ngevd> No, I want it as a filter
21:05:52 <Ngevd> So really I want isPowerOf
21:05:52 <oerjan> huh
21:05:59 <Ngevd> Actually
21:06:04 <Ngevd> Nah
21:06:29 <itidus21> yeah.. unary lambda programming is very useless
21:06:29 <Ngevd> isPowerOf :: Integer -> Integer -> Bool
21:06:34 <itidus21> i have decided
21:06:37 <Ngevd> itidus21, WRONG
21:08:25 <oerjan> Ngevd: i fear the logBase method might break on large numbers due to bad rounding at some point
21:08:31 <Ngevd> > let getPowersOf n xs = filter (\x -> ((==) `on` ($ (logBase `on` fromIntegral) n x)) ceiling floor) xs in getPowersOf 3 [1,6..1000]
21:08:32 <lambdabot> [1,81]
21:08:33 <itidus21> i am pretty silly..
21:08:45 <kallisti> ais523: what other servers do not send raw commands like irssi.
21:08:47 <kallisti> er
21:08:48 <kallisti> clients
21:08:50 <Ngevd> oerjan, can you suggest any alternatives that work better?
21:09:01 <ais523> kallisti: I think /most/ don't
21:09:06 <ais523> some translate /ns into /msg nickserv themselves
21:09:13 <kallisti> ais523: ah, this guy is saying most do.
21:09:15 <ais523> and others pass commands they don't know through literally and let the server translate them
21:09:19 <kallisti> ais523: he must be talking about mIRC
21:09:20 <ais523> like the one I use
21:09:26 <oerjan> well you _could_ do iterated division by 2, that should give a _correct_ result, but might be slower.
21:09:27 <Deewiant> a `isPowerOf` b = a `elem` iterate (*b) 1
21:10:06 <Ngevd> > let a `isPowerOf` b = a `elem` iterate (*b) 1 in 10 `isPowerOf` 3
21:10:10 <lambdabot> mueval-core: Time limit exceeded
21:10:20 <Ngevd> Deewiant, I already thought of that
21:10:35 <Deewiant> a `isPowerOf` b = a `elem` takeWhile (<=a) (iterate (*b) 1)
21:10:48 <Ngevd> Hmm...
21:11:12 <Ngevd> > let a `isPowerOf` b = a `elem` takeWhile (<=a) (iterate (*b) 1) in 10 `isPowerOf` 3
21:11:13 <lambdabot> False
21:11:16 <Ngevd> :D
21:11:21 <Ngevd> I'll take 12!
21:11:38 <oerjan> the logBase method would probably be particularly bad for powers _other_ than 2
21:11:43 <oerjan> er
21:11:44 <kallisti> @src isPowerOf
21:11:45 <lambdabot> Source not found. You untyped fool!
21:11:47 <oerjan> bases
21:12:17 <Ngevd> I'd have thought it would be e rather that 2
21:13:16 <Deewiant> (Note: that takeWhile fails when a is negative, e.g. (-27) `isPowerOf` (-3))
21:13:47 <Ngevd> Deewiant, it's just really for personal use
21:15:36 <oerjan> Ngevd: um the point is Double is in practice base 2 based
21:15:56 -!- zzo38 has joined.
21:15:59 <oerjan> so powers of 2 have a good chance of being exactly represented
21:16:53 <Ngevd> logBase is defined in terms of log, which is base e
21:17:13 <oerjan> @src logBase
21:17:14 <lambdabot> Source not found. Are you on drugs?
21:17:24 <oerjan> @src RealFloat
21:17:25 <lambdabot> Source not found.
21:17:31 <Ngevd> @src Floating
21:17:31 <lambdabot> class (Fractional a) => Floating a where
21:17:31 <lambdabot> pi :: a
21:17:31 <lambdabot> exp, log, sqrt, sin, cos, tan :: a -> a
21:17:31 <lambdabot> asin, acos, atan, sinh, cosh, tanh, asinh, acosh, atanh :: a -> a
21:17:31 <lambdabot> (**), logBase :: a -> a -> a
21:17:59 <oerjan> Ngevd: it's a method, so it's likely to be specially treated
21:19:09 <oerjan> > map (logBase 2) [2^200 - 1 .. 2^200 + 1]
21:19:09 <lambdabot> [200.0,200.0,200.0,200.0,200.0,200.0,200.0,200.0,200.0,200.0,200.0,200.0,20...
21:19:19 <oerjan> not _overly_ promising :P
21:19:37 <Ngevd> It isn't, I'm looking at the source
21:19:49 <oerjan> the source where?
21:19:54 <Ngevd> http://www.haskell.org/ghc/docs/7.0-latest/html/libraries/base-4.3.1.0/src/GHC-Float.html#logBase
21:20:13 <Ngevd> For both Float and Double, no special-casing in logBase
21:20:28 <oerjan> ok
21:24:44 <Ngevd> a `isPowerOf` b = a == head (dropWhile (< a) (iterate (*b) 1))
21:26:38 <Ngevd> getPowersOf = filter . (flip isPowerOf)
21:28:17 <tswett> So, I guess gelb is thermodynamically inaccurate. Electron-hole pairs can spontaneously vanish everywhere, but they can only spontaneously generate in specific places.
21:34:08 -!- CHeReP has joined.
21:37:14 -!- oerjan has set topic: No topic today | http://codu.org/logs/_esoteric/.
21:43:17 -!- Gregor has set topic: No topic Tuesday! | Wait, it's not Tuesday? Damn it! | http://codu.org/logs/_esoteric/.
21:45:20 <oerjan> :k [::]
21:45:21 <lambdabot> parse error on input `::'
21:45:26 <oerjan> hmph
21:45:40 -!- jix has quit (Remote host closed the connection).
21:45:48 <Ngevd> Have I stumbled upon a mystery?
21:46:16 <oerjan> i am thinking something like one of the parallelizable list extensions
21:46:58 <monqy> that's what I was told
21:47:44 <oerjan> yes, it's parallel arrays http://www.haskell.org/haskellwiki/GHC/Data_Parallel_Haskell
21:50:51 <Ngevd> Well, mystery solved
21:51:17 <Ngevd> :k [:Int:]
21:51:18 <lambdabot> parse error on input `:'
21:51:25 * kallisti should learn prolog one of these days.
21:51:47 <oerjan> i think it's still very experimental
21:51:55 <oerjan> lambdabot won't have it
21:51:57 <Ngevd> Well, it's time for sleeps
21:52:00 -!- Ngevd has quit (Quit: Goodbye).
21:52:05 <zzo38> What would it do if you have negative types in Haskell, that work inside-out and have a set of prohibited values instead of allowed, so it prohibit value of other type, somehow?
21:52:31 <kallisti> zzo38: it would be difficult to know what operations are available to those types.
21:52:49 <zzo38> kallisti: Yes I know it is difficult
21:53:33 * kallisti has thought about having essentially a type-level logic programming language to allow things like unions, differences, intersections, etc.
21:54:22 <kallisti> prohibiting things at the value-level would mostly be a runtime check I would think.
21:54:33 -!- Jafet has quit (Quit: Leaving.).
21:54:48 <zzo38> No, I was thinking of doing something that makes it a compile error not a runtime check
21:58:22 -!- ais523 has quit (Remote host closed the connection).
21:58:48 <zzo38> But I am unsure how.
22:00:47 <kallisti> zzo38: you would need the set of values to be described by a type
22:00:48 <kallisti> I think
22:01:03 <kallisti> also
22:01:17 <kallisti> you would need to know the "smallest subset" that a value occupies.
22:01:41 <kallisti> for example, if you know a value is an integer you can't determine that it's a natural, but you can go the other direction.
22:03:24 -!- oerjan has set topic: No topic Tuesday! | Wait, it's not Tuesday? Damn it! | So, what is blegnian motion, anyway? | http://codu.org/logs/_esoteric/.
22:05:56 <zzo38> Just because it is not Tuesday, does not mean it is Wednesday!
22:06:15 <oerjan> ain't that the truth!
22:06:18 -!- zzo38 has quit (Remote host closed the connection).
22:09:47 <kallisti> `words --norwegian 25
22:09:53 <HackEgo> forbund arbeidelse seformelshopparas verkningens gasjone hausenta mengene braktstyrelsertikasse besken straktskingen opernessevnt smårste bedrapen immereningsgivelse botste ølbarnes inner biledienestenttig fløtning petalandskat spennstene bedtype kvadragsblansmotie hornattere ene
22:13:32 <oerjan> forbund, bedtype (probably) and ene are real words. fløtning _may_ be, i'm not sure. and botste _could_ mean penance tea
22:13:59 <kallisti> ..
22:14:00 <oerjan> Ølbarnes probably isn't, but it _should_ be a place name.
22:14:42 -!- _Slereah has quit (Ping timeout: 240 seconds).
22:17:05 <oerjan> there are hits for fløtning but i think they're misspellings of fløting (timber floating, mainly)
22:17:32 <oerjan> oh it's an alternative spelling.
22:22:22 -!- _Slereah has joined.
22:25:22 <itidus21> kallisti: this is the list of languages so far taken just now from the esolang wiki .. http://hpaste.org/56483 would it work better with unusual character words excluded and spaces excluded?
22:25:46 <itidus21> i heard theres 8000+ actual languages..
22:25:59 <kallisti> no need to remove non-alphanumeric characters
22:26:05 <itidus21> hmm
22:26:09 <kallisti> spaces are an issue though
22:26:16 <itidus21> ok cool
22:27:02 <oerjan> Hascalgorth, here we come!
22:27:21 <oerjan> oh wait only esolangs
22:27:33 <kallisti> not sure how to handle spaces actually.
22:27:43 <oerjan> Befuck already exists, i think
22:27:52 <itidus21> heres an updated version without spaces http://hpaste.org/56483
22:28:13 <kallisti> well removing spaces isn't really all that "accurate" either.
22:28:16 <kallisti> but it would work.
22:28:28 <itidus21> its better than dropping them out altogether :D
22:28:28 <kallisti> could just substitute all the spaces with something else.
22:28:40 <kallisti> I wonder if my code splits by non-breaking space.
22:30:25 <itidus21> i could just remove the ones with spaces
22:30:29 <kallisti> nope
22:30:40 <kallisti> !perl print "\x{C2A0}"
22:30:41 <EgoBot> Wide character in print at /tmp/input.10429 line 1. \ 슠
22:30:53 <kallisti> !perl use v5.10; print "\x{C2A0}"
22:30:54 <EgoBot> Wide character in print at /tmp/input.10474 line 1. \ 슠
22:31:12 <kallisti> !perl use v5.10; use open qw (:encoding(UTF-8) :std); print chr "\x{C2A0}"
22:31:13 <EgoBot> No output.
22:31:20 <kallisti> !perl use v5.10; use open qw (:encoding(UTF-8) :std); print ord "\x{C2A0}"
22:31:21 <EgoBot> 49824
22:31:32 <kallisti> uh.....
22:31:48 <itidus21> the problem is that spaces do actually delimit actual words
22:31:56 <kallisti> they do?
22:32:04 <kallisti> oh
22:32:05 <kallisti> yes they do
22:32:07 <kallisti> I misread
22:32:29 <itidus21> could split those ones with spaces into several lines
22:33:26 <kallisti> hm it would seem that my code does split by non-breaking space as well.
22:33:27 -!- Sgeo has quit (Quit: Leaving).
22:33:42 <itidus21> well it does work on words :P
22:33:57 -!- Sgeo has joined.
22:35:23 <kallisti> I'm not entirely sure how to write a non-breaking space in perl
22:35:44 <itidus21> so ill try this and you can look at the list and see what you think
22:35:47 <kallisti> !perl use HTML::Entities;
22:35:47 <EgoBot> Can't locate HTML/Entities.pm in @INC (@INC contains: /etc/perl /usr/local/lib/perl/5.10.1 /usr/local/share/perl/5.10.1 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.10 /usr/share/perl/5.10 /usr/local/lib/site_perl .) at /tmp/input.10614 line 1. \ BEGIN failed--compilation aborted at /tmp/input.10614 line 1.
22:35:50 <kallisti> baaah
22:36:13 <kallisti> itidus21: what are you trying.
22:36:28 <itidus21> oh i forgot.. if it delimits with spaces i don't need to replace the spaces with newlines
22:37:16 <itidus21> but i will anyway
22:38:17 <kallisti> ah \240
22:38:18 <kallisti> apparently
22:38:29 <kallisti> I'm guessing that's octal or something
22:38:58 <kallisti> > ord '\240'
22:38:59 <lambdabot> 240
22:39:02 <kallisti> hm
22:39:40 <kallisti> Haskell does not use octal, I guess.
22:40:50 <kallisti> so instead of splitting by \s
22:41:02 <kallisti> I can just split by [^\S\240]
22:41:15 <kallisti> and that will allow non-breaking space to stand in for a space.
22:41:28 <kallisti> !perl print "\240"
22:41:29 <EgoBot>
22:41:33 <kallisti> >_>
22:41:46 <kallisti> !perl use open qw(encoding(UTF-8) :std); print "\240"
22:41:47 <EgoBot> ​ 
22:41:50 <kallisti> yep
22:42:28 <itidus21> heres the list with spaces anyway http://hpaste.org/56487
22:43:32 <kallisti> one problem with the symbolically named languages is that
22:43:40 <kallisti> if the algorithm picks their starting character
22:43:45 <kallisti> it will pretty much match the entire string
22:43:49 <kallisti> because nothing else uses it.
22:43:57 <kallisti> but... oh well.
22:44:45 <itidus21> its a very small sample of actual programming languages of course
22:44:54 <kallisti> er, does hpaste have a raw link?
22:45:05 <itidus21> yup, on annotate
22:45:33 <itidus21> i could have linked directly to that but eh
22:47:07 <oerjan> kallisti: clearly you need a "fnord" character. hth.
22:48:12 <kallisti> nonsense
22:48:36 <kallisti> my existing algorithm is applicable to all possible datasets
22:48:40 <kallisti> no exceptions.
22:54:15 <kallisti> `fetch http://dl.dropbox.com/u/16495819/construct_grams.pl
22:54:19 <HackEgo> 2012-01-15 22:54:18 URL:http://dl.dropbox.com/u/16495819/construct_grams.pl [1289/1289] -> "construct_grams.pl" [1]
22:54:23 <kallisti> `fetch http://dl.dropbox.com/u/16495819/esolangs.txt
22:54:27 <HackEgo> 2012-01-15 22:54:26 URL:http://dl.dropbox.com/u/16495819/esolangs.txt [5810/5810] -> "esolangs.txt" [1]
22:54:55 <kallisti> `run chmod +x construct_grams.pl; mv construct_grams.pl share
22:54:58 <HackEgo> No output.
22:56:25 <kallisti> `run share/construct_grams.pl -m share/WordData/Esolangs -f '.' esolangs.txt
22:56:28 <HackEgo> utf8 "\xB0" does not map to Unicode at share/construct_grams.pl line 19. \ utf8 "\xB0" does not map to Unicode at share/construct_grams.pl line 19. \ utf8 "\xB0" does not map to Unicode at share/construct_grams.pl line 19. \ utf8 "\xB0" does not map to Unicode at share/construct_grams.pl line 19. \ utf8 "\xB0" does not map to Unicode at share/construct_grams.pl line 19. \ utf8 "\xB0" does not map to Unicode at
22:56:52 <kallisti> !perl print ord "\xB0"
22:56:53 <EgoBot> 176
22:57:03 <kallisti> erm
22:58:52 <kallisti> !perl use Encode; @list = Encode->encodings(); print "@list"
22:58:53 <EgoBot> ascii ascii-ctrl iso-8859-1 null utf-8-strict utf8
22:59:05 <kallisti> `run share/construct_grams.pl -e 'ascii' -m share/WordData/Esolangs -f '.' esolangs.txt
22:59:10 <HackEgo> ascii "\xE2" does not map to Unicode at share/construct_grams.pl line 19. \ ascii "\x89" does not map to Unicode at share/construct_grams.pl line 19. \ ascii "\xA0" does not map to Unicode at share/construct_grams.pl line 19. \ ascii "\xB0" does not map to Unicode at share/construct_grams.pl line 19. \ ascii "\xB0" does not map to Unicode at share/construct_grams.pl line 19. \ ascii "\xB0" does not map to Unicode at
22:59:11 -!- Phantom_Hoover has quit (Quit: Leaving).
22:59:27 <kallisti> oh right
22:59:37 <kallisti> `run file esolangs.txt
22:59:41 <HackEgo> esolangs.txt: Non-ISO extended-ASCII text
23:00:19 <kallisti> um...
23:01:44 <kallisti> I'm not entirely sure which encoding I want.
23:03:29 <kallisti> `run share/construct_grams.pl -e 'ascii-ctrl' -m share/WordData/Esolangs -f '.' esolangs.txt
23:03:33 <HackEgo> ascii-ctrl "\x30" does not map to Unicode at share/construct_grams.pl line 19. \ ascii-ctrl "\x31" does not map to Unicode at share/construct_grams.pl line 19. \ ascii-ctrl "\x5F" does not map to Unicode at share/construct_grams.pl line 19. \ ascii-ctrl "\x30" does not map to Unicode at share/construct_grams.pl line 19. \ ascii-ctrl "\x78" does not map to Unicode at share/construct_grams.pl line 19. \ ascii-ctrl "\x32"
23:04:05 <kallisti> ...why is this not utf-8
23:04:46 <itidus21> because its not
23:05:20 <itidus21> its ANSI :-s
23:05:32 <itidus21> i dunno if hpaste changes it or anything
23:05:41 <kallisti> uh
23:05:50 <kallisti> what is ANSI
23:05:54 <itidus21> i dont know
23:05:56 <itidus21> hmmm
23:06:07 <itidus21> maybe i should try and fix it
23:06:10 <Sgeo> kallisti, update
23:06:14 <kallisti> hpaste most likely changes it to utf-8...
23:06:26 <kallisti> or, well... HTML
23:06:27 <kallisti> entities
23:06:32 <kallisti> which chrome then probably
23:06:33 <kallisti> converts to utf-8
23:06:53 <Sgeo> KILL ALL PONIES
23:08:00 <kallisti> hmmm
23:08:08 <kallisti> okay so I think I'm using the wrong character for non-breaking space.
23:08:32 <itidus21> i used notepad in the first place
23:08:39 <itidus21> so the troubles may have started there
23:08:39 <kallisti> itidus21: what you used is irrelevant
23:09:26 <itidus21> ok
23:11:57 <kallisti> this should not be this difficult...
23:13:35 -!- GreaseMonkey has joined.
23:13:35 -!- GreaseMonkey has quit (Changing host).
23:13:36 -!- GreaseMonkey has joined.
23:14:42 <kallisti> `fetch http://dl.dropbox.com/u/16495819/esolangs.txt
23:14:45 <HackEgo> 2012-01-15 23:14:44 URL:http://dl.dropbox.com/u/16495819/esolangs.txt [5811/5811] -> "esolangs.txt.1" [1]
23:14:51 <kallisti> `run file esolangs.txt
23:14:55 <HackEgo> esolangs.txt: Non-ISO extended-ASCII text
23:16:56 <itidus21> life is difficult
23:17:00 <itidus21> problems are merely the proof
23:17:05 * oerjan swats itidus21 -----###
23:17:09 <oerjan> DON'T REMIND ME
23:17:31 <itidus21> life is easy :-D
23:17:37 <oerjan> yay
23:18:01 <itidus21> you can get hot food and cold drinks without wasting your leisure and academic work hours
23:18:26 <oerjan> kallisti: er note the .1 at end of downloaded filename
23:18:36 <oerjan> `run file esolangs.txt.1
23:18:39 <HackEgo> esolangs.txt.1: Non-ISO extended-ASCII text
23:18:46 <oerjan> as if that helped
23:18:51 -!- jix has joined.
23:21:06 <kallisti> oerjan: yeah it's still an issue
23:21:09 <kallisti> may be a perl problem
23:21:26 <kallisti> `run rm esolangs.txt*
23:21:30 <HackEgo> No output.
23:22:16 <itidus21> afk
23:27:10 <kmc> Sgeo, i'm awake now
23:32:56 <Sgeo> kmc, the thing about organizing each subset of attributes is that it adds stuff that the person using my wrapper needs to know beyond knowledge of the C SDK and how to translate that to the wrapper
23:33:15 <Sgeo> Is an HList record really that bad?
23:34:18 <kallisti> `fetch http://dl.dropbox.com/u/16495819/esolangs.txt
23:34:21 <HackEgo> 2012-01-15 23:34:21 URL:http://dl.dropbox.com/u/16495819/esolangs.txt [5939/5939] -> "esolangs.txt" [1]
23:34:35 <kmc> Sgeo, the thing they need to know is the definition of that record, which is in the docs for your library?
23:35:04 <Sgeo> It wouldn't be better if they just needed to know the C attributes?
23:35:17 <kallisti> `run share/construct_grams.pl -m share/WordData/Esolangs -f '.' esolangs.txt
23:35:21 <HackEgo> can't create Data/Share/WordData/Esolangs: No such file or directory at share/construct_grams.pl line 49 \ Constructing Share/WordData/Esolangs dataset from UTF-8 \ Filter: (?i-xsm:.) \ Reading esolangs.txt...
23:35:24 <kmc> Sgeo, I'm not sure
23:35:52 <kmc> Sgeo, when I've written FFI bindings I usually don't assume the user knows the corresponding C library
23:36:02 <kmc> i want to provide an idiomatic Haskell interface
23:37:09 <kmc> we've already established that the C library is terrible
23:37:12 <Sgeo> That sounds like more work... although I wonder if there is a way I can automate such things
23:37:25 <kmc> yeah it's more work to write good software
23:37:37 <kallisti> `fetch http://dl.dropbox.com/u/16495819/construct_grams.pl
23:37:40 <HackEgo> 2012-01-15 23:37:40 URL:http://dl.dropbox.com/u/16495819/construct_grams.pl [1284/1284] -> "construct_grams.pl" [1]
23:37:54 <kallisti> `run chmod +x construct_grams.pl
23:37:57 <HackEgo> No output.
23:38:02 <kmc> i mean it's ok to do a low-level binding to the C functions, and leave the "idiomatic haskell interface" part to someone else
23:38:05 <kmc> it's obviously not as good
23:38:09 <kallisti> `run ./construct_grams.pl -m share/WordData/Esolangs -f '.' esolangs.txt
23:38:13 <kmc> but in that case you wouldn't use HList either
23:38:13 <HackEgo> can't create Share/WordData/Esolangs: No such file or directory at ./construct_grams.pl line 49 \ Constructing Share/WordData/Esolangs dataset from UTF-8 \ Filter: (?i-xsm:.) \ Reading esolangs.txt...
23:38:19 <kallisti> oh
23:38:25 <kallisti> right my script is dumb
23:38:32 <kallisti> `run ./construct_grams.pl -m Esolangs -f '.' esolangs.txt
23:38:36 <HackEgo> Constructing Esolangs dataset from UTF-8 \ Filter: (?i-xsm:.) \ Reading esolangs.txt...
23:38:44 <kallisti> `ls
23:38:47 <HackEgo> Esolangs \ bin \ canary \ construct_grams.pl \ esolangs.txt \ karma \ lib \ main \ paste \ quotes \ searchlog.hi \ searchlog.hs \ searchlog.o \ share \ test.pl \ wisdom
23:38:53 <Sgeo> kmc, is there a way for me to define a structure while giving extra data to Template Haskell code that might read it?
23:38:56 <kallisti> `run mv Esolangs share/WordData
23:39:00 <HackEgo> No output.
23:39:14 <kallisti> `paste bin/words
23:39:17 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.18049
23:39:55 <kmc> Sgeo, I haven't used HList, I think it's not terrible, but it is messy and complicated
23:40:11 <kallisti> `fetch http://dl.dropbox.com/u/16495819/words.pl
23:40:14 <HackEgo> 2012-01-15 23:40:14 URL:http://dl.dropbox.com/u/16495819/words.pl [4608/4608] -> "words.pl" [1]
23:40:15 <kmc> http://hackage.haskell.org/package/records might be a better choice
23:40:27 <kmc> but really, it sounds like you're trying to make this fancier than it needs to be
23:40:32 <kallisti> `run head -n 2 words.pl
23:40:35 <HackEgo> ​#!/usr/bin/perl \ use strict; use warnings;
23:40:45 <kallisti> `run chmod +x words.pl mv words.pl bin/words
23:40:48 <HackEgo> chmod: cannot access `mv': No such file or directory
23:40:54 <kallisti> `run chmod +x words.pl; mv words.pl bin/words
23:40:57 <HackEgo> No output.
23:40:58 <kmc> i don't know
23:41:08 <kallisti> `words --esolangs 25
23:41:10 <kmc> imagine the API someone would expect, without knowing anything about the C library
23:41:12 <HackEgo> emorscript youarel sceql java2k plato trits jump q-ballmachip wtfzomfg excon 0x29c hat2.0 automouse q-bal bytebytejump epl smillii bitran ora quating thrat suble automouflabtized arrow stree
23:41:26 -!- pikhq has joined.
23:41:35 <Sgeo> kmc, that's trickier than it sounds, there are some really, really stupid bits
23:41:43 <kmc> would they expect a fancy record system that requires 12 GHC extensions
23:41:52 <kmc> or would they expect an ordinary haskell record for each event type
23:41:54 <kallisti> most of those are just esolang names....
23:42:33 <kallisti> automouflabtized is not
23:42:40 <Sgeo> In order to receive events about objects being added or deleted, I need to query all objects in the area first. Querying elsewhere will destroy my ability to retrieve updates in the original area
23:43:02 <kallisti> yeah I think 3-grams is just a bit too good at reproducing actual elements of a small dataset like this.
23:43:11 <kallisti> actually 4-grams
23:43:34 <kallisti> `words --esolangs 25
23:43:38 <HackEgo> braint epoaq smurin parnand twimp 1cnisc skul wikicyclic infche uncomb ook object barint th rube vela cupid chanique bub unis ~ unreall befal attoasm devil
23:43:57 <kallisti> I am completely unable to distinguish made-up esolang names from real esolang names
23:44:00 <kallisti> help.
23:44:15 <Sgeo> There should be an esolang named unamb
23:44:17 -!- pikhq_ has quit (Ping timeout: 252 seconds).
23:44:20 <kmc> Sgeo, :(
23:44:29 <kallisti> itidus21: ^
23:44:40 <kallisti> `ls
23:44:43 <HackEgo> bin \ canary \ construct_grams.pl \ esolangs.txt \ karma \ lib \ main \ paste \ quotes \ searchlog.hi \ searchlog.hs \ searchlog.o \ share \ test.pl \ wisdom
23:44:46 <kallisti> `ls share
23:44:49 <HackEgo> WordData \ awesome \ construct_grams.pl \ units.dat
23:44:50 <Sgeo> Previous statement not to be construed as a slur against unamb.
23:45:31 <kallisti> `run mv construct_grams.pl share; mv esolangs.txt share;
23:45:35 <HackEgo> No output.
23:45:48 <kallisti> `rm *.hs *.hi *.o *.pl
23:45:51 <HackEgo> rm: cannot remove `*.hs *.hi *.o *.pl': No such file or directory
23:45:57 <kallisti> `run rm *.hs *.hi *.o *.pl
23:46:00 <HackEgo> No output.
23:46:00 <kallisti> `ls
23:46:04 <HackEgo> bin \ canary \ karma \ lib \ main \ paste \ quotes \ share \ wisdom
23:46:48 <kallisti> unfortunately I still have to modify the script everytime I add a dataset
23:51:40 <oerjan> `run sort share/esolangs.txt | diff - share/esolangs.txt
23:51:43 <HackEgo> 1,8d0 \ < \ < (()) \ < () \ < *W \ < .Gertrude \ < .box \ < .yacuabll \ < /// \ 13d4 \ < 1L \ 14a6 \ > 1L \ 16d7 \ < 2-ill \ 19d9 \ < 2D-Reverse \ 21c11,12 \ < 2L \ --- \ > 2D-Reverse \ > 2-ill \ 23c14 \ < 3D \ --- \ > 2L \ 24a16 \ > 3D \ 29c21,24 \ < :≠ \ --- \ > *W \ > .box \ > .Gertrude \ > .yacuabll \ 30a26,32 \ > /// \ > () \ > (()) \ > [] \ > ] \ > ~ \ > :≠ \ 32a35 \ > Aargh! \ 36a40 \ > Addleq \ 39,44d42
23:51:49 <oerjan> grmbl
23:51:58 <oerjan> hm i guess
23:54:16 <oerjan> `run sort share/esolangs.txt >ess
23:54:19 <HackEgo> No output.
23:55:15 <oerjan> `run echo 'braint epoaq smurin parnand twimp 1cnisc skul wikicyclic infche uncomb ook object barint th rube vela cupid chanique bub unis ~ unreall befal attoasm devil' | xargs -1 echo | sort | diff - ess
23:55:19 <HackEgo> xargs: invalid option -- '1' \ Usage: xargs [-0prtx] [--interactive] [--null] [-d|--delimiter=delim] \ [-E eof-str] [-e[eof-str]] [--eof[=eof-str]] \ [-L max-lines] [-l[max-lines]] [--max-lines[=max-lines]] \ [-I replace-str] [-i[replace-str]] [--replace[=replace-str]] \ [-n max-args] [--max-args=max-args] \ [-s max-chars] [--max-chars=max-chars] \ [-P max-procs]
23:55:35 <oerjan> :(
23:56:04 <oerjan> `run echo 'braint epoaq smurin parnand twimp 1cnisc skul wikicyclic infche uncomb ook object barint th rube vela cupid chanique bub unis ~ unreall befal attoasm devil' | xargs -n1 echo | sort | diff - ess
23:56:08 <HackEgo> 1,24c1,694 \ < 1cnisc \ < attoasm \ < barint \ < befal \ < braint \ < bub \ < chanique \ < cupid \ < devil \ < epoaq \ < infche \ < object \ < ook \ < parnand \ < rube \ < skul \ < smurin \ < th \ < twimp \ < uncomb \ < unis \ < unreall \ < vela \ < wikicyclic \ --- \ > \ > (()) \ > () \ > *W \ > .Gertrude \ > .box \ > .yacuabll \ > /// \ > 01_ \ > 0x29A \ > 0x29C \ > 1337 \ > 1L \ > 1cnis \ > 1mpr0mp2 \ > 2-ill \ >
23:56:12 <Sgeo> kmc, is it sufficiently Haskelly to return a tuple like (IO Something, IO ()) where the first one keeps retrieving things and the second closes it?
23:56:17 <oerjan> erp
23:56:31 <Sgeo> Or could I do that better
23:57:21 <kallisti> Sgeo: slightly resembles conduit
23:57:41 <kallisti> except the Something is a bit more complex
23:57:45 <kallisti> also a function
23:57:51 <kallisti> instead of IO Something
23:57:54 <oerjan> oh hm
23:58:34 <kallisti> note that this isn't really an advocation of doing such. just an observation. :P
23:58:35 <Sgeo> Well, I'm just taking what would be an event-based API and turning it into something like polling
23:58:54 <Sgeo> Which I think is easier to write combinators to turn that back into something with events if that's really needed
23:59:32 <oerjan> this _should_ be simpler to achieve than this :(
←2012-01-14 2012-01-15 2012-01-16→ ↑2012 ↑all